Difference between revisions of "LU-LSP-b11"

From DiLab
Jump to: navigation, search
('''Linux Sistēmprogrammēšana''')
 
(55 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{LUDFKurss|Linux sistēmu programmēšana|LSP|DatZ3122|2DAT3122}}
{{TocRight}}
='''Linux Sistēmprogrammēšana'''=

[http://selavo.lv/df LU DF] bakalaura studiju kurss.


* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''
* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''
* Asistents: Atis Elsts
* Asistents: Atis Elsts ''(epasts: vards.uzvards @ gmail.com)''

* {{KursiGGroup|lu-lsp-b}}

* Vērtējums = 40% mājas un praktiskie darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).


{{KursiMD|LSP|50%|10%}}


==== '''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
* Vēstkopa - Google grupa [http://groups.google.lv/group/lu-lkp-b lu-lkp-b] Lai pieteiktos, sekot [https://www.google.com/accounts/ServiceLogin?passive=true&hl=en&service=groups2&continue=http%3A%2F%2Fgroups.google.com%2Fgroup%2Flu-lkp-b%2Fsubscribe%3Fnote%3D1&cd=US&ssip=g3 šai saitei] ar savu google kontu.


==== 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:
<small>Vērtējums = 40% mājas un praktiskie darbi, 10% dalība klasē, 20% KD1 un 30% KD2(eksāmens).</small>
* 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.'''
Praktisko un mājas '''darbu iesniegšana''' izpildāma noteiktajos datumos un laikos elektroniski.
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ē".
* Iesniegšanas termiņa laiks ir 30min pirms lekcijas sākuma.
* e-pasta Subj. jānorāda sekojošā formā "'''LSP MD1 Vards Uzvards'''" - piemers MD1 iesniegumam.
* Iesniegto failu vārdam arī jābūt līdzīga formātā, bet ar svītru tukšumu vietā, piemēram: "'''LSP_MD1_Vards_Uzvards.pdf'''"
* Ja iesniedzami vairāki faili, piemēram, programmas pirmkods, tad tie iepriekš arhivējami kā [[LU-LSP:notes#tgz | *.tgz]] arhīvs ar tadu pat faila vārdu kā aprakstīts iepriekš: "'''LSP_MD1_Vards_Uzvards.tgz'''".
* Ja darbs tiek iesniegts ar novēlošanos, rezultāts tiek samazināts par:
** '''50%''' pirmo septiņu dienu laikā pēc termiņa, un
** '''50%''' plus '''10%''' par katru nokavēto dienu septiņas vai vairāk dienas pēc termiņa.




Line 30: Line 43:
! Uzdevumi
! Uzdevumi
|-
|-
| xx.xx.2011.
| 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.)
Ievads Unix un Linux operētājsistēmas un to programmēšanā.

[[LU-LKP-b11:L01 | Lekcijas piezīmes un PD1]]:
[[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]].

[http://jupiter.cs.fmf.lu.lv/~kursi/lsp/1-ievadlekcija.pdf Lekcijas piezīmes] un [[LU-LSP-b11:L01 | praktiskais darbs #1]].
|
|
Uzdots [[LU-LKP-b11:MD0 | MD0]] mājas darbs - Programmēšanas stils.
Uzdots [[LU-LSP-b11:MD#MD0 | MD0]] mājas darbs - programmēšanas stils.
|-
|-
| xx.xx.2011.
| 13.09.2011.
|
|
Vispārīgs pārskats par valodu C.
C elementi, kompilēšana un saites, atmiņas sadalījums procesā. [[LU-LKP-b11:L02 | Lekcijas piezīmes]]

[http://jupiter.cs.fmf.lu.lv/~kursi/lsp/2-valoda-c.pdf Lekcijas piezīmes] un [[LU-LSP-b11:L02 | praktiskais darbs #2]].
|
|
Uzdots [[LU-LKP-b11:MD1 | MD1]] mājas darbs - Ģimenes koks.
Uzdots [[LU-LSP-b11:MD#MD1 | MD1]] mājas darbs.
Termiņš: Pirmdiena, 20. septembris 23.59.
|-
|-
| xx.xx.2011.
| 20.09.2011.
| MD1 risinājums. Datu struktūras un algoritmi, datu tipi, kļūdu analīze, buferizēts un nebuferizēts failu ievads un izvads.
| Mājasdarba #1 analīze. Datu struktūras un algoritmi valodā C. ''Hash'' tabulas.

[http://jupiter.cs.fmf.lu.lv/~kursi/lsp/3-algoritmi.pdf Lekcijas piezīmes] un [[LU-LSP-b11:L03 | praktiskais darbs #3]].
|
|
* '''Jānodod''' [[LU-LKP-b11:MD1 | MD1]].
* '''Jānodod''' [[LU-LSP-b11:MD#MD1 | MD1]].
* Uzdots [[LU-LKP-b11:MD2 | MD2]].
|-
|-
| xx.xx.2011.
| 27.09.2011.
| Failu ievada un izvada ātrdarbība ņemot vēra sistēmas arhitektūru. Sistēmas izsaukumi faila ievadam un izvadam. Ātra "cat" sistēmprogrammas realizācija. Programma, procesi, lietotāja un grupas ID. Signāli. "echo" programmas koda analīze.
| 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/4-failu-io.pdf Lekcijas piezīmes] un [[LU-LSP-b11:L04 | praktiskais darbs #4]].
|
|
* '''Jānodod''' [[LU-LKP-b11:MD2 | MD2]].
* Uzdots [[LU-LSP-b11:MD2#MD2 | MD2]].
|-
|-
| xx.xx.2011.
| 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().
| 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().

[[LU-LSP-b11:L05 | Praktiskais darbs #5]].
|
|
* Uzdots [[LU-LKP-b11:MD3 | MD3]].
'''Jānodod''' [[LU-LSP-b11:MD2#MD2 | MD2]].
|-
|-
| xx.xx.2011.
| 11.10.2011.
| Programma rakstīšanai log failā. Log faili. Ekskluzīva rakstīšana ar open(...O_SYNC) un fcntrl() 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().

[[LU-LSP-b11:L06a | Praktiskais darbs #6a]].
|
|
* '''Jānodod''' [[LU-LKP-b11:MD3 | MD3]].
Uzdots [[LU-LSP-b11:MD3#MD3 | MD3]].
|-
|-
| xx.xx.2011.
| 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.
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.

[[LU-LSP-b11:L07 | Praktiskais darbs #7]].
|
|
* Uzdots [[LU-LKP-b11:MD4 | MD4]]. Procedūru izsaukumu steka izdruka.
|-
|-
| xx.xx.2011.
| 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()''.
| 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''' [[LU-LKP-b11:MD4 | MD4]].
|'''Jānodod''' [[LU-LSP-b11:MD3#MD3 | MD3]].
* Uzdots [[LU-LKP-b11:MD5 | MD5]]. myExit - setjmp() un longjmp() lietojums.
Uzdots [[LU-LSP-b11:MD4#MD4 | MD4]]: Procedūru izsaukumu steka izdruka.
<!--* '''Jānodod''' [[LU-LSP-b11:MD#MD4 | MD4]].-->
|-
|-
| xx.xx.2011.
| 01.11.2011.
| Vidus semestra '''kontroldarbs'''.
| Vidus semestra '''kontroldarbs'''.
[[LU-LSP-b11:L08 | Praktiskais darbs #8]] - steka satura analīze un piekļuve stekam.
|
|
* '''Jānodod''' [[LU-LKP-b11:MD5 | MD5]].
<!--* '''Jānodod''' [[LU-LSP-b11:MD#MD5 | MD5]].-->
|-
|-
| xx.xx.2011.
| 08.11.2011.
| Dinamiska atmiņas izdalīšana. Heap, malloc() un free(). Dienesta informacija pie atmiņas izdalīšanas un atbrīvošanas. Brīvas atmiņas saraksti. Prasības malloc() in free() veiktspējai.
| 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.

|

[[LU-LSP-b11:L09 | Praktiskais darbs #9]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem.
|'''Jānodod''' [[LU-LSP-b11:MD4#MD4 | MD4]].
Uzdots [[LU-LSP-b11:MD5#MD5 | MD5]]: myExit - setjmp() un longjmp() lietojums.
|-
|-
| xx.xx.2011.
| 15.11.2011.
|
|
* Atmiņas fragmentācija. Alokācijas algoritmi kas darbojas uz atmiņas fragmentiem.
* Atmiņas fragmentācija. Alokācijas algoritmi, kas darbojas uz atmiņas fragmentiem.
* Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudzuzdevumu metode. Komanda ps. getpid() un getppid(). fork().
* Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudzuzdevumu metode. Komanda '''ps'''. getpid() un getppid(). fork().

[[LU-LSP-b11:L10 | Praktiskais darbs #10]] - vēlreiz par atmiņas alokāciju.
|
|
* Uzdots [[LU-LKP-b11:MD6 | MD6]]. Atmiņas fragmentācijas algoritmu novērtējums
|-
|-
| xx.xx.2011.
| 22.11.2011.
| Daudz-uzdevumu vide. Wait() un Exec(). System().
| Daudz-uzdevumu vide. ''wait()'' un ''exec()''. ''system()''.

[[LU-LSP-b11:L11 | Praktiskais darbs #11]] - atkļūdošana.
|
|
* '''Jānodod''' [[LU-LKP-b11:MD6| MD6]].
'''Jānodod''' [[LU-LSP-b11:MD5#MD5 | MD5]].

Uzdots [[LU-LSP-b11:MD6#MD6 | MD6]] - atmiņas fragmentācijas algoritmu novērtējums
|-
|-
| xx.xx.2011.
| 29.11.2011.
| 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).
|
|
|-
|-
| xx.xx.2011.
| 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().
| 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.
[[LU-LSP-b11:L12 | Praktiskais darbs #12]] - procesi, starpprocesu komunikācija.
|-
| xx.xx.2011.
| Darbs pie projekta.
|
|
* '''Jānodod''' projekta specifikācija un esseja.
Kursa projekta definēšana.

'''Jānodod''' [[LU-LSP-b11:MD6#MD6| MD6]].
|-
|-
| xx.xx.2011.
| 13.12.2011.
| Pavedieni.
| Pavedieni.

[[LU-LSP-b11:L13 | Praktiskais darbs #13]] - soketi.
|
|
<!--* '''Jānodod''' projekta specifikācija un eseja.-->
|-
|-
| xx.12.2011. - xx.01.2011.
| 20.12.2011.
| Kursa kopsavilkums. Darbs pie [[LU-LSP-b11:projekts | kursa projekta]].

Vienota komunikācijas protokola definēšana kursa projektam.
|
|-
| 24.12.2011. - 01.01.2012.
| Ziemassvētku un Jaungada brīvdienas
| Ziemassvētku un Jaungada brīvdienas
|
&nbsp;
|-
|-
| xx.xx.2012.
| 17.01.2012.
| '''Eksāmens'''
| '''Eksāmens''', 14:30, 312.telpā.
|
&nbsp;
|-
|-
|}
|}


== Lekciju piezīmes ==
== Mājas darbi ==


* [[LU-LKP-b11:L01 | 1. lekcija]]: Ievads Linux operētajsistēmā
* [[LU-LSP-b11:MD#MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.
* [[LU-LKP-b11:L02 | 2. lekcija]]: C elementi, kompilēšana un saites, atmiņas sadalījums procesā.
* [[LU-LSP-b11:MD#MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.
* [[LU-LSP-b11:MD2#MD2 | MD2]]: Datu bāze ģimenes kokam.
* [[LU-LSP-b11:MD3#MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.
* [[LU-LSP-b11:MD4#MD4 | MD4]]: Procedūru izsaukumu steka izdruka.
* [[LU-LSP-b11:MD5#MD5 | MD5]]: Setjmp un longjmp.
* [[LU-LSP-b11:MD6#MD6 | MD6]]. Atmiņas fragmentācijas algoritmu novērtējums


Eksāmens izpaužas kā [[LU-LSP-b11:projekts | kursa projekta]] aizstāvēšana.
== Praktiskie un mājas darbi ==
<!--

* MD7 - projekta protokola specifikācija. Skatīt arī [[LU-LSP-b11:PD_client_server | PD: Klienta un servera arhitektūra]]

** [[LU-LSP-b11:PD_client_server | PD: Klienta un servera arhitektūra]] (praktiskā darba piezīmes)
* MD0: Izlasīt kodēšanas stila dokumentus. Nekas nav jāiesniedz, bet būs diskusija nākamās lekcijas sākumā.
** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi]
** [http://cs.wellesley.edu/~cs249/Resources/coding-standard.html Kodēšanas stila ieteikumi]
-->
** [http://cs.wellesley.edu/~cs249/Resources/LinusCodingStyle.txt Linux kodola kodēšanas stils]

* [[LU-LKP-b11:MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.

* [[LU-LKP-b11:MD2 | MD2]]: Datu bāze ģimenes kokam.

* [[LU-LKP-b11:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.

* [[LU-LKP-b11:MD4 | MD4]]: Procedūru izsaukumu steka izdruka.

* [[LU-LKP-b11:MD5 | MD5]]: Setjmp un longjmp.

* [[LU-LKP-b11:MD6 | MD6]]. Atmiņas fragmentācijas algoritmu novērtējums

* MD7 - projekta protokola specifikācija. Skatīt arī [[LU-LKP-b11:PD_client_server | PD: Klienta un servera arhitektūra]]
** [[LU-LKP-b11:PD_client_server | PD: Klienta un servera arhitektūra]] (praktiskā darba piezīmes)
** [http://selavo.lv/~kursi/lkp/md7 MD7 projekta grupu risinājumi]


== Literatūra ==
== 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)
* 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 Device Drivers," 3rd ed. by J. Corbet, A. Rubini and G. Kroah-Hartman,
** O'Reilly Media, 2005, ISBN 0-596-00590-3, http://lwn.net/Kernel/LDD3/


* "Linux system programming" by Robert Love, O'Reilly Media, 2007, ISBN 0596009585
* "Linux system programming" by Robert Love, O'Reilly Media, 2007, ISBN 0596009585


* [http://www.advancedlinuxprogramming.com/ Advanced Linux Programming] by CodeSourcery LLC,
* "Understanding the Linux Kernel," 3rd ed. by D. P. Bovet and M. Cesati, O'Reilly Media, 2005, ISBN 0-596-00565-2

* "Linux kernel development 3rd ed." by Robert Love, Addison Wesley Professional, ISBN 0672329468


* "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686
* "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686

* "Structure and Interpretation of Computer Programs," second edition Harold Abelson and Gerald Jay Sussman with Julie Sussman ([http://mitpress.mit.edu/sicp/full-text/book/book.html online version])


== Saites ==
== Saites ==


* 2010. gada kurss [[LU-LKP-b11 | Linux kodola programmēšana]]
* 2010. gada kurss [[LU-LKP-B10:index | Linux kodola programmēšana]]

* [http://tuxradar.com/content/how-linux-kernel-works Intro to Linux kernel]


* [http://www.lysator.liu.se/c/bwk-tutor.html Programming in C: A Tutorial] (by Brian W. Kernighan)
* [http://www.lysator.liu.se/c/bwk-tutor.html Programming in C: A Tutorial] (by Brian W. Kernighan)
Line 181: Line 215:


* http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
* http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
* http://www.advancedlinuxprogramming.com/
* http://lkml.org/
* http://lkml.org/
* [http://tldp.org/LDP/lkmpg/2.6/html/index.html The Linux Kernel Module Programming Guide]
* [http://tldp.org/LDP/lkmpg/2.6/html/index.html The Linux Kernel Module Programming Guide]

=== Linux veiktspējas analīze ===
* [http://www.cyberciti.biz/tips/top-linux-monitoring-tools.html Top 10 Linux monitoring tools]
* [http://www.cyberciti.biz/tips/how-do-i-find-out-linux-cpu-utilization.html CPU analīze]
* [http://www.cyberciti.biz/tips/linux-disk-performance-monitoring-howto.html Disku I/O analīze]


== Atziņas ==
== Atziņas ==

Latest revision as of 17:41, 21 December 2011

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ē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.)

UNIX čaulas populārākās komandas un lietojumi.

Lekcijas piezīmes un praktiskais darbs #1.

Uzdots MD0 mājas darbs - programmēšanas stils.

13.09.2011.

Vispārīgs pārskats par valodu C.

Lekcijas piezīmes un praktiskais darbs #2.

Uzdots MD1 mājas darbs.

20.09.2011. Mājasdarba #1 analīze. Datu struktūras un algoritmi valodā C. Hash tabulas.

Lekcijas piezīmes un praktiskais darbs #3.

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.

Lekcijas piezīmes un praktiskais darbs #4.

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().

Praktiskais darbs #5.

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().

Praktiskais darbs #6a.

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.

Praktiskais darbs #7.

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.


Praktiskais darbs #9 - vienkāršs atmiņas alokators fiksēta izmēra objektiem.

Jānodod MD4.

Uzdots MD5: myExit - setjmp() un longjmp() lietojums.

15.11.2011.
  • Atmiņas fragmentācija. Alokācijas algoritmi, kas darbojas uz atmiņas fragmentiem.
  • Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudzuzdevumu metode. Komanda ps. getpid() un getppid(). fork().

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
  • "Building Embedded Linux Systems" O'Reilly Media, 2008, ISBN 0596529686

Saites

Linux veiktspējas analīze

Atziņas