LU-LSP-b: Difference between revisions
| Line 41: | Line 41: | ||
** Nedēļu pēc termiņa darbi vairs netiek pieņemti. |
** Nedēļu pēc termiņa darbi vairs netiek pieņemti. |
||
= |
=Kalendārs= |
||
{| border=1 cellspacing=0 cellpadding=4 |
{| border=1 cellspacing=0 cellpadding=4 style = ""border-color: #ddd;"" |
||
|- |
|- |
||
! Datums |
! Datums |
||
! |
! Tēma, saturs |
||
! Uzdevumi |
! Uzdevumi |
||
|- |
|- |
||
| |
| |
||
==== |
==== 05.02.20 08:30 ==== |
||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
|||
[L00] Ievads kursā. Unix un Linux operētājsistēmu pamatkoncepcijas un vēsture. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.) |
|||
|<big>'''Ievads kursā'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/2c87i9k0vc3mthr/L00_Ievads.pdf?raw=1 Slaidi] |
|||
Unix un Linux operētājsistēmu pamatkoncepcijas un vēsture. Linux sistēmprogrammētaja rīki (shell, gcc, make, manpages u.c.) |
|||
Vispārīgs pārskats par valodu C. |
Vispārīgs pārskats par valodu C. |
||
| |
|||
[https://www.dropbox.com/s/2c87i9k0vc3mthr/L00_Ievads.pdf?dl=0 Slaidi L00] |
|||
* '''Uzdots: [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.''' |
|||
|- |
|||
| |
|||
==== 06.02.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD0] Praktiskais darbs #0: |
[PD0] Praktiskais darbs #0: |
||
* Iekārtot darba vidi (linux, teksta redaktors, kompilators) |
* Iekārtot darba vidi (linux, teksta redaktors, kompilators) |
||
* izveidot un pašiem nokompilēt "Hello world" C valodā |
* izveidot un pašiem nokompilēt ""Hello world"" C valodā |
||
* Iepazīties ar shell komandām un uzdot jautājumus par neskaidrībām: [[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]] |
* Iepazīties ar shell komandām un uzdot jautājumus par neskaidrībām: [[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]] |
||
* Lasīt [https://www.linux.com/what-is-linux Kas tas ir, Linux?] - tagad vai līdz nākamajai lekcijai |
* Lasīt [https://www.linux.com/what-is-linux Kas tas ir, Linux?] - tagad vai līdz nākamajai lekcijai |
||
* Lasīt [https://web.archive.org/web/20160417114016/http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/#first C valodas pamācību] no Drexel universitātes |
* Lasīt [https://web.archive.org/web/20160417114016/http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/#first C valodas pamācību] no Drexel universitātes. |
||
| |
| |
||
Uzdots [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos, kā arī pieteikties vēstkopai! |
|||
|- |
|- |
||
| |
| |
||
==== 06.02.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Datu struktūras un algoritmi valodā C.'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/cyebsiafqrkykcq/L01_C_data_algorithms.pdf?raw=1 Slaidi] |
|||
==== 10.09.2019.==== |
|||
| [L01] Datu struktūras un algoritmi valodā C. |
|||
C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli |
C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli |
||
| |
|||
[https://www.dropbox.com/s/cyebsiafqrkykcq/L01_C_data_algorithms.pdf?dl=0 Slaidi L01] |
|||
* '''Uzdots: [[LU-LSP-b:MD1 | MD1]] mājas darbs - dzimtas koks.''' |
|||
|- |
|||
| |
|||
==== 12.02.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
<!-- |
|||
[http://selavo.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Iepriekšējo gadu lekcijas piezīmes: apvienota ievadlekcija] |
|||
--> |
|||
[PD1] [[LU-LSP-b13:L01 | Praktiskais darbs #1]] - darbs ar tekstu. |
[PD1] [[LU-LSP-b13:L01 | Praktiskais darbs #1]] - darbs ar tekstu. |
||
| |
| |
||
'''Uzdots''' [[LU-LSP-b:MD1 | MD1]] mājas darbs - dzimtas koks. |
|||
|- |
|- |
||
| |
| |
||
==== 13.02.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Darbs ar failiem.'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/1h0o1u3tjj0ph0m/L02_files.pdf?raw=1 Slaidi] |
|||
==== 17.09.2019.==== |
|||
| [L02] Darbs ar failiem. |
|||
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. |
||
| |
|||
[https://www.dropbox.com/s/1h0o1u3tjj0ph0m/L02_files.pdf?dl=0 Slaidi L02] |
|||
|- |
|||
[http://selavo.lv/~kursi/lsp/2-faili.pdf Lekcijas piezīmes: faili] |
|||
[http://selavo.lv/~kursi/lsp/2-valoda-c.pdf Lekcijas piezīmes: valoda-c] |
|||
[http://selavo.lv/~kursi/lsp/3-algoritmi.pdf Lekcijas piezīmes: algoritmi] |
|||
--> |
|||
[PD2] [[LU-LSP-b13:L02 | Praktiskais darbs #2]] - failu kopēšana. |
|||
| |
| |
||
==== 13.02.20 16:30 ==== |
|||
<!-- |
|||
| |
|||
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze. |
|||
{| width='100%' style='background-color:#ddd;' |
|||
--> |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD2] [[LU-LSP-b13:L02 | Praktiskais darbs #2]] - failu kopēšana. |
|||
| |
|||
|- |
|- |
||
| |
| |
||
==== 19.02.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Failu sistēma'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/mjo8zcjux7ygq5b/L03_file_system.pdf?raw=1 Slaidi] |
|||
==== 24.09.2019.==== |
|||
| [L03] Failu sistēma |
|||
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(). |
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(). |
||
| |
|||
[https://www.dropbox.com/s/mjo8zcjux7ygq5b/L03_file_system.pdf?dl=0 Slaidi L03] |
|||
* '''Uzdots: [[LU-LSP-b:MD3 | MD3]] mājas darbs - direktoriju koka apstaigāšana.''' |
|||
|- |
|||
| |
|||
==== 20.02.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana. |
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana. |
||
| |
| |
||
* '''Termiņš: [[LU-LSP-b:MD1 | MD1]]''' |
|||
'''Uzdots''' [[LU-LSP-b:MD3 | MD3]] mājas darbs - direktoriju koka apstaigāšana. |
|||
|- |
|- |
||
| |
| |
||
==== 20.02.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Failu piekļuves režīmi'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?raw=1 Slaidi] |
|||
==== 01.10.2019.==== |
|||
| |
|||
[L04] 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. |
|||
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. |
|||
[https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?dl=0 Slaidi L04] |
|||
| |
|||
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze. |
|||
|- |
|||
| |
|||
[http://selavo.lv/~kursi/lsp/4-faili.pdf Lekcijas piezīmes] |
|||
==== 26.02.20 08:30 ==== |
|||
--> |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze. |
|||
| |
| |
||
<!--Mājas darba [[LU-LSP-b:MD2 | MD2]] '''nodošanas''' termiņš. --> |
|||
|- |
|- |
||
| |
| |
||
==== 27.02.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Atmiņas arhitektūra'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/si26ce9jnmrtspa/L05_memory_arch_stack.pdf?raw=1 Slaidi] |
|||
==== 08.10.2019.==== |
|||
| |
|||
[L05] 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. |
|||
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. |
|||
[https://www.dropbox.com/s/si26ce9jnmrtspa/L05_memory_arch_stack.pdf?dl=0 Slaidi L05] |
|||
| |
|||
|- |
|||
| |
|||
==== 27.02.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD_A] Praktiskajos darbos apskatīsim MD1. |
[PD_A] Praktiskajos darbos apskatīsim MD1. |
||
| |
| |
||
* '''Termiņš: [[LU-LSP-b:MD3 | MD3]]''' |
|||
|- |
|||
Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš. |
|||
| |
|||
==== 04.03.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Virtuālā atmiņa'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/b09vpj64cy60kme/L06_memory_paging_protection.pdf?raw=1 Slaidi] |
|||
Atkārtojums par virtuālo atmiņu un procesa TEXT,DATA, HEAP un STACK segmentiem. Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. ''setjmp()'' un ''longjmp()''. |
|||
| |
|||
* '''Uzdots: [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.''' |
|||
|- |
|- |
||
| |
|||
==== 05.03.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''KD1'''</big> |
|||
|} |
|||
[KD1] Vidus semestra '''kontroldarbs'''. |
|||
| |
| |
||
* '''Kontroldarbs KD1''' |
|||
|- |
|||
==== 15.10.2019.==== |
|||
| |
|||
| [L06] Atkārtojums par virtuālo atmiņu un procesa TEXT,DATA, HEAP un STACK segmentiem. Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. ''setjmp()'' un ''longjmp()''. |
|||
==== 05.03.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[https://www.dropbox.com/s/b09vpj64cy60kme/L06_memory_paging_protection.pdf?dl=0 Slaidi L06] |
|||
[PD5] [[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls. |
[PD5] [[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls. |
||
| |
| |
||
'''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums. |
|||
|- |
|- |
||
| |
| |
||
==== 11.03.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Dinamiskā atmiņa'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/zqq0jbldw0bciu4/L07_memory_dynamic_reservation.pdf?raw=1 Slaidi] |
|||
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. |
|||
==== 22.10.2019 ==== |
|||
| |
|||
[KD1] Vidus semestra '''kontroldarbs'''. |
|||
| |
| |
||
|- |
|- |
||
| |
| |
||
==== 12.03.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
==== 29.10.2019.==== |
|||
| [L07] 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. |
|||
[https://www.dropbox.com/s/zqq0jbldw0bciu4/L07_memory_dynamic_reservation.pdf?dl=0 Slaidi L07] |
|||
[PD6] [[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija. |
[PD6] [[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija. |
||
| |
| |
||
|- |
|- |
||
| |
| |
||
==== 12.03.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Atmiņas fragmentācija'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/fr3i3tys808343j/L08_memory_algorithms.pdf?raw=1 Slaidi] |
|||
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. |
|||
==== 05.11.2019.==== |
|||
| |
| |
||
* '''Termiņš: [[LU-LSP-b:MD4 | MD4]]''' |
|||
[L08] Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. |
|||
|- |
|||
| |
|||
==== 18.03.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[https://www.dropbox.com/s/fr3i3tys808343j/L08_memory_algorithms.pdf?dl=0 Slaidi L08] |
|||
[PD8] [[LU-LSP-b:L08 | Praktiskais darbs #8]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem. |
[PD8] [[LU-LSP-b:L08 | Praktiskais darbs #8]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem. |
||
| |
| |
||
Mājas darba [[LU-LSP-b:MD4 | MD4]] '''nodošanas''' termiņš. |
|||
|- |
|- |
||
| |
| |
||
==== 19.03.20 14:30 ==== |
|||
==== 12.11.2019.==== |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
|||
[L09] : Linux atkļūdošanas rīki un to lietošana. |
|||
|<big>'''Atkļūdošana'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?raw=1 Slaidi] |
|||
[https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?dl=0 Slaidi L09] |
|||
Linux atkļūdošanas rīki un to lietošana. |
|||
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam! |
|||
| |
| |
||
* '''Uzdots: [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums ('''grupās''')''' |
|||
|- |
|||
'''Uzdots''' [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums ('''grupās''') |
|||
| |
|||
==== 19.03.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
Domāt kursa projekta tēmas! |
|||
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam! |
|||
|- |
|||
| |
| |
||
* '''Domāt kursa projekta tēmas!''' |
|||
|- |
|||
==== 19.11.2019.==== |
|||
| |
|||
==== 25.03.20 08:30 ==== |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
|||
[L10] 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()''. |
|||
|<big>'''Daudz-uzdevumu vide'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?raw=1 Slaidi] |
|||
[https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?dl=0 Slaidi L10] |
|||
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()''. |
|||
[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. (Jāprot, bet nav jāiesūta) |
|||
| |
|||
+Izvēles (nav jāiesūta, vai e-pastā): [[LU-LSP-b13:L09 | Praktiskais darbs #9.1]] - steka satura analīze un piekļuve stekam. |
|||
* '''Mājas darba [[LU-LSP-b:MD5 | MD5]] grupu izveidošanas termiņš. |
|||
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!''' |
|||
|- |
|||
| |
|||
==== 26.03.20 14:30 ==== |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
|||
Mājas darba [[LU-LSP-b:MD5 | MD5]] grupu izveidošanas termiņš. |
|||
|<big>''''''</big> |
|||
|} |
|||
'''Apspriežam kursa projekta tēmas''' |
|||
[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. |
|||
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem! |
|||
| |
| |
||
* '''Apspriežam kursa projekta tēmas''' |
|||
|- |
|||
| |
| |
||
==== 26.03.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Procesa dzīves cikls'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?raw=1 Slaidi] |
|||
==== 26.11.2019 ==== |
|||
| |
|||
[L11] Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit(). |
|||
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. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem. |
|||
Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem. |
|||
[https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?dl=0 Slaidi L11] |
|||
Kursa projekta diskusija. Sekojiet kursa Slack kanālam |
Kursa projekta diskusija. Sekojiet kursa Slack kanālam! |
||
* Izvēlētā kursa projekta noteikumu izstrāde |
* Izvēlētā kursa projekta noteikumu izstrāde |
||
* Sākt darbu pie protokola formulēšanas - kādas ziņas Jūsuprāt nepieciešams sūtīt tīklā, lai programma pilnvērtīgi strādātu. |
* Sākt darbu pie protokola formulēšanas - kādas ziņas Jūsuprāt nepieciešams sūtīt tīklā, lai programma pilnvērtīgi strādātu. |
||
** Piemēram, [https://docs.google.com/document/d/1Lvo-8oxibzqM8ANdjn8lR4ueCwGLSIcpL1Xtu7InHEs/view iepriekšējā gada noteikumi] |
** Piemēram, [https://docs.google.com/document/d/1Lvo-8oxibzqM8ANdjn8lR4ueCwGLSIcpL1Xtu7InHEs/view iepriekšējā gada noteikumi] |
||
| |
| |
||
* |
* '''Termiņš: [[LU-LSP-b:MD5 | MD5]] |
||
Eksāmena projekts: |
Eksāmena projekts: |
||
* '''Spēles izvēle un noteikumi''' Darbs pie [ |
* '''Spēles izvēle un noteikumi''' Darbs pie [XX spēles noteikumu dokumenta]. |
||
* '''Sākam diskutēt par protokolu''' - nākamajā lekcijā |
* '''Sākam diskutēt par protokolu''' - nākamajā lekcijā jānonāk līdz pirmajai protokola versijai!''' |
||
|- |
|- |
||
| |
| |
||
==== 01.04.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Signāli'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?raw=1 Slaidi] |
|||
==== 03.12.2019.==== |
|||
| |
|||
[L12] Signāli. Alarm serviss un signāls. |
|||
Diskusija par komunikācijas protokolu izstrādi. |
|||
Signāli. Alarm serviss un signāls. |
|||
[https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?dl=0 Slaidi L12] |
|||
Diskusija par komunikācijas protokolu izstrādi. |
|||
| |
|||
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija. |
|||
|- |
|||
| |
|||
==== 02.04.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija. |
|||
| |
| |
||
* '''Termiņš: Kursa projekta spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā.''' |
|||
'''Termiņš''': Kursa projekts: spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā. |
|||
|- |
|- |
||
| |
| |
||
==== 02.04.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Pavedieni'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?raw=1 Slaidi] |
|||
==== 10.12.2019.==== |
|||
| |
|||
[L13] Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). |
|||
Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). |
|||
| |
|||
|- |
|||
| |
|||
==== 15.04.20 08:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?dl=0 L13 Slaidi]. |
|||
Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. |
Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. |
||
[PD_KP2] Darbs pie kursa projekta |
[PD_KP2] Darbs pie kursa projekta. |
||
| |
| |
||
'''Termiņš |
* '''Termiņš: Spēles protokola gala versija''' |
||
|- |
|- |
||
| |
| |
||
==== 16.04.20 14:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Kursa kopsavilkums'''</big> |
|||
|} |
|||
==== 17.12.2019.==== |
|||
| |
|||
Kursa kopsavilkums. |
|||
[PD_KP2] Darbs pie [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing kursa projekta]. |
|||
| |
| |
||
|- |
|- |
||
| |
| |
||
==== 16.04.20 16:30 ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD_KP2] Darbs pie kursa projekta. |
|||
==== 23.12.2019.==== |
|||
| Ziemassvētku un Jaungada brīvdienas |
|||
| |
| |
||
|
|||
|- |
|- |
||
| |
| |
||
==== xx.xx.xx xx:xx ==== |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Eksāmens'''</big> |
|||
|} |
|||
==== 14.01.2020.==== |
|||
| [EX] '''Eksāmens 14:30''' 312. telpā. |
|||
Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas). |
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! |
|||
| |
| |
||
Iesniegt '''eksāmena/projekta failus un aprakstu''' E-studijās |
* '''Iesniegt '''eksāmena/projekta failus un aprakstu''' E-studijās''' |
||
|
|||
|- |
|- |
||
|} |
|} |
||
Revision as of 22:07, 4 February 2020
Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena... (ja ir lekcija)
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.
- Pasniedzējs: Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
- Vēstkopa komunikācijai par kursa aktualitātēm, uzdevumiem, termiņiem un problēmām:
- Google grupa lu-lsp-b@googlegroups.com Lai pieteiktos, sekot http://groups.google.lv/group/lu-lsp-b un pieslēgties ar savu google kontu, vai arī sūtīt epastu pasniedzējam.
- Vērtējums = 15% praktiskie darbi, 25% mājas darbi, 10% dalība klasē, 20% KD1 un 30% KD2(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 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 30 minūtes pirms lekcijas sākuma
- Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 min!):
- Sekundi 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 | |
|---|---|---|---|
05.02.20 08:30 |
Vispārīgs pārskats par valodu C. |
| |
06.02.20 14:30 |
|
||
06.02.20 16:30 |
|
| |
12.02.20 08:30 |
|
||
13.02.20 14:30 |
|
||
13.02.20 16:30 |
|
||
19.02.20 08:30 |
|
| |
20.02.20 14:30 |
|
| |
20.02.20 16:30 |
|
||
26.02.20 08:30 |
|
||
27.02.20 14:30 |
|
||
27.02.20 16:30 |
|
| |
04.03.20 08:30 |
|
| |
05.03.20 14:30 |
|
| |
05.03.20 16:30 |
|
||
11.03.20 08:30 |
|
||
12.03.20 14:30 |
|
||
12.03.20 16:30 |
|
| |
18.03.20 08:30 |
|
||
19.03.20 14:30 |
|
| |
19.03.20 16:30 |
|
| |
25.03.20 08:30 |
|
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem! | |
26.03.20 14:30 |
|
| |
26.03.20 16:30 |
Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem. Kursa projekta diskusija. Sekojiet kursa Slack kanālam!
|
Eksāmena projekts:
| |
01.04.20 08:30 |
Diskusija par komunikācijas protokolu izstrādi. |
||
02.04.20 14:30 |
|
| |
02.04.20 16:30 |
|
||
15.04.20 08:30 |
[PD_KP2] Darbs pie kursa projekta. |
| |
16.04.20 14:30 |
|
||
16.04.20 16:30 |
|
||
xx.xx.xx xx:xx |
Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! |
|
Uzdevumi
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
- MD1: Ģimenes koka ģenerēšanas programma.
- MD2 - nav uzdots.
- 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
- makefile vai Makefile?
- 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
- Tīkla caurplūdes testi
$ yes | pv | ssh user@example.com "cat > /dev/null"
97,3MiB 0:01:36 [1,28MiB/s][ <=> ]
$ mtr -rw -c 100 <server_ip>
HOST: <myhost> Loss% Snt Last Avg Best Wrst StDev
1.|-- _gateway 0.0% 100 0.7 0.6 0.3 2.4 0.2
2.|-- <server_ip> 1.0% 100 1.0 4.3 0.9 26.6 5.7
$ iperf3 -s # startē serveri vienā galā
Server listening on 5201
$ iperf3 -c <server_ip> # startē klientu otrā galā
Connecting to host <server_ip>, port 5201
[ 5] local 192.168.1.123 port 51846 connected to <server_ip> port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.42 MBytes 11.9 Mbits/sec 0 89.1 KBytes
[ 5] 1.00-2.00 sec 1.62 MBytes 13.6 Mbits/sec 0 147 KBytes
...
[ 5] 9.00-10.00 sec 2.30 MBytes 19.3 Mbits/sec 0 595 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 14.2 MBytes 11.9 Mbits/sec 0 sender
[ 5] 0.00-10.42 sec 11.6 MBytes 9.36 Mbits/sec receiver
$ nstat -az | grep -Ei "drop|overflow|retrans"
TcpRetransSegs 127923 0.0
TcpExtLockDroppedIcmps 0 0.0
TcpExtListenDrops 1 0.0
TcpExtTCPLostRetransmit 11837 0.0
...
$ ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
...
$ sudo ethtool -S eth0 | grep -E "errors|dropped|fifo|collision"
collisions: 0
rx_crc_errors: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
...
- "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
- Linux Timeline - Linux distributīvu vēstures diagramma.
- Linus ar Linus par Linux un ne tikai, kamēr būvē datoru priekš Linus (2025).
- Linux Distribution Timeline (2024) - liels attēls ar Linux distributīvu savstarpējo saikni un vēsturi.