Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Bubuka pikeun Sistem Operasi

Héy Habr! Abdi hoyong nengetan runtuyan artikel-tarjamahan tina hiji literatur metot dina pamanggih kuring - OSTEP. Bahan ieu ngabahas sacara jero ngeunaan sistem operasi sapertos unix, nyaéta, damel sareng prosés, rupa-rupa jadwal, mémori, sareng komponén anu sami anu ngawangun OS modern. Anjeun tiasa ningali asli sadaya bahan di dieu di dieu. Punten perhatikeun yén tarjamahan éta dilakukeun sacara teu profésional (rada bébas), tapi kuring ngarep-arep nahan harti umum.

Karya laboratorium dina subjek ieu tiasa dipendakan di dieu:

bagian séjén:

Anjeun oge bisa pariksa kaluar channel abdi di telegram =)

Hayu urang tingali abstraksi anu paling dasar anu disayogikeun ku OS ka pangguna: prosésna. Definisi prosés anu cukup basajan - éta program ngajalankeun. Program éta sorangan mangrupikeun hal anu teu aya kahirupan anu aya dina disk - éta mangrupikeun set paréntah sareng kamungkinan sababaraha data statik anu ngantosan diluncurkeun. Éta OS anu nyandak bait-bait éta sareng ngajalankeunana, ngarobih program janten anu mangpaat.
Seringna, pangguna hoyong ngajalankeun langkung ti hiji program dina waktos anu sami, contona, anjeun tiasa ngajalankeun browser, kaulinan, pamuter média, pangropéa téksu, sareng anu sanésna dina laptop anjeun. Kanyataanna, sistem has tiasa ngajalankeun puluhan atanapi ratusan prosés sakaligus. Kanyataan ieu ngajadikeun sistem gampang ngagunakeun, anjeun pernah kudu salempang ngeunaan naha CPU bébas, Anjeun ngan ngajalankeun program.

Ieu raises masalah: kumaha nyadiakeun ilusi loba CPUs? Kumaha OS tiasa nyiptakeun ilusi tina jumlah CPU anu ampir teu aya watesna, sanaos anjeun ngan ukur gaduh hiji CPU fisik?

OS nyiptakeun ilusi ieu ngaliwatan virtualisasi CPU. Ku ngamimitian hiji prosés, teras ngeureunkeunana, ngamimitian prosés anu sanés, sareng saterasna, OS tiasa ngajaga ilusi yén aya seueur CPU virtual, padahal bakal aya hiji atanapi langkung prosesor fisik. Téhnik ieu disebut division sumberdaya CPU ku waktu. Téhnik ieu ngamungkinkeun pamaké pikeun ngajalankeun saloba prosés sakaligus sakumaha anu dipikahoyong. Biaya solusi ieu mangrupikeun kinerja - sabab upami CPU dibagi ku sababaraha prosés, unggal prosés bakal diolah langkung laun.
Pikeun ngalaksanakeun virtualisasi CPU, sareng khususna pikeun ngalakukeunana saé, OS peryogi dukungan tingkat rendah sareng tingkat luhur. Pangrojong tingkat low disebut mékanisme nya éta métode atawa protokol tingkat-rendah anu ngalaksanakeun bagian fungsionalitas nu diperlukeun. Conto pungsionalitasna nyaéta kontéks switching, anu masihan OS kamampuan pikeun ngeureunkeun hiji program sareng ngajalankeun program anu sanés dina prosésor. Divisi waktos ieu dilaksanakeun dina sadaya sistem operasi modern.
Di luhureun mékanisme ieu sababaraha logika diwangun kana OS, dina bentuk "kabijakan". kawijakan mangrupakeun algoritma-nyieun kaputusan tangtu pikeun sistem operasi. Kabijakan sapertos kitu, contona, mutuskeun program mana anu kedah diluncurkeun (tina daptar paréntah) heula. Janten, contona, masalah ieu bakal direngsekeun ku kawijakan anu disebut scheduler (kabijakan penjadwalan) sareng nalika milih solusi, éta bakal dipandu ku data sapertos: sajarah ngamimitian (program anu paling lami diluncurkeun dina menit terakhir), beban naon anu ditanggung ku prosés ieu (jenis program naon anu diluncurkeun), métrik kinerja (naha sistem na dioptimalkeun pikeun interaksi interaktif atawa pikeun throughput ) jeung saterusna.

Abstraksi: prosés

