Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Pengantar Sistem Operasi

Hey Habr! Aku pengin menehi perhatian marang sawetara artikel-terjemahan saka siji literatur sing menarik miturut pendapatku - OSTEP. Materi iki mbahas kanthi jero babagan sistem operasi kaya unix, yaiku, nggarap proses, macem-macem jadwal, memori, lan komponen liyane sing padha sing nggawe OS modern. Sampeyan bisa ndeleng asli kabeh bahan kene kene. Wigati dimangerteni manawa terjemahan kasebut digawe kanthi ora profesional (cukup bebas), nanging muga-muga bisa tetep makna umum.

Pakaryan laboratorium babagan subyek iki bisa ditemokake ing kene:

bagean liyane:

Sampeyan uga bisa mriksa saluranku ing telegram =)

Ayo goleki abstraksi paling dhasar sing diwenehake OS kanggo pangguna: proses. Definisi proses cukup prasaja - iku program mlaku. Program kasebut dhewe minangka barang sing ora ana nyawa sing ana ing disk - minangka set instruksi lan bisa uga sawetara data statis sing nunggu diluncurake. Iku OS sing njupuk bait kasebut lan mbukak, ngowahi program kasebut dadi migunani.
Paling asring, pangguna pengin mbukak luwih saka siji program ing wektu sing padha, contone, sampeyan bisa mbukak browser, game, pamuter media, editor teks, lan liya-liyane ing laptop. Nyatane, sistem khas bisa mbukak puluhan utawa atusan proses bebarengan. Kasunyatan iki ndadekake sistem luwih gampang kanggo nggunakake, sampeyan ora kudu padha sumelang ing bab apa CPU free, sampeyan mung mbukak program.

Iki nyebabake masalah: carane nyedhiyakake khayalan akeh CPU? Carane OS bisa nggawe khayalan nomer meh tanpa wates CPU, sanajan sampeyan mung duwe siji CPU fisik?

OS nggawe ilusi iki liwat virtualisasi CPU. Kanthi miwiti siji proses, banjur mandheg, miwiti proses liyane, lan liya-liyane, OS bisa njaga khayalan yen ana akeh CPU virtual, nanging nyatane bakal ana siji utawa luwih prosesor fisik. Teknik iki diarani divisi saka sumber daya CPU dening wektu. Teknik iki ngidini pangguna mbukak akeh proses bebarengan sing dikarepake. Biaya solusi iki yaiku kinerja - amarga yen CPU dienggo bareng karo sawetara proses, saben proses bakal diproses luwih alon.
Kanggo ngleksanakake virtualisasi CPU, lan utamane kanggo nindakake kanthi apik, OS mbutuhake dhukungan tingkat rendah lan tingkat dhuwur. Dhukungan tingkat rendah diarani mekanisme minangka cara utawa protokol tingkat rendah sing ngetrapake bagean fungsionalitas sing dibutuhake. Conto fungsi kasebut yaiku ngoper konteks, sing menehi OS kemampuan kanggo mungkasi program siji lan mbukak program liyane ing prosesor. Divisi wektu iki dileksanakake ing kabeh sistem operasi modern.
Ing ndhuwur mekanisme kasebut ana sawetara logika sing dibangun ing OS, ing wangun "kabijakan". privasi minangka algoritma nggawe keputusan tartamtu kanggo sistem operasi. Kawicaksanan kasebut, contone, mutusake program apa sing kudu diluncurake (saka dhaptar perintah) luwih dhisik. Dadi, contone, masalah iki bakal ditanggulangi kanthi kabijakan sing diarani scheduler (kebijakan penjadwalan) lan nalika milih solusi, bakal dipandu dening data kayata: riwayat wiwitan (program sing paling dawa diluncurake ing menit pungkasan), beban apa sing ditindakake proses iki (jinis program apa sing diluncurake), metrik kinerja (apa sistem dioptimalake kanggo interaksi interaktif utawa kanggo throughput ) lan liya-liyane.

Abstraksi: proses

Abstraksi program mlaku sing dieksekusi dening sistem operasi yaiku sing diarani proses. Kaya sing wis kasebut sadurunge, proses mung minangka program sing mlaku, ing wektu sing cepet. Program sing bisa entuk informasi ringkesan saka macem-macem sumber daya sistem sing diakses utawa kena pengaruh program iki sajrone eksekusi.
Kanggo mangerteni komponen proses, sampeyan kudu ngerti negara sistem: apa program bisa maca utawa ngganti sak operasi. Ing wektu tartamtu, sampeyan kudu ngerti unsur sistem sing penting kanggo eksekusi program kasebut.
Salah sawijining unsur sing jelas saka sistem kasebut yaiku proses kasebut kalebu memori. Instructions dumunung ing memori. Data sing diwaca utawa ditulis program uga ana ing memori. Mangkono, memori sing bisa ditangani proses (disebut ruang alamat) minangka bagean saka proses kasebut.
Uga bagéan saka negara sistem ndhaftar. Akeh instruksi ngarahake kanggo ngganti nilai register utawa maca nilai, lan kanthi mangkono ndhaftar uga dadi bagéyan penting saka operasi saka proses.
Perlu dicathet yen negara mesin uga dibentuk saka sawetara register khusus. Tuladhane, IP - pitunjuk instruksi - pointer kanggo instruksi sing program lagi dileksanakake. Ana uga pitunjuk tumpukan lan gegayutan karo iku pitunjuk pigura, sing digunakake kanggo ngatur: paramèter fungsi, variabel lokal lan alamat bali.
Pungkasan, program asring ngakses ROM (memori mung diwaca). Informasi "I / O" (input / output) iki kudu kalebu dhaptar file sing saiki dibukak dening proses kasebut.

Proses API

Kanggo nambah pemahaman babagan cara proses kasebut, ayo sinau conto panggilan sistem sing kudu dilebokake ing antarmuka sistem operasi. API iki kasedhiya ing siji utawa liyane ing OS apa wae.

nggawe (nggawe): OS kudu kalebu sawetara cara sing ngijini sampeyan kanggo nggawe pangolahan anyar. Nalika sampeyan ngetik printah menyang terminal utawa mbukak aplikasi kanthi ngeklik kaping pindho ing lambang, telpon bakal dikirim menyang OS kanggo nggawe proses anyar lan banjur miwiti program kasebut.
Pambusakan: Amarga ana antarmuka kanggo nggawe proses, OS uga kudu menehi kemampuan kanggo meksa mbusak proses. Umume program bakal diwiwiti lan mandheg dhewe nalika lagi mlaku. Yen ora, pangguna pengin bisa mateni wong-wong mau lan kanthi mangkono antarmuka kanggo mungkasi proses kasebut bakal migunani.
ngenteni (ngenteni): Kadang iku migunani kanggo ngenteni proses rampung, supaya sawetara antarmuka kasedhiya sing nyedhiyani kemampuan kanggo ngenteni.
Misc Kontrol (macem-macem kontrol): Saliyane matèni lan nunggu proses, ana uga macem-macem cara kontrol liyane. Contone, umume sistem operasi nyedhiyakake kemampuan kanggo beku proses (mandheg eksekusi sajrone wektu tartamtu) banjur nerusake (terus eksekusi)
status (negara): Ana macem-macem antarmuka kanggo entuk sawetara informasi babagan status proses, kayata suwene wis mlaku utawa negara apa saiki.

Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Proses Nggawe: Rincian

Salah sawijining perkara sing menarik yaiku kepiye program diowahi dadi proses. Utamane carane OS njupuk lan mbukak program kasebut. Carane persis proses digawe.
Kaping pisanan, OS kudu mbukak kode program lan data statis menyang memori (menyang ruang alamat proses). Program biasane ana ing disk utawa solid-state drive ing sawetara format sing bisa dieksekusi. Mangkono, proses loading program lan data statis menyang memori mbutuhake OS bisa maca bita kasebut saka disk lan nyelehake ing endi wae ing memori.

Ing sistem operasi awal, proses loading ditindakake kanthi semangat, tegese kabeh kode dimuat ing memori sadurunge program diluncurake. Sistem operasi modern nindakake iki kanthi kesed, yaiku, ngemot potongan kode utawa data mung nalika program mbutuhake sajrone eksekusi.

Sawise kode lan data statis dimuat menyang memori OS, ana sawetara perkara liyane sing kudu ditindakake sadurunge proses bisa mlaku. Sawetara jumlah memori kudu diparengake kanggo tumpukan. Program nggunakake tumpukan kanggo variabel lokal, parameter fungsi, lan alamat bali. OS nyedhiyakake memori iki lan menehi proses kasebut. Tumpukan uga bisa diparengake karo sawetara bantahan, khusus ngisi paramèter saka fungsi utama (), contone, karo Uploaded argc lan argv.

Sistem operasi uga bisa nyedhiyakake sawetara memori menyang tumpukan program. Heap digunakake dening program kanggo njaluk data sing dialokasikan kanthi dinamis. Program njaluk papan iki kanthi nelpon fungsi kasebut malloc () lan mbusak kanthi tegas kanthi nelpon fungsi kasebut gratis(). Tumpukan kasebut dibutuhake kanggo struktur data kayata sheet link, tabel hash, wit lan liya-liyane. Ing kawitan, jumlah cilik saka memori diparengake kanggo numpuk, nanging liwat wektu, minangka program mlaku, numpuk bisa njaluk memori luwih liwat perpustakaan API nelpon malloc (). Sistem operasi melu proses alokasi memori luwih akeh kanggo mbantu ngrampungake telpon kasebut.

Sistem operasi uga bakal nindakake tugas inisialisasi, utamane sing ana gandhengane karo I/O. Contone, ing sistem UNIX, saben proses kanthi standar duwe 3 deskriptor file sing mbukak, kanggo input, output, lan kesalahan standar. Ngalahake iki ngidini program maca input saka terminal uga nampilake informasi ing layar.

Mangkono, kanthi ngemot kode lan data statis menyang memori, nggawe lan miwiti tumpukan, lan nindakake pakaryan liyane sing ana gandhengane karo tugas I / O, OS nyiapake tahapan kanggo proses kasebut. Akhire, ana siji tugas pungkasan: mbukak program liwat titik entri sawijining, disebut fungsi utama (). Kanthi nglakokaké fungsi utama (), OS nransfer kontrol CPU menyang proses mentas digawe, mangkono program wiwit nglakokaké.

Status proses

Saiki kita duwe sawetara pangerten babagan apa proses lan cara digawe, ayo dhaptar proses kasebut bisa ditindakake. Ing wangun sing paling gampang, proses bisa ana ing salah sawijining negara:
mlaku. Nalika mlaku, proses mlaku ing prosesor. Iki tegese instruksi ditindakake.
siap. Ing negara siap, proses wis siyap kanggo mbukak, nanging sakperangan alesan OS ora nindakake ing wektu tartamtu.
diblokir. Ing negara sing diblokir, proses nindakake sawetara operasi sing nyegah supaya ora siyap dieksekusi nganti sawetara acara kedadeyan. Conto umum yaiku nalika proses miwiti operasi IO, mula diblokir supaya sawetara proses liyane bisa nggunakake prosesor.

Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Sampeyan bisa mbayangno negara kasebut ing wangun grafik. Minangka kita bisa ndeleng ing gambar, negara proses bisa ngganti antarane RUNNING lan READY ing discretion saka OS. Nalika kahanan proses diganti saka READY kanggo RUNNING, tegese proses wis dijadwal. Ing arah ngelawan - dibusak saka tata letak. Ing wayahe nalika proses dadi BLOCKED, contone, aku miwiti operasi IO, OS bakal tetep ing negara iki nganti sawetara acara, contone completion saka IO. ing wayahe transisi menyang negara READY lan bisa langsung menyang negara RUNNING yen OS nemtokaken supaya.
Ayo goleki conto carane rong proses pindhah ing negara kasebut. Kanggo miwiti, ayo bayangake yen proses loro kasebut mlaku, lan saben nggunakake CPU mung. Ing kasus iki, negara bakal katon kaya iki.

Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Ing conto ing ngisor iki, proses pisanan, sawise sawetara wektu mlaku, njaluk IO lan lumebu ing negara BLOCKED, ngidini proses liyane kanggo mbukak (FIG 1.4). OS ndeleng yen proses 0 ora nggunakake CPU lan miwiti proses 1. Nalika proses 1 mlaku, IO wis rampung lan status proses 0 diganti dadi READY. Pungkasan, proses 1 wis rampung, lan sawise rampung, proses 0 diwiwiti, dieksekusi, lan rampung.

Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Struktur data

