Difference between revisions of "LU-LSP-b12"
Line 135: | Line 135: | ||
|- |
|- |
||
| xx.01.2012. |
| xx.01.2012. |
||
| '''Eksāmens''' |
| '''Eksāmens''' |
||
| |
| |
||
|
|
Revision as of 11:20, 4 September 2012
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
- 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 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 (arī stipri) 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 nekā piecas vai vairāk dienas pēc termiņa.
- Visi mājas darbi jāiesūta līdz kursa beigās noteiktam deadline, vēlāk iesniegtie netiek vērtēti.
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. |
|
xx.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. | |
xx.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. | |
xx.11.2011. |
|
|
xx.11.2011. | Daudz-uzdevumu vide. wait() un exec(). system(). | |
xx.11.2011. | Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra). | |
xx.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. |
xx.12.2011. | Pavedieni. | |
xx.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 |
|
xx.01.2012. | Eksāmens |
|
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