The abstraksi tina program ngajalankeun dieksekusi ku sistem operasi naon urang nelepon proses. Sakumaha anu disebatkeun sateuacana, prosés mangrupikeun program anu ngajalankeun, dina waktos anu sakedapan. Hiji program anu kami tiasa nampi inpormasi ringkesan tina sababaraha sumber sistem anu diaksés atanapi mangaruhan program ieu salami palaksanaanna.
Ngartos komponén prosés, anjeun kedah ngartos kaayaan sistem: naon program bisa maca atawa ngarobah salila operasi na. Iraha waé, anjeun kedah ngartos mana unsur sistem anu penting pikeun palaksanaan program.
Salah sahiji elemen atra tina sistem kaayaan yén prosés ngawengku téh ingetan. Parentah aya dina mémori. Data anu dibaca atanapi ditulis ku program ogé aya dina mémori. Ku kituna, mémori nu prosés bisa alamat (disebut spasi alamat) mangrupa bagian tina prosés.
Ogé bagian tina kaayaan sistem anu registers. Loba parentah anu aimed dina ngarobah nilai registers atawa maca nilai maranéhanana, sahingga registers ogé jadi bagian penting tina operasi prosés.
Ieu kudu dicatet yén kaayaan mesin ogé kabentuk tina sababaraha registers husus. Salaku conto, IP - instruksi pointer - pointer kana parentah nu program ayeuna executing. Aya ogé tumpukan pointer jeung patalina jeung eta pigura pointer, nu dipaké pikeun ngatur: parameter fungsi, variabel lokal jeung alamat mulang.
Tungtungna, program sering ngaksés ROM (memori ukur baca). Inpormasi "I / O" (input / output) ieu kedah kalebet daptar file anu ayeuna dibuka ku prosésna.

API prosés

Pikeun ningkatkeun pamahaman kami ngeunaan cara prosésna, hayu urang diajar conto telepon sistem anu kedah dilebetkeun kana antarmuka sistem operasi. API ieu sayogi dina hiji bentuk atanapi anu sanés dina OS naon waé.

nyiptakeun (nyieun): OS kudu ngawengku sababaraha métode nu ngidinan Anjeun pikeun nyieun prosés anyar. Lamun anjeun ngasupkeun paréntah kana terminal atawa ngajalankeun hiji aplikasi ku ganda-klik dina ikon, nelepon bakal dikirim ka OS pikeun nyieun prosés anyar lajeng ngajalankeun program husus.
Ngahapus: Kusabab aya antarbeungeut pikeun nyiptakeun prosés, OS ogé kedah nyayogikeun kamampuan pikeun maksa ngaleungitkeun prosés. Kaseueuran program sacara alami bakal ngamimitian sareng ngeureunkeun nyalira nalika ngajalankeun. Upami teu kitu, pangguna hoyong tiasa maéhan aranjeunna sahingga antarmuka pikeun ngeureunkeun prosésna bakal mangpaat.
ngantosan (ngadagoan): Kadangkala kacida mangpaat ngadagoan prosés pikeun ngalengkepan, ku kituna sababaraha interfaces disadiakeun nu nyadiakeun kamampuhan pikeun antosan.
Misc Control (rupa kontrol): Salian maéhan sarta ngantosan prosés, aya ogé rupa-rupa métode kontrol lianna. Contona, sabagéan ageung sistem operasi nyadiakeun kamampuhan pikeun freeze hiji prosés (ngeureunkeun palaksanaan na pikeun periode nu tangtu) lajeng neruskeun deui (neraskeun palaksanaan).
status (kaayaan): Aya rupa-rupa interfaces pikeun ménta sababaraha émbaran ngeunaan status prosés a, kayaning sabaraha lila eta geus ngajalankeun atawa kaayaan naon eta ayeuna di.

Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Proses Nyiptakeun: Rincian

Salah sahiji hal anu pikaresepeun nyaéta kumaha persisna program dirobih janten prosés. Utamana kumaha OS nyokot tur ngajalankeun program. Kumaha kahayang prosés dijieun.
Anu mimiti, OS kedah ngamuat kode program sareng data statik kana mémori (kana rohangan alamat prosés). Program biasana aya dina disk atanapi solid-state drive dina sababaraha format anu tiasa dieksekusi. Ku kituna, prosés ngamuat program sareng data statik kana mémori meryogikeun OS tiasa maca bait-bait éta tina disk sareng nempatkeunana dina mémori.