OS dhewe minangka program, lan kaya program liyane, nduweni struktur data kunci sing nglacak macem-macem informasi sing relevan. Kanggo nglacak kahanan saben proses, OS bakal ndhukung sawetara dhaftar proses kanggo kabeh pangolahan ing negara READY lan sawetara informasi tambahan kanggo trek pangolahan sing lagi mlaku. Uga, OS kudu ngawasi proses sing diblokir. Sawise IO rampung, OS kudu tangi proses sing dibutuhake lan sijine ing negara siap kanggo mbukak.

Contone, OS kudu ngreksa negara ndhaftar prosesor. Ing wayahe proses mandheg, negara ndhaptar disimpen ing ruang alamat proses kasebut, lan ing wayahe operasi kasebut terus, nilai registrasi dibalekake lan kanthi mangkono nerusake eksekusi proses iki.

Saliyane siap, diblokir, mlaku negara, ana sawetara negara liyane. Kadhangkala, nalika nggawe, proses bisa uga ana ing negara INIT. Pungkasan, proses bisa diselehake ing negara FINAL nalika wis rampung, nanging informasi kasebut durung diresiki. Ing sistem UNIX negara iki diarani proses zombie. negara iki migunani kanggo kasus ngendi proses tuwane pengin ngerti kode bali saka anak, contone, biasane 0 sinyal sukses lan 1 kesalahan, nanging programer bisa ngetokake kode output tambahan kanggo sinyal masalah beda. Nalika proses tiyang sepah terminates, nggawe telpon sistem final, kayata Enteni (), kanggo ngenteni proses anak siksa lan sinyal kanggo OS sing bisa mbusak sembarang data gadhah proses mandhek.

Sistem Operasi: Telung Piece Gampang. Bagean 2: Abstraksi: Proses (terjemahan)

Titik utama saka ceramah:

proses - abstraksi utama program sing mlaku ing OS. Ing sembarang wektu tartamtu, proses bisa diterangake dening negara sawijining: isi memori ing papan alamat sawijining, isi ndhaftar prosesor, kalebu pitunjuk instruksi lan pitunjuk tumpukan, lan informasi IO, kayata file mbukak sing diwaca utawa ditulis.
Proses API kasusun saka telpon sing program bisa kanggo proses. Biasane iki nggawe, mbusak, utawa telpon liyane.
● Proses ing salah siji saka akeh negara, kalebu mlaku, siap, diblokir. Macem-macem acara kayata jadwal, pangecualian saka jadwal, utawa ngenteni bisa ngganti kahanan proses saka siji menyang liyane.
Daftar pangolahan ngemot informasi babagan kabeh proses ing sistem. Saben entri kasebut diarani blok kontrol proses, sing sejatine minangka struktur sing ngemot kabeh informasi sing dibutuhake babagan proses tartamtu. 

Source: www.habr.com

Add a comment