LU-LSP-b12
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)
 - Asistents: Atis Elsts (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).
 
Praktisko un mājas darbu iesniegšana
- Darbi jāiesniedz uz kursa asistenta e-pastu: vards.uzvards@gmail.com
 - Darbi jāiesniedz kā pielikums e-pasta vēstulei
 - E-pasta tēmai jābūt formā "LSP MD1 Vārds Uzvārds" vai "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
- No kursa kopējā vērtējuma 15% var saņemt par praktisko darbu kvalitatīvu izpildīšanu
 - Papildus par prakstiskajiem darbiem saņem plusiņus, kas ietilpst 10% no kopējā vērtējuma "par darbu klasē". Tie pienākas ikvienam, kas iesniedz PD 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 izlaboti, bet netiek vērtēti.
 
Mājas darbu vērtēšanas kritēriji
- No kursa kopējā vērtējuma 25% veido mājas darbi
 - 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% dienā pirmo piecu dienu laikā pēc termiņa, un
 - 50% vēlāk piecas vai vairāk dienas pēc termiņa.
 
 
Kalendārs
| Datums, nedēļa | Kursa saturs | Uzdevumi | 
|---|---|---|
| 04.09.2011. | 
 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.  | 
| 11.09.2011. | 
 Vispārīgs pārskats par valodu C.  | 
|
| xx.09.2011. | Datu struktūras un algoritmi valodā C. Hash tabulas. | |
| xx.09.2011. | 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. | |
| xx.10.2011. | 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-nodes. Sistēmas izsaukums stat(). Direktoriju struktūra. Izsaukumi opendir(), readdir() un closedir(). | |
| xx.10.2011. | 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(). | |
| xx.10.2011. | 
 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.  | 
|
| 25.10.2011. | 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(). | |
| xx.11.2011. | Vidus semestra kontroldarbs. | |
| 08.11.2011. | 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. | |
| 15.11.2011. | 
  | 
|
| 22.11.2011. | Daudz-uzdevumu vide. wait() un exec(). system(). | |
| 29.11.2011. | Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra). | |
| 06.12.2011. | 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 definēšana.  | 
| 13.12.2011. | Pavedieni. | |
| 20.12.2011. | Kursa kopsavilkums. Darbs pie  kursa projekta.
 Vienota komunikācijas protokola definēšana kursa projektam.  | 
|
| 24.12.2011. - 01.01.2012. | Ziemassvētku un Jaungada brīvdienas | 
 
  | 
| 17.01.2012. | Eksāmens, 14:30, 312.telpā. | 
 
  | 
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
 
Eksāmens izpaužas kā kursa projekta aizstāvēšana.
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
 
Saites
- 2011. gada kurss Linux sistēmas programmēšana
 
- 2010. gada kurss Linux kodola programmēšana
 
- 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)
 - Berkeley sockets (Wikipēdija)
 
 
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
 - http://lkml.org/
 - The Linux Kernel Module Programming Guide
 
Linux veiktspējas analīze
Atziņas
- Teach yourself programming in 10 years by Peter Norvig