Dina sistem operasi awal, prosés ngamuat dilakukeun kalayan ati-ati, anu hartosna sadayana kode dimuat kana mémori sateuacan program diluncurkeun. Sistem operasi modern ngalakukeun ieu puguh, nyaeta, loading potongan kode atawa data ngan lamun program merlukeun aranjeunna salila palaksanaan na.

Sakali kode sareng data statik dimuat kana mémori OS, aya sababaraha deui anu kedah dilakukeun sateuacan prosésna tiasa jalan. Sababaraha jumlah mémori kedah dialokasikeun pikeun tumpukan éta. Program ngagunakeun tumpukan pikeun variabel lokal, parameter fungsi, sareng alamat mulang. OS allocates memori ieu sareng masihan ka prosés. Tumpukan ogé bisa disadiakeun kalawan sababaraha alesan, husus eta ngeusi parameter tina fungsi utama (), Contona jeung hiji Asép Sunandar Sunarya argc na argv.

Sistem operasi ogé tiasa nyayogikeun sababaraha mémori kana tumpukan program. Numpuk digunakeun ku program pikeun sacara eksplisit nyuhunkeun data anu dialokasikeun sacara dinamis. Program menta spasi ieu ku nelepon fungsi malloc () tur mupus eta eksplisit ku nelepon fungsi gratis(). Numpuk dipikabutuh pikeun struktur data saperti lambaran numbu, tabel hash, tangkal jeung sajabana. Mimitina, jumlah leutik memori dialokasikeun ka numpuk, tapi kana waktu, sakumaha program nu dijalankeun, numpuk bisa menta leuwih memori ngaliwatan perpustakaan API nelepon malloc (). Sistem operasi aub dina prosés alokasi leuwih memori pikeun mantuan nyugemakeun telepon ieu.

Sistem operasi ogé bakal ngalaksanakeun tugas inisialisasi, khususna anu aya hubunganana sareng I/O. Salaku conto, dina sistem UNIX, unggal prosés sacara standar ngagaduhan 3 deskriptor file kabuka, pikeun input standar, kaluaran, sareng kasalahan. Cecekelan ieu ngamungkinkeun program pikeun maca input ti terminal ogé nunjukkeun inpormasi dina layar.

Ku kituna, ku ngamuat kode jeung data statik kana mémori, nyieun jeung initializing tumpukan, sarta ngalakonan pagawean sejen nu patali jeung ngajalankeun tugas I / O, OS nyiapkeun panggung pikeun prosés pikeun ngaéksekusi. Tungtungna, aya hiji tugas panungtungan ditinggalkeun: ngajalankeun program ngaliwatan titik Éntri na, disebut fungsi utama (). Ku executing utama () fungsi, mindahkeun OS kadali CPU kana prosés karek dijieun, sahingga program dimimitian pikeun ngaéksekusi.

Kaayaan prosés

Ayeuna urang gaduh sababaraha pamahaman naon prosés sareng kumaha éta diciptakeun, hayu urang daptar prosés nyatakeun éta tiasa aya. Dina bentuk pangbasajanna, prosés tiasa aya dina salah sahiji kaayaan ieu:
ngajalankeun. Nalika ngajalankeun, prosésna dijalankeun dina prosésor. Ieu ngandung harti yén instruksi keur dieksekusi.
siap. Dina kaayaan siap, prosésna siap dijalankeun, tapi pikeun sababaraha alesan OS henteu ngaéksekusi dina waktos anu ditangtukeun.
dipeungpeuk. Dina kaayaan anu diblokir, prosés ngalakukeun sababaraha operasi anu nyegah éta siap dieksekusi dugi ka lumangsung kajadian. Hiji conto umum nyaéta nalika prosés ngamimitian operasi IO, éta bakal diblokir ku kituna sababaraha prosés sanésna tiasa nganggo prosésor.

Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Anjeun tiasa ngabayangkeun kaayaan ieu dina bentuk grafik. Sakumaha anu urang tingali dina gambar, kaayaan prosés tiasa robih antara RUNNING sareng SIAP dina kawijaksanaan OS. Lamun kaayaan hiji prosés robah tina SIAP ka ngajalankeun, hartina prosés geus dijadwalkeun. Dina arah nu lalawanan - dipiceun tina perenah nu. Di momen nalika prosés jadi diblokir, contona, kuring initiate hiji operasi IO, OS bakal tetep dina kaayaan ieu dugi sababaraha acara lumangsung, contona parantosan IO. dina momen ieu transisi ka kaayaan SIAP jeung kamungkinan geuwat ka kaayaan ngajalankeun lamun OS mutuskeun kitu.
Hayu urang tingali conto kumaha dua prosés ngalangkungan nagara-nagara ieu. Pikeun mimitian, hayu urang ngabayangkeun yén duanana prosés jalan, sareng masing-masing ngan ukur nganggo CPU. Dina hal ieu, nagara maranéhanana bakal kasampak kawas kieu.

Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Dina conto di handap ieu, prosés kahiji, sanggeus sababaraha waktu ngajalankeun, requests IO tur asup kana kaayaan BLOCKED, sahingga prosés sejen ngajalankeun (Gbr 1.4). OS ningali yén prosés 0 henteu nganggo CPU sareng ngamimitian prosés 1. Nalika prosés 1 dijalankeun, IO réngsé sareng status prosés 0 robih janten SIAP. Tungtungna, prosés 1 geus réngsé, sarta sanggeus parantosan, prosés 0 dimimitian, executes, sarta rengse pagawean na.

Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Struktur data

