LU-LSP-b11
Linux sistēmu 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 = 40% mājas un praktiskie darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).
Praktisko un mājas darbu iesniegšana izpildāma noteiktajos datumos un laikos elektroniski, e-studijās.
- Iesniegšanas termiņa laiks ir 30 minūtes pirms lekcijas sākuma.
- Iesniegto failu vārdam jābūt sekojošā formātā, ar _svītru tukšumu vietā, piemēram: "LSP_MD1_Vards_Uzvards.pdf"
- Ja iesniedzams teksts, piemēram, eseja vai apraksts, tad failam jābūt PDF formātā, ja vien nav prasīts citādi uzdevuma nosacījumos.
- Ja iesniedzami vairāki faili, piemēram, programmas pirmkods, tad tie iepriekš arhivējami kā *.zip arhīvs ar tādu pat faila vārdu kā aprakstīts iepriekš: "LSP_MD1_Vards_Uzvards.zip".
- Ja darbs tiek iesniegts ar novēlošanos, rezultāts tiek samazināts par 50%. Ja darbs iesniegts vairāk kā nedēļu pēc termiņa, pasniedzējs darbu var nepieņemt.
Precizēti praktisko darbu vērtēšanas kritēriji
- No kursa kopējā vērtējuma 20% var saņemt par praktiskajiem darbiem
- 50% no šiem 20% - par piedalīšanos (sava risinājuma iesūtīšanu). Ietilpst tajos 10% no kursa kopējā vērtējuma, kas ir “dalība klasē”
- 50% - par izpildes kvalitāti. Ietilpst tajos 40% no kursa kopējā vērtējuma, kas ir “par MD un PD”
Līdz ar to, par mājasdarbiem kopā tiek saņemts 30% no kursa kopējā vērtējuma
Praktisko darbu iesūtīšanas termiņi
- Lekcijas beigās risinājums tiek apskatīts publiski!
- Praktiskos darbos drīkst nepildīt klasē, bet:
- Par novēlotu iesūtīšanu (lekcijas laikā): -25% no vērtējuma
- Par novēlotu iesūtīšanu (tajā pašā vakarā): -50% no vērtējuma
- “vakars” tiek definēts līdz 5:00 nākošās dienas rītā
Piemērs:
- Students iesniedz savu, par 80% pareizu uzdevuma risinājumu PD nodarbības pēdējā minūtē
- Saņem 100%/100% par piedalīšanos un 80% * (0.75) = 60% par darba kvalitāti
- Kopā saņem 1.6 no 2 punktiem par attiecīgo PD
Precizēti noteikumi ir definēti un ir spēkā, sākot no kursa trešās (20. septembra) lekcijas. Par pirms tam pildītiem PD šajā kopvērtējumā punkti netiek skaitīti, taču par to izpildi var saņemt + punktus par "dalību klasē".
Kalendārs
Datums, nedēļa | Kursa saturs | Uzdevumi |
---|---|---|
06.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. |
13.09.2011. |
Vispārīgs pārskats par valodu C. |
Uzdots MD1 mājas darbs. |
20.09.2011. | Mājasdarba #1 analīze. Datu struktūras un algoritmi valodā C. Hash tabulas. |
|
27.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. |
|
04.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(). |
Jānodod MD2. |
11.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(). |
Uzdots MD3. |
18.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().
Praktiskais darbs netiek uzdots (drīkst strādāt pie mājasdarbiem un gatavoties kontroldarbam). |
Jānodod MD3.
Uzdots MD4: Procedūru izsaukumu steka izdruka. |
01.11.2011. | Vidus semestra kontroldarbs.
Praktiskais darbs #8 - steka satura analīze un piekļuve stekam. |
|
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.
|
Jānodod MD4.
Uzdots MD5: myExit - setjmp() un longjmp() lietojums. |
15.11.2011. |
Praktiskais darbs #10 - vēlreiz par atmiņas alokāciju. |
|
22.11.2011. | Daudz-uzdevumu vide. wait() un exec(). system().
Praktiskais darbs #11 - atkļūdošana. |
Jānodod MD5. Uzdots MD6 - atmiņas fragmentācijas algoritmu novērtējums |
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().
Praktiskais darbs #12 - procesi, starpprocesu komunikācija. |
Kursa projekta definēšana. Jānodod MD6. |
13.12.2011. | Pavedieni.
Praktiskais darbs #13 - soketi. |
|
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.
- MD1: Ģimenes koka ģenerēšanas programma.
- MD2: Datu bāze ģimenes kokam.
- MD3: Vienādo failu meklēšana direktorijas kokā.
- MD4: Procedūru izsaukumu steka izdruka.
- MD5: Setjmp un longjmp.
- MD6. Atmiņas fragmentācijas algoritmu novērtējums
Eksāmens izpaužas kā kursa projekta aizstāvēšana.
Literatūra
- Advanced Programming in the UNIX(R) Envoronment, 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
- 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