Difference between revisions of "LU-LSP-b"
(→08.02.2022) |
(→10.05.22) |
||
(14 intermediate revisions by the same user not shown) | |||
Line 35: | Line 35: | ||
** Tūdaļ pēc termiņa rezultāts tiek samazināts par '''50%''' | ** Tūdaļ pēc termiņa rezultāts tiek samazināts par '''50%''' | ||
** Nedēļu pēc termiņa darbi vairs netiek pieņemti. | ** Nedēļu pēc termiņa darbi vairs netiek pieņemti. | ||
+ | |||
+ | |||
=Kalendārs= | =Kalendārs= | ||
Line 45: | Line 47: | ||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ====08.02. | + | ====08.02.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 52: | Line 54: | ||
|} | |} | ||
Unix un Linux operētājsistēmu pamatkoncepcijas. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.). | Unix un Linux operētājsistēmu pamatkoncepcijas. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.). | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''MD0''' - Programmēšanas stils |
− | * | + | * Uzdots '''[https://docs.google.com/document/d/1wmhmxU2x93yj5bha98yGwGTvUbQ5Q0ZjOTfcNQ5ndjc/edit?usp=sharing MD_Koks]''' - Dzimtas koks. |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ====08.02. | + | ====08.02.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 69: | Line 68: | ||
|} | |} | ||
Vispārīgs pārskats par programmēšanas valodu C. Datu struktūras. C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli. | Vispārīgs pārskats par programmēšanas valodu C. Datu struktūras. C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli. | ||
− | |||
'''Resursi''' | '''Resursi''' | ||
Line 77: | Line 75: | ||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ====09.02. | + | |
+ | ====09.02.22==== | ||
8:30 | 8:30 | ||
| | | | ||
Line 99: | Line 97: | ||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b13:L01 | PD_Intro]]''' |
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | + | ====15.02.22==== | |
− | ==== | + | 10:30 |
− | |||
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 113: | Line 108: | ||
|} | |} | ||
Sistēmas izsaukumi un standarta bibliotēkas funkcijas faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (''cat, tail, head, less, telnet'' u.c.). Failu ievada un izvada ātrdarbības uzlabošana, buferi., ņemot vērā sistēmas arhitektūru. | Sistēmas izsaukumi un standarta bibliotēkas funkcijas faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (''cat, tail, head, less, telnet'' u.c.). Failu ievada un izvada ātrdarbības uzlabošana, buferi., ņemot vērā sistēmas arhitektūru. | ||
− | |||
− | |||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====15.02.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_File'''</big> |
|} | |} | ||
− | + | Failu kopēšana. | |
− | |||
| | | | ||
− | + | * Uzdots '''[[LU-LSP-b13:L02 | PD_File]]''' | |
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====16.02.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Failu sistēma'''</big> |
|} | |} | ||
− | Failu | + | Faila izmēra noteikšana. Failu saites, stingrās un vājās (hard links, soft links). Failu glabāšana un pieeja operētājsistēmā. ''i-node'' jēdziens. Sistēmas izsaukums stat(). Direktoriju struktūra. Izsaukumi opendir(), readdir() un closedir(). |
− | |||
| | | | ||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====22.02.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Failu piekļuves režīmi'''</big> |
|} | |} | ||
− | + | Faila piekļuves tiesību režīmi pie open() un umask. Failu un i-node izsaukumi: chmod(), link(), unlink(), remove(), rename(), symlink(), readlink(), utime(), mkdir(), rmdir(), chdir(), getcwd(). Programma rakstīšanai log failā. Log faili. Ekskluzīva rakstīšana ar open(...O_SYNC) un fcntl() metodēm. | |
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b:MD3 | MD_Dir]]''' - Direktoriju koka apstaigāšana. |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====22.02.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_Dir'''</big> |
|} | |} | ||
− | + | Direktoriju koka apstaigāšana. | |
− | |||
| | | | ||
− | * '''Termiņš | + | * Uzdots '''[[LU-LSP-b13:L03 | PD_Dir]]''' |
− | + | * '''Termiņš''' '''[https://docs.google.com/document/d/1wmhmxU2x93yj5bha98yGwGTvUbQ5Q0ZjOTfcNQ5ndjc/edit?usp=sharing MD_Koks]''' - Dzimtas koks. | |
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====23.02.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Atmiņas arhitektūra'''</big> |
|} | |} | ||
− | + | Atmiņas arhitektūra. Virtuālā atmiņa. TEXT, DATA, HEAP un STACK segmenti. Koplietošanas atmiņa starp procesiem. Procedūru izsaukumi. Parametru nodošana caur steku. Steka satura analīze un piekļuve stekam. | |
− | |||
| | | | ||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====01.03.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 199: | Line 180: | ||
|} | |} | ||
Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. ''setjmp()'' un ''longjmp()''. | Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. ''setjmp()'' un ''longjmp()''. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b:MD4 | MD_Mem]]''' - Atmiņas rezervācijas funkciju salīdzinājums. |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====01.03.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_An'''</big> |
|} | |} | ||
− | + | Programmas analīze. | |
− | |||
| | | | ||
+ | * Uzdots '''[[LU-LSP-b13:L04 | PD_An]]''' | ||
* '''Termiņš''' '''[[LU-LSP-b:MD3 | MD_Dir]]''' - Direktoriju koka apstaigāšana. | * '''Termiņš''' '''[[LU-LSP-b:MD3 | MD_Dir]]''' - Direktoriju koka apstaigāšana. | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | + | ====02.03.22==== | |
− | ==== | + | 8:30 |
− | |||
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Dinamiskā atmiņa'''</big> |
|} | |} | ||
− | + | Dinamiskā atmiņas izdalīšana. Heap, malloc() un free(). Dienesta informācija pie atmiņas izdalīšanas un atbrīvošanas. Brīvās atmiņas saraksti. Prasības malloc() un free() veiktspējai. | |
− | |||
| | | | ||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====08.03.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 244: | Line 217: | ||
|} | |} | ||
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. | Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b:MD5 | MD_Frag]]''' - Atmiņas fragmentācijas algoritmu novērtējums ('''grupās''') |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====08.03.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_Malloc :: PD_Heap'''</big> |
|} | |} | ||
− | + | '''PD_Malloc''' | |
+ | |||
+ | Atmiņas rezervācija. | ||
+ | |||
+ | '''PD_Heap''' | ||
+ | |||
+ | Vienkāršs atmiņas alokators fiksēta izmēra objektiem. | ||
| | | | ||
+ | * Uzdots '''[[LU-LSP-b13:L06 | PD_Malloc]]''' | ||
+ | * Uzdots '''[[LU-LSP-b:L07 | PD_Heap]]''' | ||
* '''Termiņš''' '''[[LU-LSP-b:MD4 | MD_Mem]]''' - Atmiņas rezervācijas funkciju salīdzinājums. | * '''Termiņš''' '''[[LU-LSP-b:MD4 | MD_Mem]]''' - Atmiņas rezervācijas funkciju salīdzinājums. | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | + | ====09.03.22==== | |
− | ==== | + | 8:30 |
− | |||
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''KD1'''</big> |
|} | |} | ||
− | + | KD1 kontroldarbs. Programmēšanas uzdevums pie datora, izmantojot apgūto vielu. | |
| | | | ||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====15.03.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 288: | Line 262: | ||
|} | |} | ||
Linux atkļūdošanas rīki un to lietošana. | Linux atkļūdošanas rīki un to lietošana. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''MP_Game''' - Kursa projekta tēmas (spēles) izvēle |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====15.03.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 303: | Line 274: | ||
|} | |} | ||
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni (threads). Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. ''getpid()'' un ''getppid()''. ''fork()'', ''exec()'', ''wait()''. ''system()''. | Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni (threads). Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. ''getpid()'' un ''getppid()''. ''fork()'', ''exec()'', ''wait()''. ''system()''. | ||
− | |||
− | |||
| | | | ||
* '''Termiņš''' '''[[LU-LSP-b:MD5 | MD_Frag]]''' - Atmiņas fragmentācijas algoritmu novērtējums ('''grupās''') | * '''Termiņš''' '''[[LU-LSP-b:MD5 | MD_Frag]]''' - Atmiņas fragmentācijas algoritmu novērtējums ('''grupās''') | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====16.03.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>'''PD_Dbg'''</big> | + | |<big>'''PD_Dbg :: PD_KD'''</big> |
|} | |} | ||
+ | '''PD_Dbg''' | ||
+ | |||
Atkļūdošanas rīki. | Atkļūdošanas rīki. | ||
+ | |||
+ | '''PD_KD''' | ||
+ | |||
+ | Kontroldarba analīze. | ||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b13:LA | PD_Dbg]]''' (Nav obligāti jāiesniedz) |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | |||
+ | ====22.03.22==== | ||
+ | 10:30 | ||
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Pavedieni'''</big> |
|} | |} | ||
− | + | Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). | |
− | + | '''Resursi''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | ''' | ||
− | |||
− | |||
− | |||
+ | [https://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/www/pthreads.html POSIX thread (pthread) libraries] | ||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====22.03.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_Thread'''</big> |
|} | |} | ||
− | + | Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. | |
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''MP_Spec''' - Spēles noteikumu specifikācija |
+ | * Uzdots '''[[LU-LSP-b:L08 | PD_Thread]]''' | ||
* '''Termiņš''' '''MP_Game''' - Kursa projekta tēmas (spēles) izvēle | * '''Termiņš''' '''MP_Game''' - Kursa projekta tēmas (spēles) izvēle | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====23.03.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Procesa dzīves cikls :: Starpprocesu komunikācija'''</big> |
|} | |} | ||
− | + | '''Procesa dzīves cikls''' | |
+ | |||
+ | Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit(). | ||
+ | |||
+ | '''Starpprocesu komunikācija''' | ||
+ | |||
+ | Starpprocesu komunikācija. Faili. Pipes. Koplietošanas atmiņa. Komunikācija starp nesaistītiem procesiem. Sockets abstrakcija komunikācijai. | ||
| | | | ||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====29.03.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 393: | Line 356: | ||
Sockets abstrakcija komunikācijai. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. | Sockets abstrakcija komunikācijai. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. | ||
− | |||
− | |||
− | |||
− | |||
'''Servera klienta arhitektūra''' | '''Servera klienta arhitektūra''' | ||
TBD: Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. | TBD: Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''MP_Prot1''' - Spēles komunikāciju protokols, 1. versija |
* '''Termiņš''' '''MP_Spec''' - Spēles noteikumu specifikācija | * '''Termiņš''' '''MP_Spec''' - Spēles noteikumu specifikācija | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====29.03.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 420: | Line 376: | ||
''setjmp()'',''longjmp()'' un taimera signāls. | ''setjmp()'',''longjmp()'' un taimera signāls. | ||
− | |||
− | |||
− | |||
'''PD_PSpec''' | '''PD_PSpec''' | ||
Darbs pie kursa projekta. Spēles izvēle un specifikācija. | Darbs pie kursa projekta. Spēles izvēle un specifikācija. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''[[LU-LSP-b13:L05 | PD_Jmp]]''' |
− | * | + | * Uzdots '''PD_PSpec''' |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====30.03.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 444: | Line 394: | ||
|} | |} | ||
Signāli. Alarm serviss un signāls. | Signāli. Alarm serviss un signāls. | ||
− | |||
− | |||
| | | | ||
− | * | + | * Uzdots '''MP_Prot2''' - Spēles komunikāciju protokols, gala versija |
* '''Termiņš''' '''MP_Prot1''' - Spēles komunikāciju protokols, 1. versija | * '''Termiņš''' '''MP_Prot1''' - Spēles komunikāciju protokols, 1. versija | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====05.04.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Tekstuālā lietotāja saskarne.'''</big> |
|} | |} | ||
− | + | Tekstuālā lietotāja saskarne. Ncurses bibliotēka. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | '''Resursi''' | ||
+ | * [https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/ Ncurses library, installation and use] | ||
| | | | ||
− | |||
− | |||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====05.04.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''PD_Net :: PD_PProt'''</big> |
|} | |} | ||
− | + | '''PD_Net''' | |
+ | |||
+ | Starpprocesu komunikācija tīklā. | ||
− | ''' | + | '''PD_PProt''' |
− | + | Darbs pie kursa projekta. Komunikāciju protokola izstrāde. | |
| | | | ||
− | + | * Uzdots '''[[LU-LSP-b13:L10 | PD_Net]]''' | |
+ | * Uzdots '''PD_PProt''' | ||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====06.04.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 503: | Line 443: | ||
|} | |} | ||
Programmas, kas izpildās fonā un ilgtermiņā. Rezidenta programmas. Init.d. Upstart. Systemd. Sesijas identifikators. | Programmas, kas izpildās fonā un ilgtermiņā. Rezidenta programmas. Init.d. Upstart. Systemd. Sesijas identifikators. | ||
− | |||
− | |||
| | | | ||
* '''Termiņš''' '''MP_Prot2''' - Spēles komunikāciju protokols, gala versija | * '''Termiņš''' '''MP_Prot2''' - Spēles komunikāciju protokols, gala versija | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====19.04.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 520: | Line 457: | ||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====19.04.22==== |
− | + | 12:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 533: | Line 469: | ||
| | | | ||
− | * | + | * Uzdots '''PD_KP''' |
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====20.04.22==== |
− | + | 8:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
Line 547: | Line 482: | ||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | ====26.04.22==== |
− | + | 10:30 | |
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' | + | |<big>'''Konsultācija pēc vajadzības'''</big> |
|} | |} | ||
− | |||
− | |||
− | |||
| | | | ||
− | |||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | |||
+ | ====10.05.22==== | ||
+ | 10:30 | ||
| | | | ||
{| width='100%' style='background-color:#ddd;' | {| width='100%' style='background-color:#ddd;' | ||
− | |<big>''' '''</big> | + | |<big>'''Eksāmens'''</big> |
|} | |} | ||
− | Eksāmena | + | Vieta: LU DF 312.auditorija. |
+ | |||
+ | Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas). | ||
+ | Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! | ||
| | | | ||
+ | '''Pirms eksāmena''' eStudijās jāiesniedz projekta pirmkods zip failā. Tajā jābūt iekļautam arī '''readme''' failam. | ||
+ | Eksāmena vērtējuma plāns: | ||
+ | * Pirmkods, serveris 25% | ||
+ | * Pirmkods, klients 25% | ||
+ | * Demo un darbības testēšana 30% | ||
+ | * Prezentācija (bez slaidiem) 30% | ||
|- style='vertical-align: top;' | |- style='vertical-align: top;' | ||
| | | | ||
− | ==== | + | |
+ | ====02-14.05.2022==== | ||
| | | | ||
Line 585: | Line 526: | ||
|<big>'''Sesija'''</big> | |<big>'''Sesija'''</big> | ||
|} | |} | ||
− | + | Vērtējumu izlikšana | |
− | |||
− | Vērtējumu izlikšana | ||
| | | | ||
− | |||
|} | |} |
Revision as of 08:42, 20 April 2022
Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena: 29.03.24 : Rītdiena: 30.03.24 (ja ir lekcija)
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.
- Pasniedzēji:
- Krišjānis Nesenbergs
- Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
- Vērtējums = 15% praktiskie darbi, 35% mājas darbi, 20% kontroldarbs un 30% eksāmens.
- LSP kursa atsauksmes no iepriekšējiem gadiem.
Praktisko un mājas darbu iesniegšana
- Mājas darbus iesniegt e-studijās vai darbu testēšanas serverī, atkarībā no darba specifikācijas.
- Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c - mainot atbilstošo uzdevuma kodu (MD1) un faila formātu pēc nepieciešamības.
- Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
Praktisko darbu vērtēšanas kritēriji
- Praktisko darbu mērķis ir nostiprināt un parādīt izpratni par apgūto vielu, attiecīgi darbi ir jārisina patstāvīgi, tomēr jautājumu uzdošana pasniedzējam vai kolēģiem ir vēlama.
- Maksimālo vērtējumu par praktisko darbu var saņemt, ja tas iesūtīts līdz praktisko darbu lekcijas beigām (vai brīdim, kad vienojamies, ka publiski apskatīsim PD risinājumu).
- Pēc termiņa praktiskie darbi tiek pieņemti vēl tekošo nedēļu (līdz nākamās lekcijas sākumam) un tiks novērtēti, tomēr vairs ne ar maksimālo atzīmi.
- Papildus praktiskajos darbos un lekcijās var izpelnīties "plusiņus" ar dalību diskusijās, unikālu risinājumu un ideju piedāvāšanu, trāpīgu jautājumu uzdošanu, atbildēšanu uz kolēģu jautājumiem u.t.t., kas savukārt palīdzēs savākt +10% no kopējā vērtējuma "par darbu klasē".
Mājas darbu vērtēšanas kritēriji
- Mājas darbu iesniegšanas termiņa laiks ir attiecīgajā datumā līdz pusnaktij.
- Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 sekundi!):
- Tūdaļ pēc termiņa rezultāts tiek samazināts par 50%
- Nedēļu pēc termiņa darbi vairs netiek pieņemti.
Kalendārs
Datums | Tēma, saturs | Uzdevumi | |
---|---|---|---|
08.02.2210:30 |
Unix un Linux operētājsistēmu pamatkoncepcijas. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.). |
| |
08.02.2212:30 |
Vispārīgs pārskats par programmēšanas valodu C. Datu struktūras. C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli. Resursi
|
||
09.02.228:30 |
Resursi
|
| |
15.02.2210:30 |
Sistēmas izsaukumi un standarta bibliotēkas funkcijas faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (cat, tail, head, less, telnet u.c.). Failu ievada un izvada ātrdarbības uzlabošana, buferi., ņemot vērā sistēmas arhitektūru. |
||
15.02.2212:30 |
Failu kopēšana. |
| |
16.02.228:30 |
Faila izmēra noteikšana. Failu saites, stingrās un vājās (hard links, soft links). Failu glabāšana un pieeja operētājsistēmā. i-node jēdziens. Sistēmas izsaukums stat(). Direktoriju struktūra. Izsaukumi opendir(), readdir() un closedir(). |
||
22.02.2210:30 |
Faila piekļuves tiesību režīmi pie open() un umask. Failu un i-node izsaukumi: chmod(), link(), unlink(), remove(), rename(), symlink(), readlink(), utime(), mkdir(), rmdir(), chdir(), getcwd(). Programma rakstīšanai log failā. Log faili. Ekskluzīva rakstīšana ar open(...O_SYNC) un fcntl() metodēm. |
| |
22.02.2212:30 |
Direktoriju koka apstaigāšana. |
||
23.02.228:30 |
Atmiņas arhitektūra. Virtuālā atmiņa. TEXT, DATA, HEAP un STACK segmenti. Koplietošanas atmiņa starp procesiem. Procedūru izsaukumi. Parametru nodošana caur steku. Steka satura analīze un piekļuve stekam. |
||
01.03.2210:30 |
Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. setjmp() un longjmp(). |
| |
01.03.2212:30 |
Programmas analīze. |
||
02.03.228:30 |
Dinamiskā atmiņas izdalīšana. Heap, malloc() un free(). Dienesta informācija pie atmiņas izdalīšanas un atbrīvošanas. Brīvās atmiņas saraksti. Prasības malloc() un free() veiktspējai. |
||
08.03.2210:30 |
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. |
| |
08.03.2212:30 |
PD_Malloc Atmiņas rezervācija. PD_Heap Vienkāršs atmiņas alokators fiksēta izmēra objektiem. |
||
09.03.228:30 |
KD1 kontroldarbs. Programmēšanas uzdevums pie datora, izmantojot apgūto vielu. |
||
15.03.2210:30 |
Linux atkļūdošanas rīki un to lietošana. |
| |
15.03.2212:30 |
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni (threads). Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda ps. getpid() un getppid(). fork(), exec(), wait(). system(). |
| |
16.03.228:30 |
PD_Dbg Atkļūdošanas rīki. PD_KD Kontroldarba analīze. |
| |
22.03.2210:30 |
Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). Resursi |
||
22.03.2212:30 |
Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. |
| |
23.03.228:30 |
Procesa dzīves cikls Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit(). Starpprocesu komunikācija Starpprocesu komunikācija. Faili. Pipes. Koplietošanas atmiņa. Komunikācija starp nesaistītiem procesiem. Sockets abstrakcija komunikācijai. |
||
29.03.2210:30 |
Sockets Sockets abstrakcija komunikācijai. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Servera klienta arhitektūra TBD: Ieskatam servera/klienta komunikācijā PD11, bet nav jānodod. |
| |
29.03.2212:30 |
PD_Jmp setjmp(),longjmp() un taimera signāls. PD_PSpec Darbs pie kursa projekta. Spēles izvēle un specifikācija. |
| |
30.03.228:30 |
Signāli. Alarm serviss un signāls. |
| |
05.04.2210:30 |
Tekstuālā lietotāja saskarne. Ncurses bibliotēka. Resursi |
||
05.04.2212:30 |
PD_Net Starpprocesu komunikācija tīklā. PD_PProt Darbs pie kursa projekta. Komunikāciju protokola izstrāde. |
| |
06.04.228:30 |
Programmas, kas izpildās fonā un ilgtermiņā. Rezidenta programmas. Init.d. Upstart. Systemd. Sesijas identifikators. |
| |
19.04.2210:30 |
Grafiskā lietotāja saskarne. OpenGL. X-server. |
||
19.04.2212:30 |
Darbs pie kursa projekta. |
| |
20.04.228:30 |
Atbildes uz studentu jautājumiem |
||
26.04.2210:30 |
|
||
10.05.2210:30 |
Vieta: LU DF 312.auditorija. Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas). Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! |
Pirms eksāmena eStudijās jāiesniedz projekta pirmkods zip failā. Tajā jābūt iekļautam arī readme failam. Eksāmena vērtējuma plāns:
| |
02-14.05.2022 |
Vērtējumu izlikšana |
Uzdevumi
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
- MD_Koks: Ģimenes koka ģenerēšanas programma.
- MD3: Vienādo failu meklēšana direktorijas kokā.
- MD4: Atmiņas rezervācijas funkciju salīdzināšana.
- MD5: Atmiņas fragmentācijas algoritmu novērtējums.
Eksāmens izpaužas kā kursa projekta aizstāvēšana.
Resursi
Pamācoši vingrinājumi un piemēri
- Failu I/O buferi un sekas: divi raksta, redzam trīs...
- Aprēķins, cik laika vajag pārkopēt 1 TB pa baitam bez bufera.
- Paging: piemērs 4K x 4K masīva apstaigāšanai, mainot indeksus: 4K vs 16M page faults
Literatūra
- Advanced Programming in the UNIX(R) Environment, Second Edition, by W. Richard Stevens, Stephen A. Rago. Addison Wesley Professional, 2005, ISBN 0-201-43307-9. (Indiešu eksemplāram ir ISBN 81-317-0005-4)
- "Linux system programming" by Robert Love, O'Reilly Media, 2007, ISBN 0596009585
- Advanced Linux Programming by CodeSourcery LLC,
- "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
- Sublime_Text_cheat_sheet - Lieliskā Sublime teksta redaktora taustiņu kombinācijas
- To become a good programmer... - C grāmatu saraksts
Programmētāja resursi
- Noderīgas Linux komandas
- Bash by Example @ibm/developerworks
- Intro to Linux kernel
- Programming in C: A Tutorial (by Brian W. Kernighan)
- GCC and make - par gcc kompilatoru no NTU
- Gnu make dokumentācija
- Tipiskas unix direktoriju hierarhijas īss apraksts.
- Sockets:
- Programming IP Sockets on Linux (tutorial @ gnosis.cx)
- Sockets Tutorial @ Linux Howtos
- Berkeley sockets (Wikipēdija)
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
- http://lkml.org/
- The Linux Kernel Module Programming Guide
Programmēšanas analīzes rīki
- PMD - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
Linux veiktspējas analīze
- Top 20 Linux monitoring tools @cyberciti
- 20 rīki Linux veikstpējas monitoringam (IPTraf u.c.) @tecmint
- CPU analīze
- Disku I/O analīze
- IO profiling at Linux programming blog
- Tīkla analīze
- "bashtop" rīks veiktspējas analīzei
Āķīgi uzdevumi un pieredze
- C/C++ Tricky Programs
- Computers are exact, precise, and logical machines, until they aren’t.
- Advent of Code
Atziņas
- Teach yourself programming in 10 years by Peter Norvig
- Code review: Learn how NASA codes (blog), and Mars Code (ACM article)
- Things Every Hacker Once Knew
- Kāpēc CR+LF? - Par to kāpēc vēsturisku iemeslu dēļ Windows sistēmās teksta rindas beigās ir CR+LF, kamēr Unix sistēmā tikai LF