OS sorangan mangrupa program, sarta kawas sagala program sejen, eta boga sababaraha struktur data konci nu ngalacak rupa potongan informasi relevan. Pikeun ngalacak kaayaan unggal prosés, OS bakal ngadukung sababaraha daptar prosés pikeun sakabéh prosés dina kaayaan SIAP jeung sababaraha émbaran tambahan pikeun ngalacak prosés nu ayeuna jalan. Ogé, OS kedah ngawas prosés diblokir. Saatos IO réngsé, OS kedah ngahudangkeun prosés anu diperyogikeun teras nahan dina kaayaan anu siap dijalankeun.

Contona, OS kudu ngawétkeun kaayaan registers processor. Dina waktos prosésna lirén, kaayaan pendaptaran disimpen dina rohangan alamat prosés, sareng dina waktos operasina diteruskeun, nilai-nilai pendaptaran disimpen deui sahingga teraskeun palaksanaan prosés ieu.

Salian siap, diblokir, ngajalankeun kaayaan, aya sababaraha nagara bagian séjén. Kadang-kadang, dina waktos nyiptakeun, prosés tiasa aya dina kaayaan INIT. Tungtungna, prosés tiasa ditempatkeun dina kaayaan FINAL nalika parantos réngsé, tapi inpormasina henteu acan diberesihan. Dina sistem UNIX kaayaan ieu disebut prosés zombie. kaayaan ieu mangpaat pikeun kasus dimana prosés kolot hayang nyaho kodeu balik anak, contona,, biasana 0 sinyal kasuksésan sarta 1 kasalahan, tapi programer bisa ngaluarkeun kode kaluaran tambahan pikeun sinyal masalah béda. Nalika prosés indungna terminates, ngajadikeun panggero sistem final, kayaning antosan (), pikeun ngadagoan prosés anak nungtungan jeung sinyal ka OS nu bisa mupus sagala data pakait sareng prosés terminated.

Sistem operasi: Tilu Potongan Gampang. Bagian 2: Abstraksi: Prosés (tarjamahan)

Poin konci tina ceramah:

proses - abstraksi utama program ngajalankeun dina OS. Iraha waé, prosés tiasa dijelaskeun ku kaayaanana: eusi mémori dina rohangan alamatna, eusi pendaptaran prosesor, kalebet petunjuk petunjuk sareng penunjuk tumpukan, sareng inpormasi IO, sapertos file kabuka anu dibaca atanapi ditulis.
API prosés diwangun ku sauran anu tiasa dilakukeun ku program kana prosés. Biasana ieu nyaéta nyiptakeun, ngahapus, atanapi telepon anu sanés.
● Prosésna aya dina salah sahiji loba nagara, kaasup ngajalankeun, siap, diblokir. Rupa-rupa acara sapertos scheduling, iwal ti scheduling, atawa waits bisa ngarobah kaayaan hiji prosés ti hiji ka nu sejen.
Daptar prosés ngandung émbaran ngeunaan sakabéh prosés dina sistem. Unggal éntri di dinya disebut blok kontrol prosés, anu kanyataanna mangrupikeun struktur anu ngandung sadaya inpormasi anu dipikabutuh ngeunaan prosés khusus. 

sumber: www.habr.com

Tambahkeun komentar