Difference between revisions of "LU-LSP-b11"
 (→Kalendārs)  | 
				|||
| Line 30: | Line 30: | ||
| 13.09.2011.   | 
  | 13.09.2011.   | 
||
|   | 
  |   | 
||
C elementi, kompilēšana un saites, atmiņas sadalījums procesā. [[LU-LSP-b11:L02 | Lekcijas piezīmes]]  | 
  C elementi, kompilēšana un saites, atmiņas sadalījums procesā. [[LU-LSP-b11:L02 | Lekcijas piezīmes un praktiskais darbs]]  | 
||
|  | 
  |  | 
||
Uzdots [[LU-LSP-b11:MD#MD1 | MD1]] mājas darbs.  | 
  <!--Uzdots [[LU-LSP-b11:MD#MD1 | MD1]] mājas darbs.-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.   | 
  | xx.xx.2011.   | 
||
|  | 
  | Datu struktūras un algoritmi, datu tipi, kļūdu analīze, buferizēts un nebuferizēts failu ievads un izvads.   | 
||
|  | 
  |  | 
||
<!--  | 
|||
* '''Jānodod''' [[LU-LSP-b11:MD#MD1 | MD1]].  | 
  * '''Jānodod''' [[LU-LSP-b11:MD#MD1 | MD1]].  | 
||
* Uzdots [[LU-LSP-b11:MD#MD2 | MD2]].  | 
  * Uzdots [[LU-LSP-b11:MD#MD2 | MD2]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.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.  | 
  | 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.  | 
||
|  | 
  |  | 
||
* '''Jānodod''' [[LU-LSP-b11:MD#MD2 | MD2]].  | 
  <!--* '''Jānodod''' [[LU-LSP-b11:MD#MD2 | MD2]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.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().  | 
||
|  | 
  |  | 
||
* Uzdots [[LU-LSP-b11:MD#MD3 | MD3]].  | 
  <!--* Uzdots [[LU-LSP-b11:MD#MD3 | MD3]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.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 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().  | 
||
|  | 
  |  | 
||
* '''Jānodod''' [[LU-LSP-b11:MD#MD3 | MD3]].  | 
  <!--* '''Jānodod''' [[LU-LSP-b11:MD#MD3 | MD3]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Line 59: | Line 60: | ||
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.  | 
||
|  | 
  |  | 
||
* Uzdots [[LU-LSP-b11:MD#MD4 | MD4]]. Procedūru izsaukumu steka izdruka.  | 
  <!--* Uzdots [[LU-LSP-b11:MD#MD4 | MD4]]. Procedūru izsaukumu steka izdruka.  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.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()''.   | 
||
|  | 
  |  | 
||
* '''Jānodod''' [[LU-LSP-b11:MD#MD4 | MD4]].  | 
  <!--* '''Jānodod''' [[LU-LSP-b11:MD#MD4 | MD4]].  | 
||
* Uzdots [[LU-LSP-b11:MD#MD5 | MD5]]. myExit - setjmp() un longjmp() lietojums.  | 
  * Uzdots [[LU-LSP-b11:MD#MD5 | MD5]]. myExit - setjmp() un longjmp() lietojums.-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Vidus semestra '''kontroldarbs'''.  | 
  | Vidus semestra '''kontroldarbs'''.  | 
||
|  | 
  |  | 
||
* '''Jānodod''' [[LU-LSP-b11:MD#MD5 | MD5]].  | 
  <!--* '''Jānodod''' [[LU-LSP-b11:MD#MD5 | MD5]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Line 81: | Line 82: | ||
* 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().  | 
||
|  | 
  |  | 
||
* Uzdots [[LU-LSP-b11:MD#MD6 | MD6]]. Atmiņas fragmentācijas algoritmu novērtējums  | 
  <!--* Uzdots [[LU-LSP-b11:MD#MD6 | MD6]]. Atmiņas fragmentācijas algoritmu novērtējums-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Daudz-uzdevumu vide. Wait() un Exec(). System().  | 
  | Daudz-uzdevumu vide. Wait() un Exec(). System().  | 
||
|  | 
  |  | 
||
* '''Jānodod''' [[LU-LSP-b11:MD#MD6| MD6]].  | 
  <!--* '''Jānodod''' [[LU-LSP-b11:MD#MD6| MD6]].-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Line 99: | Line 100: | ||
| Darbs pie projekta.  | 
  | Darbs pie projekta.  | 
||
|  | 
  |  | 
||
* '''Jānodod''' projekta specifikācija un   | 
  <!--* '''Jānodod''' projekta specifikācija un eseja.-->  | 
||
|-  | 
  |-  | 
||
| xx.xx.2011.  | 
  | xx.xx.2011.  | 
||
| Line 107: | Line 108: | ||
| 24.12.2011. - 01.01.2012.  | 
  | 24.12.2011. - 01.01.2012.  | 
||
| Ziemassvētku un Jaungada brīvdienas  | 
  | Ziemassvētku un Jaungada brīvdienas  | 
||
|  | 
|||
   | 
|||
|-  | 
  |-  | 
||
| xx.01.2012.  | 
  | xx.01.2012.  | 
||
| '''Eksāmens'''   | 
  | '''Eksāmens'''   | 
||
|  | 
|||
   | 
|||
|-  | 
  |-  | 
||
|}  | 
  |}  | 
||
| Line 122: | Line 127: | ||
* [[LU-LSP-b11:MD#MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.  | 
  * [[LU-LSP-b11:MD#MD0 | MD0]]: Izlasīt kodēšanas stila dokumentus.  | 
||
<!--  | 
|||
* [[LU-LSP-b11:MD#MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.  | 
  * [[LU-LSP-b11:MD#MD1 | MD1]]: Ģimenes koka ģenerēšanas programma.  | 
||
| Line 138: | Line 143: | ||
** [[LU-LSP-b11:PD_client_server | PD: Klienta un servera arhitektūra]] (praktiskā darba piezīmes)  | 
  ** [[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]  | 
  ** [http://selavo.lv/~kursi/LSP/md7 MD7 projekta grupu risinājumi]  | 
||
-->  | 
|||
== Literatūra ==  | 
  == Literatūra ==  | 
||
Revision as of 22:18, 12 September 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ē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 = 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.
 
Kalendārs
| Datums, nedēļa | Kursa saturs | Uzdevumi | 
|---|---|---|
| 06.09.2011. | 
 Ievads Unix un Linux operētājsistēmās un to programmēšanā. UNIX čaulas populārākās komandas un lietojumi. Lekcijas piezīmes un PD1.  | 
 Uzdots MD0 mājas darbs - programmēšanas stils.  | 
| 13.09.2011. | 
 C elementi, kompilēšana un saites, atmiņas sadalījums procesā. Lekcijas piezīmes un praktiskais darbs  | 
|
| xx.xx.2011. | Datu struktūras un algoritmi, datu tipi, kļūdu analīze, buferizēts un nebuferizēts failu ievads un izvads. | |
| xx.xx.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. | |
| xx.xx.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.xx.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(). | |
| xx.xx.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.xx.2011. | Vidus semestra kontroldarbs. | |
| xx.xx.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. | |
| xx.xx.2011. | 
  | 
|
| xx.xx.2011. | Daudz-uzdevumu vide. Wait() un Exec(). System(). | |
| xx.xx.2011. | Klienta un servera arhitektūra. Sockets. Komunikācija starp nesaistītiem procesiem. Daudzlietotāju sistēmas (spēles) arhitektūra). | |
| xx.xx.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.xx.2011. | Darbs pie projekta. | |
| xx.xx.2011. | Pavedieni. | |
| 24.12.2011. - 01.01.2012. | Ziemassvētku un Jaungada brīvdienas | 
 
  | 
| xx.01.2012. | Eksāmens | 
 
  | 
Lekciju piezīmes
- 1. lekcija: Ievads Linux operētajsistēmā
 - 2. lekcija: C elementi, kompilēšana un saites, atmiņas sadalījums procesā.
 
Praktiskie un mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
 
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 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
 
- "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
 
- "Structure and Interpretation of Computer Programs," second edition Harold Abelson and Gerald Jay Sussman with Julie Sussman (online version)
 
- Advanced Linux Programming by CodeSourcery LLC,
 
Saites
- 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://www.advancedlinuxprogramming.com/
 - http://lkml.org/
 - The Linux Kernel Module Programming Guide
 
Atziņas
- Teach yourself programming in 10 years by Peter Norvig