Difference between revisions of "LU-LSP-b13"
(31 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{LUDFKurss|Linux sistēmas programmēšana|LSP| |
{{LUDFKurss|Linux sistēmas programmēšana|LSP|DatZ3101|2DAT3122}} |
||
* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)'' |
* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)'' |
||
* Asistents: Atis Elsts ''(epasts: vards.uzvards @ gmail.com)'' |
* Asistents: Atis Elsts ''(epasts: vards.uzvards @ gmail.com)'' |
||
* {{KursiGGroup|lu-lsp-b}} |
* {{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). |
* 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 ==== |
==== Praktisko un mājas darbu iesniegšana ==== |
||
Line 28: | Line 30: | ||
** '''50%''' piecas vai vairāk dienas pēc termiņa. |
** '''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. |
** Visi mājas darbi jāiesūta līdz kursa beigās noteiktam ''deadline'', vēlāk iesniegtie netiek vērtēti. |
||
** 2013./14. m.g. pēdējā diena MD iesniegšanai ir '''17. janvāris.''' |
|||
Line 41: | Line 44: | ||
| 03.09.2013. |
| 03.09.2013. |
||
| |
| |
||
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.) |
Virtuāla lekcija. 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-b13:L01 | Praktiskais darbs #1]]. |
|||
--> |
|||
| |
| |
||
Uzdots [[LU-LSP- |
Uzdots [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos. |
||
|- |
|- |
||
| 10.09.2013. |
| 10.09.2013. |
||
| |
| |
||
Vispārīgs pārskats par valodu C. |
Virtuāla lekcija. 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- |
'''Uzdots''' [[LU-LSP-b:MD1 | MD1]] mājas darbs - dzimtas koks. |
||
|- |
|- |
||
| 17.09.2013. |
| 17.09.2013. |
||
| Datu struktūras un algoritmi valodā C. |
| Datu struktūras un algoritmi valodā C. |
||
[http://jupiter.cs.fmf.lu.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Lekcijas piezīmes] |
|||
Darbs pie MD1 |
|||
⚫ | |||
| |
| |
||
|- |
|- |
||
Line 66: | Line 78: | ||
| 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. |
||
[http://jupiter.cs.fmf.lu.lv/~kursi/lsp/2-faili.pdf Lekcijas piezīmes] |
|||
⚫ | |||
⚫ | |||
⚫ | |||
[[LU-LSP-b13:L02 | Praktiskais darbs #2]]. |
|||
⚫ | |||
<!-- |
|||
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze. --> |
|||
|- |
|- |
||
| 01.10.2013. |
| 01.10.2013. |
||
| 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(). |
| 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(). |
||
⚫ | |||
| |
| |
||
⚫ | |||
|- |
|- |
||
| 08.10.2013. |
| 08.10.2013. |
||
| 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(). |
| 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://jupiter.cs.fmf.lu.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- |
<!--Mājas darba [[LU-LSP-b:MD2 | MD2]] '''nodošanas''' termiņš. --> |
||
'''Uzdots''' [[LU-LSP- |
'''Uzdots''' [[LU-LSP-b:MD3-2013 | MD3]] mājas darbs - direktoriju koka apstaigāšana. |
||
|- |
|- |
||
| 15.10.2013. |
| 15.10.2013. |
||
Line 91: | Line 106: | ||
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. |
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. |
||
⚫ | |||
Praktiskā darba PD5 un iepriekšējo pārskats. Darbs pie MD3. |
|||
| |
| |
||
|- |
|- |
||
Line 97: | Line 112: | ||
| 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()''. |
| 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: |
[[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls. |
||
| |
| |
||
Mājas darba [[LU-LSP- |
Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš. |
||
'''Uzdots''' [[LU-LSP- |
<!-- '''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - setjmp() un longjmp() lietojums. --> |
||
|- |
|- |
||
| 29.10.2013. |
| 29.10.2013. |
||
Line 107: | Line 122: | ||
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. |
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. |
||
[[LU-LSP-b13: |
[[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija. |
||
| |
| |
||
'''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums. |
|||
|- |
|- |
||
| 05.11.2013. |
| 05.11.2013. |
||
Line 114: | Line 131: | ||
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. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. getpid() un getppid(). fork(). |
||
Apspriede par iepriekšējo PD risinājumiem. |
|||
⚫ | |||
⚫ | |||
| |
| |
||
Mājas darba [[LU-LSP- |
Mājas darba [[LU-LSP-b:MD4 | MD4]] '''nodošanas''' termiņš. |
||
'''Uzdots''' [[LU-LSP- |
'''Uzdots''' [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums |
||
|- |
|- |
||
| 12.11.2013. |
| 12.11.2013. |
||
Line 124: | Line 143: | ||
Vidus semestra '''kontroldarbs'''. |
Vidus semestra '''kontroldarbs'''. |
||
[[LU-LSP-b13:LA | Atkļūdošana]]: Linux rīki un to lietošana. Darbs pie mājasdarbiem. |
|||
| |
| |
||
⚫ | |||
|- |
|- |
||
| 19.11.2013. |
| 19.11.2013. |
||
Line 133: | Line 151: | ||
[[LU-LSP-b13:L09 | Praktiskais darbs #9]] - steka satura analīze un piekļuve stekam. |
[[LU-LSP-b13:L09 | Praktiskais darbs #9]] - steka satura analīze un piekļuve stekam. |
||
| |
| |
||
⚫ | |||
Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem! |
|||
|- |
|- |
||
| 26.11.2013. |
| 26.11.2013. |
||
| Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra). |
| Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra). |
||
⚫ | |||
| |
| |
||
Mājas darba [[LU-LSP- |
Mājas darba [[LU-LSP-b:MD5 | MD5]] '''nodošanas''' termiņš. |
||
|- |
|- |
||
| 03.12.2013. |
| 03.12.2013. |
||
| 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(). |
| 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. |
Kursa projekta definēšana. --> |
||
|- |
|- |
||
Line 150: | Line 173: | ||
| Pavedieni. |
| Pavedieni. |
||
[[LU-LSP-b13:L11 | Praktiskais darbs #11]] - |
[[LU-LSP-b13:L11 | Praktiskais darbs #11]] - datortīkla klienta programma. |
||
⚫ | |||
| |
| |
||
|- |
|- |
||
Line 164: | Line 189: | ||
|
|
||
|- |
|- |
||
| |
| 21.01.2013. |
||
| '''Eksāmens |
| '''Eksāmens 14:30''' 312. telpā. |
||
| |
| |
||
|
|
||
Line 173: | Line 198: | ||
== Mājas darbi == |
== Mājas darbi == |
||
* [[LU-LSP- |
* [[LU-LSP-b:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus. |
||
* [[LU-LSP- |
* [[LU-LSP-b:MD1 | MD1]]: Ģimenes koka ģenerēšanas programma. |
||
* [[LU-LSP- |
* [[LU-LSP-b:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā. |
||
* [[LU-LSP- |
* [[LU-LSP-b:MD4 | MD4]]: Atmiņas rezervācijas funkciju salīdzināšana. |
||
* [[LU-LSP- |
* [[LU-LSP-b:MD5 | MD5]]: Atmiņas fragmentācijas algoritmu novērtējums. |
||
* [[LU-LSP-b13:MD5 | MD5]]: Atmiņas fragmentācijas algoritmu novērtējums. |
|||
<!-- * [[LU-LSP- |
<!-- * [[LU-LSP-b:MD5 | MD5]]: Procedūru izsaukumu steka izdruka. --> |
||
Latest revision as of 17:41, 10 May 2014
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)
- 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).
- LSP kursa atsauksmes no iepriekšējiem gadiem.
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", 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.
- 2013./14. m.g. pēdējā diena MD iesniegšanai ir 17. janvāris.
Kalendārs
Datums, nedēļa | Kursa saturs | Uzdevumi |
---|---|---|
03.09.2013. |
Virtuāla lekcija. 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. |
10.09.2013. |
Virtuāla lekcija. 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. |
17.09.2013. | Datu struktūras un algoritmi valodā C. | |
24.09.2013. | 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. | |
01.10.2013. | 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ņš. |
08.10.2013. | 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. |
15.10.2013. |
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. |
|
22.10.2013. | 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ņš. |
29.10.2013. | 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.
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Praktiskais darbs #6 - atmiņas rezervācija. |
Uzdots MD4 mājas darbs - atmiņas rezervācijas funkciju salīdzinājums. |
05.11.2013. |
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda ps. getpid() un getppid(). fork(). Apspriede par iepriekšējo PD risinājumiem. |
Mājas darba MD4 nodošanas termiņš. Uzdots MD5 - atmiņas fragmentācijas algoritmu novērtējums |
12.11.2013. |
Vidus semestra kontroldarbs. Atkļūdošana: Linux rīki un to lietošana. Darbs pie mājasdarbiem. |
|
19.11.2013. | Daudz-uzdevumu vide. wait() un exec(). system().
Praktiskais darbs #9 - steka satura analīze un piekļuve stekam. |
Mājas darba MD5 grupu izveidošanas termiņš. Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem! |
26.11.2013. | Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra).
Praktiskais darbs #10 - starpprocesu komunikācija. |
Mājas darba MD5 nodošanas termiņš. |
03.12.2013. | 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(). | |
10.12.2013. | Pavedieni.
Praktiskais darbs #11 - datortīkla klienta programma. |
|
17.12.2013. | Kursa kopsavilkums. Darbs pie kursa projekta.
Vienota komunikācijas protokola definēšana kursa projektam. |
|
23.12.2013. - 01.01.2014. | Ziemassvētku un Jaungada brīvdienas |
|
21.01.2013. | Eksāmens 14:30 312. telpā. |
|
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
- MD1: Ģimenes koka ģenerēšanas programma.
- 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.
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
- 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