Difference between revisions of "LU-LSP-b14"

From DiLab
Jump to: navigation, search
(09.12.2014.)
(Redirecting to LU-LSP-b)
Line 1: Line 1:
#REDIRECT [[LU-LSP-b]]
{{LUDFKurss|Linux sistēmas programmēšana|LSP|DatZ3101|2DAT3122}}

* Pasniedzējs: Leo Seļāvo ''(epasts: vards.uzvards @ gmail.com)''
* Asistents: TBA
* {{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).

* [[LSP kursa atsauksmes]] no iepriekšējiem gadiem.


==== Praktisko un mājas darbu iesniegšana ====
* 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 ====
* 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 iesūtīti darbi var tikt laboti, bet netiek vērtēti.
-->

==== Mājas darbu vērtēšanas kritēriji ====
* 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.
** Divas nedēļas pēc termiņa darbi vairs netiek pieņemti.


== Kalendārs ==

{| border=1 cellspacing=0 cellpadding=4
|-
! Datums, nedēļa
! Kursa saturs
! Uzdevumi
|-
|
==== 02.09.2014. ====
|
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-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]].

|
Uzdots [[LU-LSP-b:MD0 | MD0]] mājas darbs - programmēšanas stils - izlasīt un ņemt vērā turpmākajos darbos.
|-
|

==== 09.09.2014. ====
|
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-b:MD1 | MD1]] mājas darbs - dzimtas koks.
|-
|

==== 16.09.2014. ====
| Datu struktūras un algoritmi valodā C.

[http://selavo.lv/~kursi/lsp/1-apvienota-ievadlekcija.pdf Lekcijas piezīmes: apvienota ievadlekcija]

[[LU-LSP-b13:L01 | Praktiskais darbs #1]]

|
|-
|

==== 23.09.2014. ====
| 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://selavo.lv/~kursi/lsp/2-faili.pdf Lekcijas piezīmes: faili]

<!--
[http://selavo.lv/~kursi/lsp/2-valoda-c.pdf Lekcijas piezīmes: valoda-c]
[http://selavo.lv/~kursi/lsp/3-algoritmi.pdf Lekcijas piezīmes: algoritmi]
-->

[[LU-LSP-b13:L02 | Praktiskais darbs #2]].
|
<!--
'''Uzdots''' [[LU-LSP-b:MD2 | MD2]] mājas darbs - datubāze.
-->
|-
|

==== 30.09.2014.====
| 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 [[LU-LSP-b:MD1 | MD1]] '''nodošanas''' termiņš.
|-
|

==== 07.10.2014.====
| 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://selavo.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-b:MD2 | MD2]] '''nodošanas''' termiņš. -->
<!--'''Uzdots''' [[LU-LSP-b:MD3-2013 | MD3]] mājas darbs - direktoriju koka apstaigāšana.-->
|-
|

==== 14.10.2014.====
|
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-b13:L04 | Praktiskais darbs #4]].
|
|-
|

==== 21.10.2014.====
| 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:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls.
|

<!--Mājas darba [[LU-LSP-b:MD3 | MD3]] '''nodošanas''' termiņš.-->
<!-- '''Uzdots''' [[LU-LSP-b:MD4 | MD4]] mājas darbs - setjmp() un longjmp() lietojums. -->
|-
|

==== 28.10.2014.====
| 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.

[[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.-->
|-
|

==== 04.11.2014.====
|
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni. Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. getpid() un getppid(). fork().

<!--[[LU-LSP-b13:L08 | Praktiskais darbs #8]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem.-->

|
<!-- Mājas darba [[LU-LSP-b:MD4 | MD4]] '''nodošanas''' termiņš.-->

<!-- '''Uzdots''' [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums -->
|-
|

==== 11.11.2014.====
|
Vidus semestra '''kontroldarbs'''.

[[LU-LSP-b13:LA | Atkļūdošana]]: Linux rīki un to lietošana. Darbs pie mājasdarbiem.
|
|-
|
==== 18.11.2014.====
| Daudz-uzdevumu vide. ''wait()'' un ''exec()''. ''system()''.

[[LU-LSP-b13:L09 | Praktiskais darbs #9]] - steka satura analīze un piekļuve stekam.
|
<!--
Mājas darba [[LU-LSP-b:MD5 | MD5]] grupu izveidošanas termiņš.

Katra grupa: lūdzu atsūtiet vienu e-pastu ar paredzamajiem dalībniekiem!
-->
|-
|

==== 25.11.2014.====
| Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra).

[[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija.
|
<!--Mājas darba [[LU-LSP-b:MD5 | MD5]] '''nodošanas''' termiņš.-->
|-
|

==== 02.12.2014.====
| 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. -->

|-
|
==== 09.12.2014.====
| Pavedieni.

<!-- [[LU-LSP-b13:L11 | Praktiskais darbs #11]] - datortīkla klienta programma. -->
[[LU-LSP-b13:L11 | Praktiskais darbs #11]] - servera programma.
|
|-
|

==== 16.12.2014.====
| Kursa kopsavilkums. Darbs pie [[LU-LSP-b13:projekts | kursa projekta]].

Vienota komunikācijas protokola definēšana kursa projektam.
|
|-
|
==== 22.12.2014. - 04.01.2015.====
| Ziemassvētku un Jaungada brīvdienas
|
&nbsp;
|-
|
==== xx.01.2014.====
| '''Eksāmens xx:xx''' 312. telpā.
|
&nbsp;
|-
|}

== Mājas darbi ==

* [[LU-LSP-b:MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.
* [[LU-LSP-b:MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.
* [[LU-LSP-b:MD3 | MD3]]: Vienādo failu meklēšana direktorijas kokā.
* [[LU-LSP-b:MD4 | MD4]]: Atmiņas rezervācijas funkciju salīdzināšana.
* [[LU-LSP-b:MD5 | MD5]]: Atmiņas fragmentācijas algoritmu novērtējums.

<!-- * [[LU-LSP-b:MD5 | MD5]]: Procedūru izsaukumu steka izdruka. -->


Eksāmens izpaužas kā [[LU-LSP-b13:projekts | kursa projekta]] aizstāvēšana.
<!--
* MD7 - projekta protokola specifikācija. Skatīt arī [[LU-LSP-b13: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)
** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi]

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

* [http://www.advancedlinuxprogramming.com/ Advanced Linux Programming] by CodeSourcery LLC,

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

== Saites ==

* [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.gnu.org/software/make/manual/make.html Gnu make] dokumentācija
* [http://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard Tipiskas unix direktoriju hierarhijas] īss apraksts.

* Sockets:
** [http://gnosis.cx/publish/programming/sockets.html Programming IP Sockets on Linux] (tutorial)
** [http://en.wikipedia.org/wiki/Berkeley_sockets Berkeley sockets] (Wikipēdija)

* http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
* http://lkml.org/
* [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 ==
* [http://norvig.com/21-days.html Teach yourself programming in 10 years] by Peter Norvig

Revision as of 13:36, 15 September 2014

Redirect to: