Difference between revisions of "LU-LSP-b12"
Line 45: | Line 45: | ||
[[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]]. |
[[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]]. |
||
[[LU-LSP-b12:L01 | Praktiskais darbs #1]]. |
|||
| |
| |
||
Uzdots [[LU-LSP-b12:MD0 | MD0]] mājas darbs - programmēšanas stils. |
Uzdots [[LU-LSP-b12:MD0 | MD0]] mājas darbs - programmēšanas stils. |
||
Line 53: | Line 53: | ||
Vispārīgs pārskats par valodu C. |
Vispārīgs pārskats par valodu C. |
||
[[LU-LSP-b12:L02 | Praktiskais darbs #2]]. |
|||
| |
| |
||
Uzdots [[LU-LSP-b12:MD1 | MD1]] mājas darbs - dzimtas koks. |
|||
|- |
|- |
||
| |
| 18.09.2011. |
||
| Datu struktūras un algoritmi valodā C. ''Hash'' tabulas. |
| Datu struktūras un algoritmi valodā C. ''Hash'' tabulas. |
||
| |
| |
||
|- |
|- |
||
| |
| 25.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. |
| 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. |
||
| |
| |
||
Mājas darba [[LU-LSP-b12:MD1 | MD1]] nodošanas termiņš. |
|||
|- |
|- |
||
| xx.10.2011. |
| xx.10.2011. |
||
Line 144: | Line 147: | ||
* [[LU-LSP-b12:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus. |
* [[LU-LSP-b12:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus. |
||
⚫ | |||
⚫ | |||
<!-- |
<!-- |
||
⚫ | |||
* [[LU-LSP-b12:MD2 | MD2]]: Datu bāze ģimenes kokam. |
* [[LU-LSP-b12:MD2 | MD2]]: Datu bāze ģimenes kokam. |
||
* [[LU-LSP-b12:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā. |
* [[LU-LSP-b12:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā. |
||
Line 161: | Line 161: | ||
** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi] |
** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi] |
||
--> |
--> |
||
⚫ | |||
== Literatūra == |
== Literatūra == |
Revision as of 12:37, 11 September 2012
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3069, 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, nevis vēstules tekstā
- 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% par ik dienu pirmo piecu dienu laikā pēc termiņa, un
- 50% 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. |
Uzdots MD1 mājas darbs - dzimtas koks. |
18.09.2011. | Datu struktūras un algoritmi valodā C. Hash tabulas. | |
25.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. |
Mājas darba MD1 nodošanas termiņš. |
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
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