LU-LSP-b: Difference between revisions
Jump to navigation
Jump to search
Content deleted Content added
| Line 46: | Line 46: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
====08.02.21==== |
||
08:30 |
08:30 |
||
| |
| |
||
| Line 64: | Line 64: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
... |
|||
====06.02.20==== |
|||
14:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD0] Praktiskais darbs #0: |
|||
* Iekārtot darba vidi (linux, teksta redaktors, kompilators) |
|||
* izveidot un pašiem nokompilēt ""Hello world"" C valodā |
|||
* Iepazīties ar shell komandām un uzdot jautājumus par neskaidrībām: [[LU-LSP-B11:shell-cheatsheet | UNIX čaulas populārākās komandas un lietojumi]] |
|||
* Lasīt [https://www.linux.com/what-is-linux Kas tas ir, Linux?] - tagad vai līdz nākamajai lekcijai |
|||
* Lasīt [https://web.archive.org/web/20160417114016/http://www.physics.drexel.edu/students/courses/Comp_Phys/General/C_basics/#first C valodas pamācību] no Drexel universitātes. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====06.02.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Datu struktūras un algoritmi valodā C.'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/cyebsiafqrkykcq/L01_C_data_algorithms.pdf?raw=1 Slaidi] |
|||
C standarti, kompilācija, bibliotēkas, linkošana, skalārie un saliktie tipi (t.sk pointeri un masīvi), funkcijas, nosacījumi, cikli |
|||
| |
|||
* '''Uzdots: [[LU-LSP-b:MD1 | MD1]] mājas darbs - dzimtas koks.''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====12.02.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD1] [[LU-LSP-b13:L01 | Praktiskais darbs #1]] - darbs ar tekstu. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====13.02.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Darbs ar failiem.'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/1h0o1u3tjj0ph0m/L02_files.pdf?raw=1 Slaidi] |
|||
Sistēmas izsaukumi un standarta bibliotēkas funkcijas faila ievadam un izvadam. Linux piedāvātās programmas darbam ar failu izvadu/ievadu (''cat, tail, head, less, telnet'' u.c.). Failu ievada un izvada ātrdarbības uzlabošana, buferi., ņemot vērā sistēmas arhitektūru. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====13.02.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD2] [[LU-LSP-b13:L02 | Praktiskais darbs #2]] - failu kopēšana. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====19.02.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Failu sistēma'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/mjo8zcjux7ygq5b/L03_file_system.pdf?raw=1 Slaidi] |
|||
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(). |
|||
| |
|||
* '''Uzdots: [[LU-LSP-b:MD3 | MD3]] mājas darbs - direktoriju koka apstaigāšana.''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====20.02.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD3] [[LU-LSP-b13:L03 | Praktiskais darbs #3]] - direktoriju koka apstaigāšana. |
|||
| |
|||
* '''Termiņš: [[LU-LSP-b:MD1 | MD1]]''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====20.02.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Failu piekļuves režīmi'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/tl0cjj17yn0p859/L04_more_files.pdf?raw=1 Slaidi] |
|||
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. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====26.02.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD4] [[LU-LSP-b13:L04 | Praktiskais darbs #4]] - programmas analīze. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====27.02.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Atmiņas arhitektūra'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/si26ce9jnmrtspa/L05_memory_arch_stack.pdf?raw=1 Slaidi] |
|||
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. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====27.02.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD_A] Praktiskajos darbos apskatīsim MD1. |
|||
| |
|||
* '''Uzdots: [[LU-LSP-b:MD4 | MD4]] mājas darbs - atmiņas rezervācijas funkciju salīdzinājums.''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====04.03.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Virtuālā atmiņa'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/b09vpj64cy60kme/L06_memory_paging_protection.pdf?raw=1 Slaidi] |
|||
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()''. |
|||
| |
|||
* '''Termiņš: [[LU-LSP-b:MD3 | MD3]]''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====05.03.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''KD1'''</big> |
|||
|} |
|||
[KD1] Vidus semestra '''kontroldarbs'''. |
|||
| |
|||
* '''Kontroldarbs KD1''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====05.03.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD5] [[LU-LSP-b13:L05 | Praktiskais darbs #5]] - ''setjmp()'',''longjmp()'' un taimera signāls. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====11.03.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Dinamiskā atmiņa'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/zqq0jbldw0bciu4/L07_memory_dynamic_reservation.pdf?raw=1 Slaidi] |
|||
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() un free() veiktspējai. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====12.03.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD6] [[LU-LSP-b13:L06 | Praktiskais darbs #6]] - atmiņas rezervācija. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====12.03.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Atmiņas fragmentācija'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/fr3i3tys808343j/L08_memory_algorithms.pdf?raw=1 Slaidi] |
|||
Atmiņas fragmentācija. Atmiņas rezervēšanas (allocation) algoritmi, kas darbojas uz atmiņas fragmentiem. Atmiņas 'spaiņi'. |
|||
| |
|||
* '''Termiņš: [[LU-LSP-b:MD4 | MD4]]''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====18.03.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD7] [[LU-LSP-b:L07 | Praktiskais darbs #7]] - vienkāršs atmiņas alokators fiksēta izmēra objektiem. |
|||
| |
|||
* '''Uzdots: [[LU-LSP-b:MD5 | MD5]] - atmiņas fragmentācijas algoritmu novērtējums ('''grupās''')''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====19.03.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Atkļūdošana'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/9tsu0fecra9f6y0/L09_KD_debugging.pdf?raw=1 Slaidi] |
|||
Linux atkļūdošanas rīki un to lietošana. |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====19.03.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD_D] Izmēģināt [[LU-LSP-b13:LA | atkļūdošanas]] rīkus. Plānot MD5 grupas. Sākt gatavoties Kursa projektam! |
|||
| |
|||
* '''Domāt kursa projekta tēmas!''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====25.03.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Daudz-uzdevumu vide'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/qx2ffq19u2rtx86/L10_multitasking_processes_threads.pdf?raw=1 Slaidi] |
|||
Daudz-uzdevumu vide. Procesi un procesu kontrole. Pavedieni (threads). Kooperējošies procesi un preemptīvā daudz-uzdevumu metode. Komanda '''ps'''. ''getpid()'' un ''getppid()''. ''fork()'', ''exec()'', ''wait()''. ''system()''. |
|||
| |
|||
* '''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!''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====26.03.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
* [PD8] [[LU-LSP-b:L08 | Praktiskais darbs #8]]: Programma kas taisa N pavedienus, kur katrs izdrukā M burtus. |
|||
* Izvēles (nav jāiesūta): [[LU-LSP-b:L09b | Praktiskais darbs #9.b]] - steka satura analīze un piekļuve stekam. |
|||
| |
|||
* '''Apspriežam kursa projekta tēmas''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====26.03.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Procesa dzīves cikls'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/vkce978v56zk9uw/L11_lifecycle_ipc.pdf?raw=1 Slaidi] |
|||
Procesa dzīves cikls: Procesa ielādēšana, uzsākšanās un pieci veidi kā process var beigties. exit() un _exit(). |
|||
Starpprocesu komunikācija. Klienta un servera arhitektūra. Iteratīvie un paralēlie serveri. Sockets. Komunikācija starp nesaistītiem procesiem. |
|||
Kursa projekta diskusija. Sekojiet kursa Slack kanālam! |
|||
* Izvēlētā kursa projekta noteikumu izstrāde |
|||
* Sākt darbu pie protokola formulēšanas - kādas ziņas Jūsuprāt nepieciešams sūtīt tīklā, lai programma pilnvērtīgi strādātu. |
|||
** Piemēram, [https://docs.google.com/document/d/1Lvo-8oxibzqM8ANdjn8lR4ueCwGLSIcpL1Xtu7InHEs/view iepriekšējā gada noteikumi] |
|||
| |
|||
* '''Eksāmena projekts: |
|||
* '''Spēles izvēle un noteikumi''' Darbs pie [XX spēles noteikumu dokumenta]. |
|||
* '''Sākam diskutēt par protokolu''' - nākamajā lekcijā jānonāk līdz pirmajai protokola versijai!''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====01.04.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''''''</big> |
|||
|} |
|||
[PD10] [[LU-LSP-b13:L10 | Praktiskais darbs #10]] - starpprocesu komunikācija. |
|||
| |
|||
* '''Termiņš: [[LU-LSP-b:MD5 | MD5]]''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====02.04.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Signāli'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/go536558ez25tip/L12_signals_course_project.pdf?raw=1 Slaidi] |
|||
Signāli. Alarm serviss un signāls. |
|||
Diskusija par komunikācijas protokolu izstrādi. |
|||
| |
|||
* '''Termiņš: Kursa projekta spēles noteikumi+uzmetums protokolam GoogleDoc dokumentā.''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====02.04.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Pavedieni'''</big> |
|||
|} |
|||
* [https://www.dropbox.com/s/deyef80stvuqyu9/L13_posix_threads.pdf?raw=1 Slaidi] |
|||
Pavedieni. POSIX pavedieni. Mutex. Datu skriešanās (data race condition). Strupceļš (deadlock). |
|||
'''Reading/Reference''': |
|||
* [https://www.cs.cmu.edu/afs/cs/academic/class/15492-f07/www/pthreads.html POSIX thread (pthread) libraries] |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====15.04.20==== |
|||
08:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
Ieskatam servera/klienta komunikācijā [http://selavo.lv/wiki/index.php/LU-LSP-b13:L11 PD11], bet nav jānodod. |
|||
[PD_KP2] Darbs pie kursa projekta. |
|||
| |
|||
* '''Termiņš: Spēles protokola gala versija''' |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====16.04.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Kursa kopsavilkums'''</big> |
|||
|} |
|||
| |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====16.04.20==== |
|||
16:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>''' '''</big> |
|||
|} |
|||
[PD_KP2] Darbs pie kursa projekta. |
|||
'''Reading/Reference''': |
|||
* [https://www.cyberciti.biz/faq/linux-install-ncurses-library-headers-on-debian-ubuntu-centos-fedora/ Ncurses library, installation and use] |
|||
| |
|||
Termiņš projekta protokolam: 18.04.2020 (sestdiena) 12:00 (pusdienlaikā) |
|||
|- style='vertical-align: top;' |
|||
| |
|||
====23.04.20==== |
|||
14:30 |
|||
| |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Konsultācija'''</big> |
|||
|} |
|||
Tiks noturēta tiešsaistē, pēc vajadzības |
|||
| |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
====29.04.21==== |
||
15:00 |
|||
14:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
Revision as of 07:15, 5 February 2021
Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena: 10.11.20 : Rītdiena: 11.11.20 (ja ir lekcija)
Linux sistēmas programmēšana (LSP)
LU DF bakalaura studiju kurss DatZ3122, meklēt eStudijās.
- Pasniedzējs: Leo Seļāvo (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
- Mājas darbus iesniegt e-studijās vai darbu testēšanas serverī, atkarībā no darba specifikācijas.
- Faila nosaukumam jābūt formā LSP_MD1_Vards_Uzvards.c (Mainot atbilstošo uzdevuma kodu un faila formātu pēc nepieciešamības)
- Nevajag arhivēt failus, ja vien tas nav prasīts uzdevuma nosacījumos
Praktisko darbu vērtēšanas kritēriji
- Praktisko darbu mērķis ir nostiprināt un parādīt izpratni par apgūto vielu, attiecīgi darbi ir jārisina patstāvīgi, tomēr jautājumu uzdošana pasniedzējam vai kolēģiem ir vēlama.
- Maksimālo vērtējumu par praktisko darbu var saņemt, ja tas iesūtīts līdz praktisko darbu lekcijas beigām (vai brīdim, kad vienojamies, ka publiski apskatīsim PD risinājumu).
- Pēc termiņa praktiskie darbi tiek pieņemti vēl tekošo nedēļu (līdz nākamās lekcijas sākumam) un tiks novērtēti, tomēr vairs ne ar maksimālo atzīmi.
- Papildus praktiskajos darbos un lekcijās var izpelnīties "plusiņus" ar dalību diskusijās, unikālu risinājumu un ideju piedāvāšanu, trāpīgu jautājumu uzdošanu, atbildēšanu uz kolēģu jautājumiem u.t.t., kas savukārt palīdzēs savākt +10% no kopējā vērtējuma "par darbu klasē".
Mājas darbu vērtēšanas kritēriji
- Mājas darbu iesniegšanas termiņa laiks ir attiecīgajā datumā 20:00
- Ja darbs tiek iesniegts ar novēlošanos (kaut vai 1 sekundi!):
- Tūdaļ pēc termiņa rezultāts tiek samazināts par 50%
- Nedēļu pēc termiņa darbi vairs netiek pieņemti.
Kalendārs
| Datums | Tēma, saturs | Uzdevumi | |
|---|---|---|---|
08.02.2108:30 |
Vispārīgs pārskats par valodu C. |
| |
|
... |
|||
29.04.2115:00 |
Pirms eksāmena kodam kopā ar kompilācijas un palaišanas instrukcijām jābūt iesniegtam e-studijās! |
|
Uzdevumi
Mājas darbi
- MD0: Izlasīt kodēšanas stila dokumentus.
- MD1: Ģimenes koka ģenerēšanas programma.
- MD2 - nav uzdots.
- 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.
Resursi
Pamācoši vingrinājumi un piemēri
- Failu I/O buferi un sekas: divi raksta, redzam trīs...
- Aprēķins, cik laika vajag pārkopēt 1 TB pa baitam bez bufera.
- Paging: piemērs 4K x 4K masīva apstaigāšanai, mainot indeksus: 4K vs 16M page faults
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
- Sublime_Text_cheat_sheet - Lieliskā Sublime teksta redaktora taustiņu kombinācijas
- To become a good programmer... - C grāmatu saraksts
Programmētāja resursi
- Noderīgas Linux komandas
- Bash by Example @ibm/developerworks
- Intro to Linux kernel
- Programming in C: A Tutorial (by Brian W. Kernighan)
- GCC and make - par gcc kompilatoru no NTU
- Gnu make dokumentācija
- makefile vai Makefile?
- Tipiskas unix direktoriju hierarhijas īss apraksts.
- Sockets:
- Programming IP Sockets on Linux (tutorial @ gnosis.cx)
- Sockets Tutorial @ Linux Howtos
- Berkeley sockets (Wikipēdija)
- http://www.hiraeth.com/alan/tutorials/courses/unixprog.html
- http://lkml.org/
- The Linux Kernel Module Programming Guide
Programmēšanas analīzes rīki
- PMD - scans source code and looks for bugs, dead code, suboptimal code, overcomplicated expressions, duplicate code.
Linux veiktspējas analīze
- Top 20 Linux monitoring tools @cyberciti
- 20 rīki Linux veikstpējas monitoringam (IPTraf u.c.) @tecmint
- CPU analīze
- Disku I/O analīze
- IO profiling at Linux programming blog
- Tīkla analīze
- Tīkla caurplūdes testi
$ yes | pv | ssh user@example.com "cat > /dev/null"
97,3MiB 0:01:36 [1,28MiB/s][ <=> ]
$ mtr -rw -c 100 <server_ip>
HOST: <myhost> Loss% Snt Last Avg Best Wrst StDev
1.|-- _gateway 0.0% 100 0.7 0.6 0.3 2.4 0.2
2.|-- <server_ip> 1.0% 100 1.0 4.3 0.9 26.6 5.7
$ iperf3 -s # startē serveri vienā galā
Server listening on 5201
$ iperf3 -c <server_ip> # startē klientu otrā galā
Connecting to host <server_ip>, port 5201
[ 5] local 192.168.1.123 port 51846 connected to <server_ip> port 5201
[ ID] Interval Transfer Bitrate Retr Cwnd
[ 5] 0.00-1.00 sec 1.42 MBytes 11.9 Mbits/sec 0 89.1 KBytes
[ 5] 1.00-2.00 sec 1.62 MBytes 13.6 Mbits/sec 0 147 KBytes
...
[ 5] 9.00-10.00 sec 2.30 MBytes 19.3 Mbits/sec 0 595 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-10.00 sec 14.2 MBytes 11.9 Mbits/sec 0 sender
[ 5] 0.00-10.42 sec 11.6 MBytes 9.36 Mbits/sec receiver
$ nstat -az | grep -Ei "drop|overflow|retrans"
TcpRetransSegs 127923 0.0
TcpExtLockDroppedIcmps 0 0.0
TcpExtListenDrops 1 0.0
TcpExtTCPLostRetransmit 11837 0.0
...
$ ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
...
$ sudo ethtool -S eth0 | grep -E "errors|dropped|fifo|collision"
collisions: 0
rx_crc_errors: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
...
- "bashtop" rīks veiktspējas analīzei
Āķīgi uzdevumi un pieredze
- C/C++ Tricky Programs
- Computers are exact, precise, and logical machines, until they aren’t.
- Advent of Code
Atziņas
- Teach yourself programming in 10 years by Peter Norvig
- Code review: Learn how NASA codes (blog), and Mars Code (ACM article)
- Things Every Hacker Once Knew
- Kāpēc CR+LF? - Par to kāpēc vēsturisku iemeslu dēļ Windows sistēmās teksta rindas beigās ir CR+LF, kamēr Unix sistēmā tikai LF
- Linux Timeline - Linux distributīvu vēstures diagramma.
- Linus ar Linus par Linux un ne tikai, kamēr būvē datoru priekš Linus (2025).
- Linux Distribution Timeline (2024) - liels attēls ar Linux distributīvu savstarpējo saikni un vēsturi.