Difference between revisions of "LU-LSP-b14"
(→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 |
|||
| |
|||
|
|||
|- |
|||
| |
|||
==== xx.01.2014.==== |
|||
| '''Eksāmens xx:xx''' 312. telpā. |
|||
| |
|||
|
|||
|- |
|||
|} |
|||
== 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 12:36, 15 September 2014
Redirect to: