Difference between revisions of "LU-LSP-b14"
 (Redirecting to LU-LSP-b)  | 
				|||
| Line 1: | Line 1: | ||
#REDIRECT [[LU-LSP-b]]  | 
  |||
{{LUDFKurss|Linux sistēmas programmēšana|LSP|DatZ3101|2DAT3122}}  | 
|||
* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''  | 
|||
<!-- * Asistents: TBA -->  | 
|||
* {{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.  | 
|||
==== Praktisko un mājas darbu iesniegšana ====   | 
|||
* 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  | 
|||
* Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c  | 
|||
* Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos  | 
|||
<!--  | 
|||
==== Praktisko darbu vērtēšanas kritēriji ====   | 
|||
* Papildus par praktiskajiem darbiem saņem plusiņus, kas ietilpst 10% no kopējā vērtējuma "par darbu klasē". Tie pienākas ikvienam, kas iesniedz PD '''patstāvīgu''' risinājumu lekcijas laikā.  | 
|||
* Ja lekcijas beigu daļā PD risinājums tiek apskatīts publiski, PD jāiesūta līdz šim laikam. Vēlāk iesniegti darbi netiek vērtēti.  | 
|||
* Vēlāk iesūtīti darbi var tikt laboti, bet netiek vērtēti.  | 
|||
-->  | 
|||
==== 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 ==  | 
|||
{| border=1 cellspacing=0 cellpadding=4  | 
|||
|-  | 
|||
! Datums, nedēļa   | 
|||
! Kursa saturs  | 
|||
! Uzdevumi  | 
|||
|-  | 
|||
|  | 
|||
==== 02.09.2014. ====  | 
|||
|   | 
|||
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.)  | 
|||
* [http://bit.ly/1a2rHMW Kas tas ir, Linux?] - lasīt Linux.com rakstu  | 
|||
* [[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]].  | 
|||
|  | 
|||
Uzdots [[LU-LSP-b14:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.  | 
|||
|-  | 
|||
|  | 
|||
==== 09.09.2014. ====  | 
|||
|   | 
|||
Vispārīgs pārskats par valodu C.  | 
|||
Lasīt [http://bit.ly/1a2rsl3 C valodas pamācību] no Drexel universitātes.  | 
|||
|  | 
|||
'''Uzdots''' [[LU-LSP-b14:MD1 | MD1]] mājas darbs - dzimtas koks.  | 
|||
|-  | 
|||
|  | 
|||
==== 16.09.2014. ====  | 
|||
| Datu struktūras un algoritmi valodā C.  | 
|||
[http://selavo.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Lekcijas piezīmes: apvienota ievadlekcija]  | 
|||
[[LU-LSP-b13:L01 | Praktiskais darbs #1]]  | 
|||
|  | 
|||
|-  | 
|||
|  | 
|||
==== 23.09.2014. ====  | 
|||
| Darbs ar failiem; sistēmas izsaukumi faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (''cat, tail, head, less, cp'' u.c.). Failu ievada un izvada ātrdarbība, ņemot vērā sistēmas arhitektūru.   | 
|||
[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]  | 
|||
-->  | 
|||
[[LU-LSP-b13:L02 | Praktiskais darbs #2]].   | 
|||
|  | 
|||
<!--  | 
|||
'''Uzdots''' [[LU-LSP-b14:MD2 | MD2]] mājas darbs - datubāze.   | 
|||
-->  | 
|||
|-  | 
|||
|  | 
|||
==== 30.09.2014.====  | 
|||
| 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().  | 
|||
|  | 
|||
Mājas darba [[LU-LSP-b14:MD1 | MD1]] '''nodošanas''' termiņš.  | 
|||
|-  | 
|||
|  | 
|||
==== 07.10.2014.====  | 
|||
| 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().  | 
|||
[http://selavo.lv/~kursi/lsp/4-faili.pdf Lekcijas piezīmes]  | 
|||
[[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana.  | 
|||
|  | 
|||
<!--Mājas darba [[LU-LSP-b14:MD2 | MD2]] '''nodošanas''' termiņš. -->  | 
|||
'''Uzdots''' [[LU-LSP-b14:MD3 | MD3]] mājas darbs - direktoriju koka apstaigāšana.  | 
|||
|-  | 
|||
|  | 
|||
==== 14.10.2014.====  | 
|||
|   | 
|||
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.  | 
|||
[[LU-LSP-b13:L04 | Praktiskais darbs #4]].  | 
|||
|  | 
|||
|-  | 
|||
|  | 
|||
==== 21.10.2014.====  | 
|||
| 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()''.   | 
|||
[[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls.  | 
|||
|  | 
|||
Mājas darba [[LU-LSP-b14:MD3 | MD3]] '''nodošanas''' termiņš.  | 
|||
|-  | 
|||
|  | 
|||
==== 28.10.2014.====  | 
|||
| 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() in free() veiktspējai.  | 
|||
[[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija.  | 
|||
|  | 
|||
'''Uzdots''' [[LU-LSP-b14:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.  | 
|||
|-  | 
|||
|  | 
|||
==== 04.11.2014.====  | 
|||
|  | 
|||
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem.  | 
|||
[[LU-LSP-b14:L08 | Praktiskais darbs #8]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem.  | 
|||
|  | 
|||
'''Uzdots''' [[LU-LSP-b14:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums  | 
|||
|-  | 
|||
|  | 
|||
==== 11.11.2014.====  | 
|||
|  | 
|||
Vidus semestra '''kontroldarbs'''.  | 
|||
[[LU-LSP-b13:LA | Atkļūdošana]]: Linux rīki un to lietošana. Darbs pie mājasdarbiem.  | 
|||
|  | 
|||
Mājas darba [[LU-LSP-b14:MD4 | MD4]] '''nodošanas''' termiņš.  | 
|||
|-  | 
|||
|  | 
|||
==== 18.11.2014.====  | 
|||
|   | 
|||
''Valsts svētki''  | 
|||
|-  | 
|||
|  | 
|||
==== 25.11.2014.====  | 
|||
|  | 
|||
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. getpid() un getppid(). fork().  | 
|||
Daudz-uzdevumu vide. ''wait()'' un ''exec()''. ''system()''.  | 
|||
<!-- [[LU-LSP-b13:L09 | Praktiskais darbs #9]] - steka satura analīze un piekļuve stekam. -->  | 
|||
<!--  | 
|||
Mājas darba [[LU-LSP-b14:MD5 | MD5]] grupu izveidošanas termiņš.  | 
|||
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!  | 
|||
-->  | 
|||
Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra).  | 
|||
[[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.  | 
|||
|  | 
|||
Mājas darba [[LU-LSP-b14:MD5 | MD5]] '''nodošanas''' termiņš.  | 
|||
|-  | 
|||
|  | 
|||
==== 02.12.2014.====  | 
|||
| Serveri, iteratīvie un paralēlie. Klienta programmatūra un tas īpašības. Signāli. Alarm serviss un signāls. Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit().  | 
|||
|  | 
|||
Kursa projekta aktualizācija.  | 
|||
|-  | 
|||
|  | 
|||
==== 09.12.2014.====  | 
|||
| Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).  | 
|||
Diskusija par komunikacijas protokolu izstrādi.  | 
|||
Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus.  | 
|||
<!-- [[LU-LSP-b13:L11 | Praktiskais darbs #11]] - datortīkla klienta programma. -->  | 
|||
<!-- [[LU-LSP-b13:L11 | Praktiskais darbs #11]] - servera programma. -->  | 
|||
|  | 
|||
Termiņš: Kursa projekts: spēles noteikumi, GoogleDoc dokumentā.  | 
|||
|-  | 
|||
|  | 
|||
==== 16.12.2014.====  | 
|||
| Kursa kopsavilkums. Darbs pie [[LU-LSP-b13:projekts | kursa projekta]].   | 
|||
|  | 
|||
Termiņš: Protokola Alfa versija  | 
|||
|-  | 
|||
|  | 
|||
==== 22.12.2014. - 04.01.2015.====  | 
|||
| Ziemassvētku un Jaungada brīvdienas  | 
|||
|  | 
|||
   | 
|||
|-  | 
|||
|  | 
|||
==== 13.01.2014.====  | 
|||
| '''Eksāmens 14:30''' 312. telpā.  | 
|||
Eksāmena forma: projektu demonstrācija (darbība, pirmkods, diskusijas).  | 
|||
|  | 
|||
   | 
|||
|-  | 
|||
|}  | 
|||
== Mājas darbi ==  | 
|||
* [[LU-LSP-b14:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.  | 
|||
* [[LU-LSP-b14:MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.  | 
|||
* MD2 - ''nav uzdots''.  | 
|||
* [[LU-LSP-b14:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.  | 
|||
* [[LU-LSP-b14:MD4 | MD4]]: Atmiņas rezervācijas funkciju salīdzināšana.  | 
|||
* [[LU-LSP-b14:MD5 | MD5]]: Atmiņas fragmentācijas algoritmu novērtējums.  | 
|||
<!-- * [[LU-LSP-b14:MD5 | MD5]]: Procedūru izsaukumu steka izdruka. -->  | 
|||
Eksāmens izpaužas kā [[LU-LSP-b13:projekts | kursa projekta]] aizstāvēšana.  | 
|||
<!--  | 
|||
* MD7 - projekta protokola specifikācija. Skatīt arī [[LU-LSP-b13:PD_client_server | PD: Klienta un servera arhitektūra]]  | 
|||
** [[LU-LSP-b11:PD_client_server | PD: Klienta un servera arhitektūra]] (praktiskā darba piezīmes)  | 
|||
** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi]  | 
|||
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  | 
|||
* [http://www.advancedlinuxprogramming.com/ Advanced Linux Programming] by CodeSourcery LLC,  | 
|||
* "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686  | 
|||
* [[Sublime_Text_cheat_sheet]] - Lieliskā Sublime teksta redaktora taustiņu kombinācijas  | 
|||
== Saites ==  | 
|||
* [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  | 
|||
== 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)]  | 
|||
Revision as of 10:18, 28 January 2015
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3101, meklēt eStudijās.
- Pasniedzējs: Leo Seļāvo (epasts: vards.uzvards @ gmail.com)
 - Vēstkopa komunikācijai par kursa aktualitātēm, uzdevumiem, termiņiem un problēmām:
- Google grupa lu-lsp-b@googlegroups.com Lai pieteiktos, sekot http://groups.google.lv/group/lu-lsp-b un pieslēgties ar savu google kontu, vai arī sūtīt epastu pasniedzējam.
 
 
- Vērtējums = 15% praktiskie darbi, 25% mājas darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).
 
- LSP kursa atsauksmes no iepriekšējiem gadiem.
 
Praktisko un mājas darbu iesniegšana
- 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
 - Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c
 - Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
 
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 | 
|---|---|---|
02.09.2014. | 
 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.) 
  | 
 Uzdots MD0 mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.  | 
09.09.2014. | 
 Vispārīgs pārskats par valodu C. Lasīt C valodas pamācību no Drexel universitātes.  | 
 Uzdots MD1 mājas darbs - dzimtas koks.  | 
16.09.2014. | 
Datu struktūras un algoritmi valodā C. | |
23.09.2014. | 
Darbs ar failiem; sistēmas izsaukumi faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (cat, tail, head, less, cp u.c.). Failu ievada un izvada ātrdarbība, ņemot vērā sistēmas arhitektūru. | |
30.09.2014. | 
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(). | 
 Mājas darba MD1 nodošanas termiņš.  | 
07.10.2014. | 
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().
 Praktiskais darbs #3 - direktoriju koka apstaigāšana.  | 
 Uzdots MD3 mājas darbs - direktoriju koka apstaigāšana.  | 
14.10.2014. | 
 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.  | 
|
21.10.2014. | 
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().
 Praktiskais darbs #5 - setjmp(),longjmp() un taimera signāls.  | 
 Mājas darba MD3 nodošanas termiņš.  | 
28.10.2014. | 
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() in free() veiktspējai.
 Praktiskais darbs #6 - atmiņas rezervācija.  | 
 Uzdots MD4 mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.  | 
04.11.2014. | 
 Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Praktiskais darbs #8 - vienkāršs atmiņas alokators fiksēta izmēra objektiem.  | 
 Uzdots MD5 - atmiņas fragmentācijas algoritmu novērtējums  | 
11.11.2014. | 
 Vidus semestra kontroldarbs. Atkļūdošana: Linux rīki un to lietošana. Darbs pie mājasdarbiem.  | 
 Mājas darba MD4 nodošanas termiņš.  | 
18.11.2014. | 
 Valsts svētki  | |
25.11.2014. | 
 Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda ps. getpid() un getppid(). fork(). Daudz-uzdevumu vide. wait() un exec(). system(). 
 Praktiskais darbs #10 - starpprocesu komunikācija.  | 
 Mājas darba MD5 nodošanas termiņš.  | 
02.12.2014. | 
Serveri, iteratīvie un paralēlie. Klienta programmatūra un tas īpašības. Signāli. Alarm serviss un signāls. Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit(). | 
 Kursa projekta aktualizācija.  | 
09.12.2014. | 
Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock).
 Diskusija par komunikacijas protokolu izstrādi. Praktiskais darbs #9: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus.  | 
 Termiņš: Kursa projekts: spēles noteikumi, GoogleDoc dokumentā.  | 
16.12.2014. | 
Kursa kopsavilkums. Darbs pie kursa projekta. | 
 Termiņš: Protokola Alfa versija  | 
22.12.2014. - 04.01.2015. | 
Ziemassvētku un Jaungada brīvdienas | 
 
  | 
13.01.2014. | 
Eksāmens 14:30 312. telpā.
 Eksāmena forma: projektu demonstrācija (darbība, pirmkods, diskusijas).  | 
 
  | 
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
 
- Advanced Linux Programming by CodeSourcery LLC,
 
- "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
 
- Sublime_Text_cheat_sheet - Lieliskā Sublime teksta redaktora taustiņu kombinācijas
 
Saites
- Bash by Example @ibm/developerworks
 - Intro to Linux kernel
 
- Programming in C: A Tutorial (by Brian W. Kernighan)
 - Gnu make dokumentācija
 - Tipiskas unix direktoriju hierarhijas īss apraksts.
 
- Sockets:
- Programming IP Sockets on Linux (tutorial @ gnosis.cx)
 - Sockets Tutorial @ Linux Howtos
 - Berkeley sockets (Wikipēdija)
 
 
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
 - http://lkml.org/
 - The Linux Kernel Module Programming Guide
 
Programmēšanas analīzes rīki
- PMD - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
 
Linux veiktspējas analīze
- Top 20 Linux monitoring tools @cyberciti
 - 20 rīki Linux veikstpējas monitoringam (IPTraf u.c.) @tecmint
 - CPU analīze
 - Disku I/O analīze
 - IO profiling at Linux programming blog