LU-LSP-b: Difference between revisions

From DiLab
Jump to navigation Jump to search
Content deleted Content added
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 ==
=Kalendārs=


{| border=1 cellspacing=0 cellpadding=4
{| border=1 cellspacing=0 cellpadding=4 style = ""border-color: #ddd;""
|-
|-
! Datums, nedēļa
! Datums
! Kursa saturs
! Tēma, saturs
! Uzdevumi
! Uzdevumi
|-
|-
|
|
==== 03.09.2019.====
==== 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 - 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.

|
|

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.


|
|
Mājas darba [[LU-LSP-b:MD1 | MD1]] '''nodošanas''' termiņš.
* '''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 "#project"!
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]


|
|
* Mājas darba [[LU-LSP-b:MD5 | MD5]] '''nodošanas''' termiņš.
* '''Termiņš: [[LU-LSP-b:MD5 | MD5]]


Eksāmena projekts:
Eksāmena projekts:
* '''Spēles izvēle un noteikumi''' Darbs pie [https://docs.google.com/document/d/1FBJyO8cEsOmdFaSzYtO63Ait7OVJLJPjus_Lnayy2hA/edit?usp=sharing spēles noteikumu dokumenta].
* '''Spēles izvēle un noteikumi''' Darbs pie [XX spēles noteikumu dokumenta].


* '''Sākam diskutēt par protokolu''' - nākamajā lekcijā būtu jānonāk līdz pirmajai protokola versijai!
* '''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ņš''': Spēles protokola gala versija
* '''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
|
|

&nbsp;
|-
|-
|
|
==== 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!'''
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'''

&nbsp;
|-
|-
|}
|}

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ērtējums = 15% praktiskie darbi, 25% mājas darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).


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

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.)

Vispārīgs pārskats par valodu C.

  • Uzdots: MD0 mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.

06.02.20 14:30

'


[PD0] Praktiskais darbs #0:

06.02.20 16:30

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

  • Uzdots: MD1 mājas darbs - dzimtas koks.

12.02.20 08:30

'


[PD1] Praktiskais darbs #1 - darbs ar tekstu.

13.02.20 14:30

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.

13.02.20 16:30

'


[PD2] Praktiskais darbs #2 - failu kopēšana.

19.02.20 08:30

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().

  • Uzdots: MD3 mājas darbs - direktoriju koka apstaigāšana.

20.02.20 14:30

'


[PD3] Praktiskais darbs #3 - direktoriju koka apstaigāšana.

20.02.20 16:30

Failu piekļuves režīmi


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.

26.02.20 08:30

'


[PD4] Praktiskais darbs #4 - programmas analīze.

27.02.20 14:30

Atmiņas arhitektūra


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.

27.02.20 16:30

'


[PD_A] Praktiskajos darbos apskatīsim MD1.

04.03.20 08:30

Virtuālā atmiņa


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: MD4 mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.

05.03.20 14:30

KD1


[KD1] Vidus semestra kontroldarbs.

  • Kontroldarbs KD1

05.03.20 16:30

'


[PD5] Praktiskais darbs #5 - setjmp(),longjmp() un taimera signāls.

11.03.20 08:30

Dinamiskā atmiņa


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.

12.03.20 14:30

'


[PD6] Praktiskais darbs #6 - atmiņas rezervācija.

12.03.20 16:30

Atmiņas fragmentācija


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

'


[PD8] Praktiskais darbs #8 - vienkāršs atmiņas alokators fiksēta izmēra objektiem.

19.03.20 14:30

Atkļūdošana


Linux atkļūdošanas rīki un to lietošana.

  • Uzdots: MD5 - atmiņas fragmentācijas algoritmu novērtējums (grupās)

19.03.20 16:30

'


[PD_D] Izmēģināt atkļūdošanas rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam!

  • Domāt kursa projekta tēmas!

25.03.20 08:30

Daudz-uzdevumu vide


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().

  • Mājas darba MD5 grupu izveidošanas termiņš.

Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!

26.03.20 14:30

'


[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus.

  • Apspriežam kursa projekta tēmas

26.03.20 16: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. 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!

  • 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.

Eksāmena projekts:

  • Spēles izvēle un noteikumi Darbs pie [XX spēles noteikumu dokumenta].
  • Sākam diskutēt par protokolu - nākamajā lekcijā jānonāk līdz pirmajai protokola versijai!

01.04.20 08:30

Signāli


Signāli. Alarm serviss un signāls.

Diskusija par komunikācijas protokolu izstrādi.

02.04.20 14:30

'


[PD10] Praktiskais darbs #10 - starpprocesu komunikācija.

  • Termiņš: Kursa projekta spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā.

02.04.20 16:30

Pavedieni


Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).

15.04.20 08:30

'


Ieskatam servera/klienta komunikācijā PD11, bet nav jānodod.

[PD_KP2] Darbs pie kursa projekta.

  • Termiņš: Spēles protokola gala versija

16.04.20 14:30

Kursa kopsavilkums


16.04.20 16:30

'


[PD_KP2] Darbs pie kursa projekta.

xx.xx.xx xx:xx

Eksāmens


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

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
  • "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686

Programmētāja resursi

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

$ 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

Atziņas