Difference between revisions of "LU-LSP-b"

From DiLab
Jump to: navigation, search
(22.10.2019.)
(08.05.24)
 
(175 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
<big>
 +
'''Īssaites:'''
 +
[[#Kalendārs | Kalendārs]] |
 +
[[#Uzdevumi | Uzdevumi]] |
 +
[[#Resursi | Resursi]] |
 +
</big>
 +
[[#{{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}} | Šodiena: {{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}}]] :
 +
[[#{{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}} | Rītdiena: {{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}}]]
 +
(ja ir lekcija)
 +
 
{{LUDFKurss|Linux sistēmas programmēšana|LSP|DatZ3122|2DAT3122}}
 
{{LUDFKurss|Linux sistēmas programmēšana|LSP|DatZ3122|2DAT3122}}
 +
* Pasniedzēji:
 +
** Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''
  
 
+
* Vērtējums = 15% praktiskie darbi, 35% mājas darbi, 20% kontroldarbs un 30% eksāmens.
* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''
 
 
 
* {{KursiGGroup|lu-lsp-b}}
 
 
 
* 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.
 
* [[LSP kursa atsauksmes]] no iepriekšējiem gadiem.
Line 13: Line 20:
 
==== Praktisko un mājas darbu iesniegšana ====  
 
==== 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.
 
* 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)
+
* 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
+
* Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
 
 
<!--
 
* Darbi jāiesniedz kā '''pielikums''' e-pasta vēstulei, nevis vēstules tekstā
 
* E-pasta tēmai jābūt formā "LSP MD1 Vārds Uzvārds", aizstājot MD1 ar faktisko darba kodu, un ierakstot savu vārdu un uzvārdu
 
* E-pasts jāsūta pasniedzējam: leo.selavo pie gmail punkts com
 
-->
 
  
 
==== Praktisko darbu vērtēšanas kritēriji ====
 
==== Praktisko darbu vērtēšanas kritēriji ====
Line 29: Line 30:
  
 
==== Mājas darbu vērtēšanas kritēriji ====
 
==== Mājas darbu vērtēšanas kritēriji ====
* Mājas darbu iesniegšanas termiņa laiks ir 30 minūtes pirms lekcijas sākuma
+
* 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 min!):
+
* Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 sekundi!):
** rezultāts tiek samazināts par '''50%'''  
+
** Tūdaļ pēc termiņa rezultāts tiek samazināts par '''50%'''  
** Divas nedēļas 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
+
=Kalendārs=
 +
{| border=1 cellspacing=0 cellpadding=4 style = 'border-color: #ddd;'
 
|-
 
|-
! Datums, nedēļa
+
! Datums
! Kursa saturs
+
! Tēma, saturs
 
! Uzdevumi
 
! Uzdevumi
|-
+
 
 +
|- style='vertical-align: top;'
 +
|
 +
====07.02.24====
 +
10:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Ievads kursā'''</big>
 +
|}
 +
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;'
 
|
 
|
==== 03.09.2019.====
 
|
 
[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.)
 
  
Vispārīgs pārskats par valodu C.
+
====07.02.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Intro'''</big>
 +
|}
 +
* Iekārtot darba vidi (linux, teksta redaktors, kompilators)
 +
* Izveidot un pašiem nokompilēt "Hello world" C valodā
 +
* Iepazīties ar UNIX čaulas komandām un uzdot jautājumus par neskaidrībām.
 +
* Versiju kontroles sistēmas github pamati.
  
[https://www.dropbox.com/s/2c87i9k0vc3mthr/L00_Ievads.pdf?dl=0 Slaidi L00]
+
'''Resursi'''
  
[PD0] Praktiskais darbs #0:
+
* [[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]]
* Iekārtot darba vidi (linux, teksta redaktors, kompilators)
 
* 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]]
 
 
* 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!
+
* Uzdots '''[[LU-LSP-b13:L01 | PD_Intro]]'''
|-
+
 
 +
|- style='vertical-align: top;'
 
|
 
|
  
==== 10.09.2019.====
+
====08.02.24====
| [L01] Datu struktūras un algoritmi valodā C.
+
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Programmēšanas valoda C'''</big>
 +
|}
 +
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.
  
C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli
+
'''Resursi'''
  
[https://www.dropbox.com/s/cyebsiafqrkykcq/L01_C_data_algorithms.pdf?dl=0 Slaidi L01]
+
* Klasiskā C programmēšanas valodas grāmata: Brian W. C. Kernighan & Dennis M. Ritchie, "The C Programming Language -- ANSI C," Prentice Hall, 1988
 +
* [https://web.archive.org/web/20160417114016/http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/#first C Language Tutorial]
 +
 
 +
|
  
<!--
+
|- style='vertical-align: top;'
[http://selavo.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Iepriekšējo gadu lekcijas piezīmes: apvienota ievadlekcija]
+
|
-->
+
====14.02.24====
 +
10:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Darbs ar failiem'''</big>
 +
|}
 +
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.
 +
|
  
[PD1] [[LU-LSP-b13:L01 | Praktiskais darbs #1]] - darbs ar tekstu.
+
|- style='vertical-align: top;'
 +
|
  
 +
====14.02.24====
 +
12:30
 
|
 
|
'''Uzdots''' [[LU-LSP-b:MD1 | MD1]] mājas darbs - dzimtas koks.
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_File'''</big>
 +
|}
 +
Failu kopēšana.
  
|-
 
 
|
 
|
 +
* Uzdots '''[[LU-LSP-b13:L02 | PD_File]]'''
  
==== 17.09.2019.====
+
|- style='vertical-align: top;'
| [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.  
+
====15.02.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Failu sistēma'''</big>
 +
|}
 +
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/1h0o1u3tjj0ph0m/L02_files.pdf?dl=0 Slaidi L02]
+
|- style='vertical-align: top;'
 +
|
  
<!--
+
====21.02.24====
[http://selavo.lv/~kursi/lsp/2-faili.pdf Lekcijas piezīmes: faili]
+
10:30
[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]
+
{| width='100%' style='background-color:#ddd;'
-->
+
|<big>'''Failu piekļuves režīmi'''</big>
[PD2] [[LU-LSP-b13:L02 | Praktiskais darbs #2]] - failu kopēšana.  
+
|}
 +
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.
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze.  
 
-->
 
  
 +
|- style='vertical-align: top;'
 +
|
  
|-
+
====21.02.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Dir'''</big>
 +
|}
 +
Direktoriju koka apstaigāšana.
  
==== 24.09.2019.====
+
|
| [L03] Failu sistēma
+
* Uzdots '''[[LU-LSP-b13:L03 | PD_Dir]]'''
 +
* '''Termiņš''' '''[https://docs.google.com/document/d/1wmhmxU2x93yj5bha98yGwGTvUbQ5Q0ZjOTfcNQ5ndjc/edit?usp=sharing MD_Koks]''' - Dzimtas koks.  
 +
(Termiņš pārcelts uz nedēļu vēlāk)
  
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;'
 +
|
  
[https://www.dropbox.com/s/mjo8zcjux7ygq5b/L03_file_system.pdf?dl=0 Slaidi L03]
+
====22.02.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<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.
 +
|
  
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana.
+
|- style='vertical-align: top;'
 +
|
  
 +
====28.02.24====
 +
10:30
 
|
 
|
Mājas darba [[LU-LSP-b:MD1 | MD1]] '''nodošanas''' termiņš.
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Virtuālā atmiņa'''</big>
 +
|}
 +
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.
  
'''Uzdots''' [[LU-LSP-b:MD3 | MD3]] mājas darbs - direktoriju koka apstaigāšana.
+
|- style='vertical-align: top;'
 +
|
  
|-
+
====28.02.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_An'''</big>
 +
|}
 +
Programmas analīze.
  
==== 01.10.2019.====
+
|
|  
+
* Uzdots '''[[LU-LSP-b13:L04 | PD_An]]'''
[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.  
+
* '''Termiņš''' '''[[LU-LSP-b:MD3 | MD_Dir]]''' - Direktoriju koka apstaigāšana.
  
[https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?dl=0 Slaidi L04]
+
|- style='vertical-align: top;'
 +
|
  
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze.
+
====29.02.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<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;'
[http://selavo.lv/~kursi/lsp/4-faili.pdf Lekcijas piezīmes]
+
|
-->
 
  
 +
====06.03.24====
 +
10:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Atmiņas fragmentācija'''</big>
 +
|}
 +
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;'
 
|
 
|
<!--Mājas darba [[LU-LSP-b:MD2 | MD2]] '''nodošanas''' termiņš. -->
 
  
|-
+
====06.03.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Malloc :: PD_Heap'''</big>
 +
|}
 +
'''PD_Malloc'''
  
==== 08.10.2019.====
+
Atmiņas rezervācija.
|
 
[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.
 
  
[https://www.dropbox.com/s/si26ce9jnmrtspa/L05_memory_arch_stack.pdf?dl=0 Slaidi L05]
+
'''PD_Heap'''
  
[PD_A] Praktiskajos darbos apskatīsim MD1.
+
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.
  
Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš.
+
|- style='vertical-align: top;'
 +
|
 +
 
 +
====07.03.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Atkļūdošana'''</big>
 +
|}
 +
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;'
 +
|
  
|-
+
====13.03.24====
 +
10:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
||''Attālināti'':  <big>'''KD1'''</big>
 +
|}
 +
KD1 kontroldarbs. Programmēšanas uzdevums pie datora, izmantojot apgūto vielu.
  
 
|
 
|
  
==== 15.10.2019.====
+
|- style='vertical-align: top;'
|  
+
|
  
 +
====13.03.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|''Attālināti:''  <big>'''PD_Dbg'''</big>
 +
|}
 +
'''PD_Dbg'''
  
 +
Atkļūdošanas rīki.
  
|-
 
 
|
 
|
 +
* Uzdots '''[[LU-LSP-b13:LA | PD_Dbg]]''' (Nav obligāti jāiesniedz)
  
==== 15.10.2019.====
+
|- style='vertical-align: top;'
| [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()''.
+
|
  
[https://www.dropbox.com/s/b09vpj64cy60kme/L06_memory_paging_protection.pdf?dl=0 Slaidi L06]
+
====14.03.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|''Attālināti'':  <big>'''Daudz-uzdevumu vide'''</big>
 +
|}
 +
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()''.
 +
|
  
[PD5] [[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls.
+
|- style='vertical-align: top;'
 +
|
  
 +
====20.03.24====
 +
10:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Pavedieni'''</big>
 +
|}
 +
Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).
 +
'''Resursi'''
  
'''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.
+
[https://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/www/pthreads.html POSIX thread (pthread) libraries]
  
|-
 
 
|
 
|
 +
* '''Termiņš''' '''[[LU-LSP-b:MD5 | MD_Frag]]''' - Atmiņas fragmentācijas algoritmu novērtējums ('''grupās''')
 +
  
==== 29.11.2019 ====
+
|- style='vertical-align: top;'
| TBA
 
 
|
 
|
  
|-
+
====20.03.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Thread'''</big>
 +
|}
 +
Programma kas taisa N pavedienus, kur katrs izdrukā M burtus.
  
==== 05.11.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]
+
'''PD_KD'''
 +
 
 +
Kontroldarba analīze.
  
[PD6] [[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija.
 
 
|
 
|
 +
* Uzdots '''MP_Spec''' - Spēles noteikumu specifikācija
 +
* Uzdots '''[[LU-LSP-b:L08 | PD_Thread]]'''
  
|-
+
|- style='vertical-align: top;'
 
|
 
|
  
==== 12.11.2019.====
+
====21.03.24====
 +
12:30
 
|
 
|
[L08] Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'.
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Procesa dzīves cikls :: Starpprocesu komunikācija'''</big>
 +
|}
 +
'''Procesa dzīves cikls'''
  
[https://www.dropbox.com/s/fr3i3tys808343j/L08_memory_algorithms.pdf?dl=0 Slaidi L08]
+
Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi  kā process var beigties. exit() un _exit().
  
[PD8] [[LU-LSP-b:L08 | Praktiskais darbs #8]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem.
+
'''Starpprocesu komunikācija'''
 +
 
 +
Starpprocesu komunikācija.  Faili. Pipes. Koplietošanas atmiņa. Komunikācija starp nesaistītiem procesiem. Sockets abstrakcija komunikācijai.
  
 
|
 
|
 +
* '''Termiņš''' '''MP_Game''' - Kursa projekta tēmas (spēles) izvēle
  
Mājas darba [[LU-LSP-b:MD4 | MD4]] '''nodošanas''' termiņš.
+
|- style='vertical-align: top;'
 
 
|-
 
 
|
 
|
  
==== 19.11.2019.====
+
====03.04.24====
 +
10:30
 
|
 
|
[KD1] Vidus semestra '''kontroldarbs'''.
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Sockets :: Servera klienta arhitektūra'''</big>
 +
|}
 +
'''Sockets'''
  
[L09] : Linux atkļūdošanas rīki un to lietošana.
+
Sockets abstrakcija komunikācijai. Klienta un servera arhitektūra.  Iteratīvie un paralēlie serveri.  
  
[https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?dl=0 Slaidi L09]
+
'''Servera klienta arhitektūra'''
  
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam!
+
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
  
'''Uzdots''' [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums ('''grupās''')
+
|- style='vertical-align: top;'
 
 
Domāt kursa projekta tēmas!
 
 
 
|-
 
 
|
 
|
  
==== 26.11.2019.====
+
====03.04.24====
 +
12:30
 
|
 
|
[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()''.
+
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Jmp :: PD_PSpec'''</big>
 +
|}
 +
'''PD_Jmp'''
  
[https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?dl=0 Slaidi L10]
+
''setjmp()'',''longjmp()'' un taimera signāls.
  
[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. (Jāprot, bet nav jāiesūta)
+
'''PD_PSpec'''
  
+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.
+
Darbs pie kursa projekta. Spēles izvēle un specifikācija.
  
 
|
 
|
Mājas darba [[LU-LSP-b:MD5 | MD5]] grupu izveidošanas termiņš.
+
* Uzdots '''[[LU-LSP-b13:L05 | PD_Jmp]]'''
 +
* Uzdots '''PD_PSpec'''
  
'''Apspriežam kursa projekta tēmas'''
+
|- style='vertical-align: top;'
 +
|
  
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!
+
====04.04.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Signāli'''</big>
 +
|}
 +
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
  
|-
+
|- style='vertical-align: top;'
 +
|
  
 +
====10.04.24====
 +
10:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Tekstuālā lietotāja saskarne.'''</big>
 +
|}
 +
Tekstuālā lietotāja saskarne. Ncurses bibliotēka.
  
==== 03.12.2019 ====
+
'''Resursi'''
|
 
  
Pēc izvēles mājās vai datorklasē:
+
* [https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/ Ncurses library, installation and use]
* [PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.
 
* Pabeigt izvēlētā kursa projekta noteikumus [https://docs.google.com/document/d/1Lvo-8oxibzqM8ANdjn8lR4ueCwGLSIcpL1Xtu7InHEs/edit?usp=sharing Google doc]
 
* 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.
 
  
| '''Termiņš izvēlētā kursa projekta noteikumiem  [https://docs.google.com/document/d/1Lvo-8oxibzqM8ANdjn8lR4ueCwGLSIcpL1Xtu7InHEs/edit?usp=sharing Google doc]'''
+
|
Mājas darba [[LU-LSP-b:MD5 | MD5]] '''nodošanas''' termiņš.
 
'''Sākam diskutēt par protokolu''' - nākamajā lekcijā būtu jānonāk līdz pirmajai protokola versijai!
 
  
|-
+
|- style='vertical-align: top;'
 
|
 
|
  
==== 10.12.2019.====
+
====10.04.24====
|  
+
12:30
[L11] Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit().
+
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_Net :: PD_PProt'''</big>
 +
|}
 +
'''PD_Net'''
  
Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem.  
+
Starpprocesu komunikācija tīklā.
  
[https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?dl=0 Slaidi L11]
+
'''PD_PProt'''
  
 +
Darbs pie kursa projekta. Komunikāciju protokola izstrāde.
  
[L12] Signāli. Alarm serviss un signāls.
+
|
Diskusija par komunikācijas protokolu izstrādi.
+
* Uzdots '''[[LU-LSP-b13:L10 | PD_Net]]'''
 +
* Uzdots '''PD_PProt'''
  
[https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?dl=0 Slaidi L12]
+
|- style='vertical-align: top;'
 +
|
  
 +
====11.04.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Dēmoni'''</big>
 +
|}
 +
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
  
<!--
+
|- style='vertical-align: top;'
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.
+
|
!-->
 
  
 +
====17.04.24====
 +
10:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Grafiskā lietotāja saskarne'''</big>
 +
|}
 +
Grafiskā lietotāja saskarne. OpenGL. X-server.
  
 
|
 
|
  
Termiņš: Kursa projekts: spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā.
+
|- style='vertical-align: top;'
 +
|
  
|-
+
====17.04.24====
 +
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''PD_KP'''</big>
 +
|}
 +
Darbs pie kursa projekta.
  
==== 17.12.2019.====
+
|
|  
+
* Uzdots '''PD_KP'''
[L13] Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).
 
  
 +
|- style='vertical-align: top;'
 +
|
  
[https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?dl=0 L13 Slaidi].
+
====18.04.24====
 +
12:30
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Konsultācija'''</big>
 +
|}
 +
Atbildes uz studentu jautājumiem
  
 +
|
  
[PD_KP2] Darbs pie [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing kursa projekta].
+
|- style='vertical-align: top;'
 
|
 
|
Termiņš: Protokola gala versija
+
 
Ieskatam servera/klienta komunikācijā neobligāts [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], kas nav jānodod
+
====09.05.24====
|-
+
12:30
 
|
 
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Eksāmens'''</big>
 +
|}
 +
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!
  
==== 23.12.2019.====
 
| Ziemassvētku un Jaungada brīvdienas
 
 
|
 
|
&nbsp;
+
'''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 25%
 +
* Prezentācija (bez slaidiem) 25%
 +
 
 +
|- style='vertical-align: top;'
 
|
 
|
  
==== ??.01.2020.====
+
====29.04-17.05.2024====
| [EX] '''Eksāmens ??:??''' 312. telpā.
 
  
Eksāmena forma: projektu demonstrācija un prezentācija (darbība, pirmkods, diskusijas).
+
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Sesija'''</big>
 +
|}
 +
Vērtējumu izlikšana
 +
|
  
'''Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās!'''
 
|
 
&nbsp;
 
|-
 
 
|}
 
|}
  
 +
=Uzdevumi=
 
== Mājas darbi ==
 
== Mājas darbi ==
  
 
* [[LU-LSP-b:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.
 
* [[LU-LSP-b:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.
* [[LU-LSP-b:MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.
+
* [[LU-LSP-b:MD1 | MD_Koks]]: Ģimenes koka ģenerēšanas programma.
* MD2 - ''nav uzdots''.
 
 
* [[LU-LSP-b:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.
 
* [[LU-LSP-b:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.
 
* [[LU-LSP-b:MD4 | MD4]]: Atmiņas rezervācijas funkciju salīdzināšana.
 
* [[LU-LSP-b:MD4 | MD4]]: Atmiņas rezervācijas funkciju salīdzināšana.
Line 349: Line 568:
 
-->
 
-->
  
 +
=Resursi=
 
== Pamācoši vingrinājumi un piemēri ==
 
== Pamācoši vingrinājumi un piemēri ==
  
Line 354: Line 574:
 
* Aprēķins, cik laika vajag pārkopēt 1 TB pa baitam bez bufera.
 
* 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
 
* Paging: piemērs 4K x 4K masīva apstaigāšanai, mainot indeksus: 4K vs 16M page faults
 +
* Vai var uzrakstīt programmu bez main()
  
 
== Literatūra ==
 
== Literatūra ==
Line 369: Line 590:
 
* [http://fabiensanglard.net/c/ To become a good programmer...] - C grāmatu saraksts
 
* [http://fabiensanglard.net/c/ To become a good programmer...] - C grāmatu saraksts
  
== Saites ==
+
{{ProgrammersResorces}}
 
 
* [http://selavo.lv/wiki/index.php/Linux_komandas Noderīgas Linux komandas]
 
* [http://bit.ly/bashbyex Bash by Example] @ibm/developerworks
 
* [http://tuxradar.com/content/how-linux-kernel-works Intro to Linux kernel]
 
 
 
* [http://www.lysator.liu.se/c/bwk-tutor.html Programming in C: A Tutorial] (by Brian W. Kernighan)
 
* [http://www.gnu.org/software/make/manual/make.html Gnu make] dokumentācija
 
* [http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard Tipiskas unix direktoriju hierarhijas] īss apraksts.
 
 
 
* Sockets:
 
** [http://gnosis.cx/publish/programming/sockets.html Programming IP Sockets on Linux] (tutorial @ gnosis.cx)
 
** [http://www.linuxhowtos.org/C_C++/socket.htm Sockets Tutorial] @ Linux Howtos
 
** [http://en.wikipedia.org/wiki/Berkeley_sockets Berkeley sockets] (Wikipēdija)
 
 
 
* http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
 
* http://lkml.org/
 
* [http://tldp.org/LDP/lkmpg/2.6/html/index.html The Linux Kernel Module Programming Guide]
 
 
 
=== Programmēšanas analīzes rīki ===
 
* [http://pmd.sourceforge.net/pmd-5.2.1/ PMD] - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
 
 
 
=== Linux veiktspējas analīze ===
 
* [http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html Top 20 Linux monitoring tools] @cyberciti
 
* [http://www.tecmint.com/command-line-tools-to-monitor-linux-performance/ 20 rīki Linux veikstpējas monitoringam] (IPTraf u.c.) @tecmint
 
* [http://www.cyberciti.biz/tips/how-do-i-find-out-linux-cpu-utilization.html CPU analīze]
 
* [http://www.cyberciti.biz/tips/linux-disk-performance-monitoring-howto.html Disku I/O analīze]
 
* [http://www.linuxprogrammingblog.com/io-profiling IO profiling] at Linux programming blog
 
* [https://www.linux.com/learn/tutorials/470979-who-and-what-is-on-my-network-probing-your-network-with-linux Tīkla analīze]
 
 
 
== Atziņas ==
 
* [http://norvig.com/21-days.html Teach yourself programming in 10 years] by Peter Norvig
 
* [https://rhodecode.com/blog/code-review-learn-nasa-codes/ Code review: Learn how NASA codes (blog)], and [http://cacm.acm.org/magazines/2014/2/171689-mars-code/fulltext Mars Code (ACM article)]
 

Latest revision as of 16:22, 22 March 2024

Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena: 28.03.24 : Rītdiena: 29.03.24 (ja ir lekcija)


Linux sistēmas programmēšana (LSP)

LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.

  • Pasniedzēji:
    • Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
  • Vērtējums = 15% praktiskie darbi, 35% mājas darbi, 20% kontroldarbs un 30% 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 (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

07.02.24

10:30

Ievads kursā

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 MD_Koks - Dzimtas koks.

07.02.24

12:30

PD_Intro
  • Iekārtot darba vidi (linux, teksta redaktors, kompilators)
  • Izveidot un pašiem nokompilēt "Hello world" C valodā
  • Iepazīties ar UNIX čaulas komandām un uzdot jautājumus par neskaidrībām.
  • Versiju kontroles sistēmas github pamati.

Resursi

08.02.24

12:30

Programmēšanas valoda C

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

  • Klasiskā C programmēšanas valodas grāmata: Brian W. C. Kernighan & Dennis M. Ritchie, "The C Programming Language -- ANSI C," Prentice Hall, 1988
  • C Language Tutorial

14.02.24

10: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.

14.02.24

12:30

PD_File

Failu kopēšana.

15.02.24

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

21.02.24

10: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.

  • Uzdots MD_Dir - Direktoriju koka apstaigāšana.

21.02.24

12:30

PD_Dir

Direktoriju koka apstaigāšana.

(Termiņš pārcelts uz nedēļu vēlāk)

22.02.24

12: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.

28.02.24

10:30

Virtuālā atmiņa

Virtuālās atmiņas lapas. Page fault un segmentation fault. Atmiņas aizsardzība. setjmp() un longjmp().

  • Uzdots MD_Mem - Atmiņas rezervācijas funkciju salīdzinājums.

28.02.24

12:30

PD_An

Programmas analīze.

29.02.24

12: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.

06.03.24

10: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'.

  • Uzdots MD_Frag - Atmiņas fragmentācijas algoritmu novērtējums (grupās)

06.03.24

12:30

PD_Malloc :: PD_Heap

PD_Malloc

Atmiņas rezervācija.

PD_Heap

Vienkāršs atmiņas alokators fiksēta izmēra objektiem.

07.03.24

12:30

Atkļūdošana

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

  • Uzdots MP_Game - Kursa projekta tēmas (spēles) izvēle

13.03.24

10:30

Attālināti: KD1

KD1 kontroldarbs. Programmēšanas uzdevums pie datora, izmantojot apgūto vielu.

13.03.24

12:30

Attālināti: PD_Dbg

PD_Dbg

Atkļūdošanas rīki.

  • Uzdots PD_Dbg (Nav obligāti jāiesniedz)

14.03.24

12:30

Attālināti: 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().

20.03.24

10:30

Pavedieni

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

POSIX thread (pthread) libraries

  • Termiņš MD_Frag - Atmiņas fragmentācijas algoritmu novērtējums (grupās)


20.03.24

12:30

PD_Thread

Programma kas taisa N pavedienus, kur katrs izdrukā M burtus.


PD_KD

Kontroldarba analīze.

  • Uzdots MP_Spec - Spēles noteikumu specifikācija
  • Uzdots PD_Thread

21.03.24

12:30

Procesa dzīves cikls :: Starpprocesu komunikācija

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.

  • Termiņš MP_Game - Kursa projekta tēmas (spēles) izvēle

03.04.24

10:30

Sockets :: Servera klienta arhitektūra

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.

  • Uzdots MP_Prot1 - Spēles komunikāciju protokols, 1. versija
  • Termiņš MP_Spec - Spēles noteikumu specifikācija

03.04.24

12:30

PD_Jmp :: PD_PSpec

PD_Jmp

setjmp(),longjmp() un taimera signāls.

PD_PSpec

Darbs pie kursa projekta. Spēles izvēle un specifikācija.

04.04.24

12:30

Signāli

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

10.04.24

10:30

Tekstuālā lietotāja saskarne.

Tekstuālā lietotāja saskarne. Ncurses bibliotēka.

Resursi

10.04.24

12:30

PD_Net :: PD_PProt

PD_Net

Starpprocesu komunikācija tīklā.

PD_PProt

Darbs pie kursa projekta. Komunikāciju protokola izstrāde.

11.04.24

12:30

Dēmoni

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

17.04.24

10:30

Grafiskā lietotāja saskarne

Grafiskā lietotāja saskarne. OpenGL. X-server.

17.04.24

12:30

PD_KP

Darbs pie kursa projekta.

  • Uzdots PD_KP

18.04.24

12:30

Konsultācija

Atbildes uz studentu jautājumiem

09.05.24

12:30

Eksāmens

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 25%
  • Prezentācija (bez slaidiem) 25%

29.04-17.05.2024

Sesija

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
  • Vai var uzrakstīt programmu bez main()

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

Āķīgi uzdevumi un pieredze

Atziņas