Difference between revisions of "LU-LSP-b"

From DiLab
Jump to: navigation, search
(26.09.2017.)
(18.12.2018.)
(34 intermediate revisions by the same user not shown)
Line 46: Line 46:
 
|-
 
|-
 
|
 
|
==== 12.09.2017.====
+
==== 04.09.2018.====
 
|  
 
|  
 
[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.)
 
[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.)
Line 52: Line 52:
 
Vispārīgs pārskats par valodu C.
 
Vispārīgs pārskats par valodu C.
  
[https://www.dropbox.com/s/97vigjp2y8csroe/L00_Ievads_2017.pdf?dl=0 Slaidi L00]
+
[https://www.dropbox.com/s/2c87i9k0vc3mthr/L00_Ievads.pdf?dl=0 Slaidi L00]
  
 
[PD0] Praktiskais darbs #0:
 
[PD0] Praktiskais darbs #0:
Line 61: Line 61:
 
* 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 - tagad vai līdz nākamajai lekcijai
 
|
 
|
Uzdots [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.
+
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!
 
|-
 
|-
 
|
 
|
  
==== 19.09.2017.====
+
==== 11.09.2018.====
 
| [L01] Datu struktūras un algoritmi valodā C.
 
| [L01] Datu struktūras un algoritmi valodā C.
  
Line 75: Line 75:
 
[http://selavo.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Iepriekšējo gadu lekcijas piezīmes: apvienota ievadlekcija]
 
[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.
  
Line 83: Line 84:
 
|
 
|
  
==== 26.09.2017.====
+
==== 18.09.2018.====
 
| [L02] Darbs ar failiem.
 
| [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]
 
[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-faili.pdf Lekcijas piezīmes: faili]
Line 100: Line 101:
 
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze.  
 
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze.  
 
-->
 
-->
 +
 +
 
|-
 
|-
 
|
 
|
  
==== 03.10.2017.====
+
==== 25.09.2018.====
 
| [L03] Failu sistēma
 
| [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]
 
[https://www.dropbox.com/s/mjo8zcjux7ygq5b/L03_file_system.pdf?dl=0 Slaidi L03]
!-->
+
 
 
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana.
 
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana.
  
Line 120: Line 123:
 
|
 
|
  
==== 10.10.2017.====
+
==== 02.10.2018.====
| [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.  
+
|  
<!--
+
[VIESLEKCIJA] Dmitry G. Korzun, Ph.D, Adjunct Professor, Leading Research Scientist Petrozavodsk State University, Institute of Mathematics and Information Technology, Department of Computer Science "Edge-Centric Computing and Fog Computing (2h). Methods of involving and supporting local and remote devices for cooperative service construction and delivery."
 +
 
 +
[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.  
 +
 
 
[https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?dl=0 Slaidi L04]
 
[https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?dl=0 Slaidi L04]
!-->
+
 
 
<!--
 
<!--
 
[http://selavo.lv/~kursi/lsp/4-faili.pdf Lekcijas piezīmes]
 
[http://selavo.lv/~kursi/lsp/4-faili.pdf Lekcijas piezīmes]
 
-->
 
-->
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze.
+
 
  
 
|
 
|
Line 135: Line 141:
  
 
|-
 
|-
 +
|
 +
 +
==== 09.10.2018.====
 +
|
 +
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze. Iespēja strādāt pie MD3 - izņēmuma kārtā, termiņš ir vakarā pēc praktiskajiem darbiem 19:00
  
 
|
 
|
  
==== 17.10.2017.====
+
Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš.
 +
 
 +
<!--Mājas darba [[LU-LSP-b:MD2 | MD2]] '''nodošanas''' termiņš. -->
 +
 
 +
 
 +
|-
 +
 
 +
|
 +
 
 +
==== 16.10.2018.====
 
|  
 
|  
 
[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.
 
[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]
 
[https://www.dropbox.com/s/si26ce9jnmrtspa/L05_memory_arch_stack.pdf?dl=0 Slaidi L05]
!-->
+
 
 
[PD_A] Praktiskajos darbos apskatīsim MD1.
 
[PD_A] Praktiskajos darbos apskatīsim MD1.
 
|
 
|
Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš.
+
 
 +
 
 
|-
 
|-
 
|
 
|
  
==== 24.10.2017.====
+
==== 23.10.2018.====
 
| [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()''.  
 
| [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]
 
[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.
  
Line 160: Line 181:
  
 
'''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.
 
'''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.
 +
 +
|-
 +
|
 +
 +
==== 30.11.2018 ====
 +
| LEKCIJA NENOTIEK
 +
|
 +
 
|-
 
|-
 
|
 
|
  
==== 31.10.2017.====
+
==== 06.11.2018.====
 
| [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.
 
| [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]
 
[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.
 
|
 
|
Line 174: Line 203:
 
|
 
|
  
==== 07.11.2017.====
+
==== 13.11.2018.====
 
|
 
|
 
[L08] Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'.
 
[L08] Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'.
<!--
+
 
 
[https://www.dropbox.com/s/fr3i3tys808343j/L08_memory_algorithms.pdf?dl=0 Slaidi L08]
 
[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ņš.
 
Mājas darba [[LU-LSP-b:MD4 | MD4]] '''nodošanas''' termiņš.
  
Line 188: Line 218:
 
|
 
|
  
==== 14.11.2017.====
+
==== 20.11.2018.====
 
|
 
|
 
[KD1] Vidus semestra '''kontroldarbs'''.
 
[KD1] Vidus semestra '''kontroldarbs'''.
  
 
[L09] : Linux atkļūdošanas rīki un to lietošana.
 
[L09] : Linux atkļūdošanas rīki un to lietošana.
<!--
+
 
 
[https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?dl=0 Slaidi L09]
 
[https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?dl=0 Slaidi L09]
!-->
+
 
 
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam!
 
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam!
  
Line 203: Line 233:
  
 
Domāt kursa projekta tēmas!
 
Domāt kursa projekta tēmas!
 +
 
|-
 
|-
 
|
 
|
  
==== 21.11.2017.====
+
==== 27.11.2018.====
 
|
 
|
 
[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()''.
 
[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()''.
<!--
+
 
 
[https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?dl=0 Slaidi L10]
 
[https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?dl=0 Slaidi L10]
!-->
+
 
 
[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. (Jāprot, bet nav jāiesūta)
 
[PD9] Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. (Jāprot, bet nav jāiesūta)
  
Line 222: Line 253:
  
 
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!
 
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!
 +
 
|-
 
|-
|
 
 
==== 28.11.2017.====
 
|
 
[L11] 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.
 
<!--
 
[https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?dl=0 Slaidi L11]
 
!-->
 
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.
 
 
|
 
|
  
Termiņš: Kursa projekts: spēles noteikumi, GoogleDoc dokumentā.
+
==== 04.12.2018 ====
 +
| ====== LEKCIJA NENOTIEK ======
  
'''Balsojam par kursa projekta tēmu!'''
+
Pēc izvēles mājās vai datorklasē:
 +
* [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ņš.
 
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!
  
 
|-
 
|-
 
 
|
 
|
  
==== 05.12.2017 ====
+
==== 11.12.2018.====
| ====== LEKCIJA NENOTIEK ======
+
|  
 +
[L11] Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit().
  
Visi gaidīti seminārā 14:00, Dzērbenes ielā 14
+
Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem.
  
| '''Gala termiņš izvēlētā kursa projekta noteikumiem [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing Google doc]'''
+
[https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?dl=0 Slaidi L11]
  
'''Sākam diskutēt par protokolu''' - nākamajā lekcijā būtu jānonāk līdz pirmajai protokola versijai!
 
 
|-
 
|
 
  
==== 12.12.2017.====
 
|
 
 
[L12] Signāli. Alarm serviss un signāls.  
 
[L12] Signāli. Alarm serviss un signāls.  
 
Diskusija par komunikācijas protokolu izstrādi.
 
Diskusija par komunikācijas protokolu izstrādi.
 +
 +
[https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?dl=0 Slaidi L12]
 +
 +
 
<!--
 
<!--
[https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?dl=0 Slaidi L12]
+
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.
 
!-->
 
!-->
[PD_KP1] Darbs pie [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing kursa projekta].
+
 
  
 
|
 
|
Termiņš: Protokola Alfa versija
+
 
 +
Termiņš: Kursa projekts: spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā.
 +
 
 
|-
 
|-
 
|
 
|
  
==== 19.12.2017.====
+
==== 18.12.2018.====
 
|  
 
|  
 
[L13] Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).
 
[L13] Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).
  
<!--
+
 
 
[https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?dl=0 L13 Slaidi].
 
[https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?dl=0 L13 Slaidi].
  
!-->
+
 
 
[PD_KP2] Darbs pie [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing kursa projekta].  
 
[PD_KP2] Darbs pie [https://docs.google.com/document/d/1eKufkNWABehv7_r552aGX-vLr67KmPO74q_5w8jF3dw/edit?usp=sharing kursa projekta].  
 
|
 
|
Line 287: Line 315:
 
|
 
|
  
==== xx.12.2017. - xx.01.2018.====
+
==== xx.12.2018. - Ziemassvētku un Jaungada brīvdienas
| Ziemassvētku un Jaungada brīvdienas
 
 
|
 
|
 
&nbsp;
 
&nbsp;
Line 294: Line 321:
 
|
 
|
  
==== 19.01.2018.====
+
==== 15.01.2019.====
| [EX] '''Eksāmens 10:00''' 312. telpā.
+
| [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).

Revision as of 22:57, 17 December 2018

Linux sistēmas programmēšana (LSP)

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


  • Pasniedzējs: Krišjānis Nesenbergs (epasts: vards.uzvards @ gmail.com)
    • Kursa sākotnējais autors: 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.
  • 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!), rezultāts tiek samazināts par:
    • 10% par ik dienu pirmo piecu dienu laikā pēc termiņa, un
    • 50% piecas vai vairāk dienas pēc termiņa.
    • Divas nedēļas pēc termiņa darbi vairs netiek pieņemti.


Kalendārs

Datums, nedēļa Kursa saturs Uzdevumi

04.09.2018.

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

Slaidi L00

[PD0] Praktiskais darbs #0:

Uzdots MD0 mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos, kā arī pieteikties vēstkopai!

11.09.2018.

[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

Slaidi L01


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

Uzdots MD1 mājas darbs - dzimtas koks.

18.09.2018.

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

Slaidi L02

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


25.09.2018.

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

Slaidi L03

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

Mājas darba MD1 nodošanas termiņš.

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

02.10.2018.

[VIESLEKCIJA] Dmitry G. Korzun, Ph.D, Adjunct Professor, Leading Research Scientist Petrozavodsk State University, Institute of Mathematics and Information Technology, Department of Computer Science "Edge-Centric Computing and Fog Computing (2h). Methods of involving and supporting local and remote devices for cooperative service construction and delivery."

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

Slaidi L04



09.10.2018.

[PD4] Praktiskais darbs #4 - programmas analīze. Iespēja strādāt pie MD3 - izņēmuma kārtā, termiņš ir vakarā pēc praktiskajiem darbiem 19:00

Mājas darba MD3 nodošanas termiņš.


16.10.2018.

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

Slaidi L05

[PD_A] Praktiskajos darbos apskatīsim MD1.


23.10.2018.

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

Slaidi L06

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

Uzdots MD4 mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.

30.11.2018

LEKCIJA NENOTIEK

06.11.2018.

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

Slaidi L07

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

13.11.2018.

[L08] Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'.

Slaidi L08

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

Mājas darba MD4 nodošanas termiņš.

20.11.2018.

[KD1] Vidus semestra kontroldarbs.

[L09] : Linux atkļūdošanas rīki un to lietošana.

Slaidi L09

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

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

Domāt kursa projekta tēmas!

27.11.2018.

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

Slaidi L10

[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ā): Praktiskais darbs #9.1 - steka satura analīze un piekļuve stekam.

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

Apspriežam kursa projekta tēmas

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

04.12.2018

====== LEKCIJA NENOTIEK ======

Pēc izvēles mājās vai datorklasē:

  • [PD10] Praktiskais darbs #10 - starpprocesu komunikācija.
  • Pabeigt izvēlētā kursa projekta noteikumus 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 Google doc

Mājas darba MD5 nodošanas termiņš. Sākam diskutēt par protokolu - nākamajā lekcijā būtu jānonāk līdz pirmajai protokola versijai!

11.12.2018.

[L11] 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.

Slaidi L11


[L12] Signāli. Alarm serviss un signāls. Diskusija par komunikācijas protokolu izstrādi.

Slaidi L12



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

18.12.2018.

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


L13 Slaidi.


[PD_KP2] Darbs pie kursa projekta.

Termiņš: Protokola gala versija Ieskatam servera/klienta komunikācijā neobligāts PD11, kas nav jānodod

==== xx.12.2018. - Ziemassvētku un Jaungada brīvdienas

 

15.01.2019.

[EX] Eksāmens 14:30 312. telpā.

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!

 

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.

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

Saites

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

Atziņas