Linux operatsioonisüsteemis töötab protsess: erinevus redaktsioonide vahel
Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
Resümee puudub |
|||
| (ei näidata sama kasutaja 6 vahepealset redaktsiooni) | |||
| 1. rida: | 1. rida: | ||
===Sissejuhatus=== | ===Sissejuhatus=== | ||
TODO | |||
===Tööpõhimõte=== | |||
Protessi olekud | |||
* running/runnable | |||
* sleeping | |||
* uninterruptable sleep | |||
* zombie | |||
Protsessi olukute muutumised | |||
TODO | TODO | ||
| 20. rida: | 33. rida: | ||
* perl - 'perl source code' -> 'perl byte code' -> 'machine code' | * perl - 'perl source code' -> 'perl byte code' -> 'machine code' | ||
* node | * node | ||
* php - 'Zend VM', 'php opcode' | |||
mitte-virtuaalsed arvutid | mitte-virtuaalsed arvutid | ||
| 35. rida: | 49. rida: | ||
* language runtime - python'i käititatud interpretaator, mis on keskkonnas python bytecode käitamisel (sisemine mäluhaldus, garbage collection jne) | * language runtime - python'i käititatud interpretaator, mis on keskkonnas python bytecode käitamisel (sisemine mäluhaldus, garbage collection jne) | ||
* qemu+kvm põhine virtuaalne arvuti on eriline kuna tema puhul bytecode on praktiliselt nö tavaline 'machine code' | * qemu+kvm põhine virtuaalne arvuti on eriline kuna tema puhul bytecode on praktiliselt nö tavaline 'machine code' | ||
* 'language runtime' on arendajale ahvatlev kontseptsioon kuna ta saab täiesti uue reeglistiku moodustada (mälu haldus jms) | |||
* bytecode etapist vabanemiseks on mõeldud välja põhimõtteliselt kaks nö ületuskohta, 1. automaatne koodi teisendamine ja siis kompileerimine, 2. xxx | |||
* jit - just-in-time-compilation - võimaldab 'language runtime'is olevaid tegevusi otse all oleval kernelil käitada; st muidu python rakendus peab fragmente otse c keeles | |||
* 'language runtime' lähenemise eelis on riistvaralise arhitektuuri agnostilisus (põhimõtteliselt) | |||
* bytecode põhimõtteliselt on samuti arhitektuuri agnostiline | |||
* bytecode praktiliselt sõltub 'language runtime' versioonist - nt python v. 2.7 moodustatud .pyc ei ole kasutatav python v. 3.x puhul | |||
* language runtime põhise protsessi töötamist saab vaadelda kahelt positsioonilt: 1. operatsioonisüsteemi jaoks paistavad juhtuvat nö tavalised syscall'id, runtime jaoks toimuvad nö funktsioonide väljakutsed jms | |||
Misc | |||
python sisemiste tegevuste top utiliit, olemasoleva protsessi külge kinnitumine | |||
<pre> | |||
root@ph-minio-01:~# apt-get install pipx | |||
root@ph-minio-01:~# pipx install --global py-spy | |||
root@ph-minio-01:~# ps aux | grep python | |||
root 28751 0.1 0.1 18484 10424 pts/1 S+ 15:52 0:00 python3 packet_server.py | |||
root 28753 0.0 0.0 6520 2300 pts/2 S+ 15:52 0:00 grep python | |||
root@ph-minio-01:~# py-spy top --pid 28451 | |||
</pre> | |||
Protsessi käivitamisel | |||
<pre> | |||
root@ph-minio-01:~# python3 -m trace --trace packet_server.py | |||
</pre> | |||
ucomms utiliit bpfcc-tools komplektist | |||
<pre> | |||
todo | |||
</pre> | |||
===Kasulikud lisamaterjalid=== | ===Kasulikud lisamaterjalid=== | ||
* | * [[:Linux operatsioonisüsteem kasutab plaanurit]] | ||
Viimane redaktsioon: 28. juuni 2026, kell 19:38
Sissejuhatus
TODO
Tööpõhimõte
Protessi olekud
- running/runnable
- sleeping
- uninterruptable sleep
- zombie
Protsessi olukute muutumised
TODO
Virtuaalne arvuti
Tavaliselt kujutletakse virtuaalse arvuti all midagi sellist, mille tekitab qemu + kvm tarkvara käivitamine, tegevused algavad virtuaalse riistvara juurest. Põhimõtteliselt on virtuaalne arvuti selline arvutis töötav protsess, mis tegeleb enda kontrolli alla jäävate ressursside
- cpu teemaga - käskude tõlgeldamise (function calls, library calls jms)
- mälu haldusega
- tegevuste scheduling teemaga
Sellise käsitluse alusel saab liigitada levinud programmeerimise keeled ja nende kompilaatorid kaheks
virtuaalsed arvutid ja sealt edasi
- python - 'python source code' -> 'python byte code' -> 'machine code'
- java -
- ruby
- perl - 'perl source code' -> 'perl byte code' -> 'machine code'
- node
- php - 'Zend VM', 'php opcode'
mitte-virtuaalsed arvutid
- c - 'c source code' -> 'machine code'
- c++
- go
- rust
Väited
- virtuaalsete arvutite moodi juhtumil python interpretaator tekitab 'python bytecode'-i ja seda saab käivitada python virtuaalsel arvutil
- python interpretaator omakorda moodustab nö päris linux kerneli syscall'id ja machine code'i, mida päris protsessoril käivitatakse
- container runtime - sellest kõneldakse peamiselt seoses konteineriga, 'container runtime', nt 'runc' programm moodustab cgroups ja namespace piiritletud ressursi ja seal käivitatakse edasi protsess (mis võib olla omakorda runtime - 'language runtime'
- language runtime - python'i käititatud interpretaator, mis on keskkonnas python bytecode käitamisel (sisemine mäluhaldus, garbage collection jne)
- qemu+kvm põhine virtuaalne arvuti on eriline kuna tema puhul bytecode on praktiliselt nö tavaline 'machine code'
- 'language runtime' on arendajale ahvatlev kontseptsioon kuna ta saab täiesti uue reeglistiku moodustada (mälu haldus jms)
- bytecode etapist vabanemiseks on mõeldud välja põhimõtteliselt kaks nö ületuskohta, 1. automaatne koodi teisendamine ja siis kompileerimine, 2. xxx
- jit - just-in-time-compilation - võimaldab 'language runtime'is olevaid tegevusi otse all oleval kernelil käitada; st muidu python rakendus peab fragmente otse c keeles
- 'language runtime' lähenemise eelis on riistvaralise arhitektuuri agnostilisus (põhimõtteliselt)
- bytecode põhimõtteliselt on samuti arhitektuuri agnostiline
- bytecode praktiliselt sõltub 'language runtime' versioonist - nt python v. 2.7 moodustatud .pyc ei ole kasutatav python v. 3.x puhul
- language runtime põhise protsessi töötamist saab vaadelda kahelt positsioonilt: 1. operatsioonisüsteemi jaoks paistavad juhtuvat nö tavalised syscall'id, runtime jaoks toimuvad nö funktsioonide väljakutsed jms
Misc
python sisemiste tegevuste top utiliit, olemasoleva protsessi külge kinnitumine
root@ph-minio-01:~# apt-get install pipx root@ph-minio-01:~# pipx install --global py-spy root@ph-minio-01:~# ps aux | grep python root 28751 0.1 0.1 18484 10424 pts/1 S+ 15:52 0:00 python3 packet_server.py root 28753 0.0 0.0 6520 2300 pts/2 S+ 15:52 0:00 grep python root@ph-minio-01:~# py-spy top --pid 28451
Protsessi käivitamisel
root@ph-minio-01:~# python3 -m trace --trace packet_server.py
ucomms utiliit bpfcc-tools komplektist
todo