Linux operatsioonisüsteemis töötab protsess: erinevus redaktsioonide vahel

Allikas: Imre kasutab arvutit
Mine navigeerimisribaleMine otsikasti
Resümee puudub
 
(ei näidata sama kasutaja 8 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
30. rida: 44. rida:
Väited
Väited


* virtuaalsete arvutite moodi juhtumil  
* virtuaalsete arvutite moodi juhtumil python interpretaator tekitab 'python bytecode'-i ja seda saab käivitada python virtuaalsel arvutil
* container runtime
* python interpretaator omakorda moodustab nö päris linux kerneli syscall'id ja machine code'i, mida päris protsessoril käivitatakse
* language runtime
* 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
 
<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===


* TODO
* [[: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

Kasulikud lisamaterjalid