Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (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:

Sampeyan uga bisa mriksa saluranku ing telegram =)

Operasi program

Apa sing kedadeyan nalika program mlaku? Program sing mlaku nindakake siji prasaja - nglakokake instruksi. Saben detik, mayuta-yuta lan malah bisa uga milyaran instruksi dijupuk dening prosesor saka RAM, banjur decode mau (contone, iku ngenali jinis instruksi iki kagungane) lan kaleksanan. Iki bisa uga nambah rong nomer, ngakses memori, mriksa kondisi, mlumpat menyang fungsi, lan liya-liyane. Sawise eksekusi siji instruksi, prosesor nerusake menyang eksekusi liyane. Dadi instruksi sawise instruksi, dieksekusi nganti program rampung.

Conto iki dianggep disederhanakake - nyatane, kanggo nyepetake prosesor, hardware modern ngidini sampeyan nglakokake instruksi, ngetung asil sing bisa ditindakake, nglakokake instruksi bebarengan, lan trik sing padha.

Model komputasi Von Neumann

Bentuk karya sing disederhanakake sing diterangake dening kita padha karo model komputasi Von Neumann. Von Neumann minangka salah sawijining pelopor sistem komputer, uga salah sawijining penulis teori game. Nalika program lagi mlaku, ana sawetara acara liyane, akeh proses liyane lan logika pihak katelu, tujuan utama yaiku kanggo nyederhanakake peluncuran, operasi lan pangopènan sistem.

Ana piranti lunak sing tanggung jawab kanggo nggawe program gampang kanggo mbukak (utawa malah ngidini sawetara program kanggo mbukak ing wektu sing padha), sing ngidini program kanggo nuduhake memori padha, lan kanggo komunikasi karo piranti beda. Sakumpulan piranti lunak (perangkat lunak) kasebut sejatine diarani sistem operasi lan tugase kalebu ngawasi manawa sistem kasebut bisa digunakake kanthi bener lan efisien, uga mesthekake manawa sistem kasebut gampang diatur.

sistem operasi

Sistem operasi, sing disingkat OS, yaiku sakumpulan program sing saling gegandhengan sing dirancang kanggo ngatur sumber daya komputer lan ngatur interaksi pangguna karo komputer..

OS entuk efektifitas ing wiwitan, liwat teknik sing paling penting - teknik virtualisasi. OS sesambungan karo sumber daya fisik (prosesor, memori, disk, etc.) lan ngowahi iku dadi luwih umum, luwih kuat, lan luwih gampang kanggo nggunakake wangun dhewe. Mulane, kanggo pemahaman umum, sampeyan bisa mbandhingake sistem operasi karo mesin virtual.

Kanggo ngidini pangguna menehi prentah menyang sistem operasi lan kanthi mangkono nggunakake kemampuan mesin virtual (kayata mbukak program, ngalokasi memori, ngakses file, lan liya-liyane), sistem operasi nyedhiyakake sawetara antarmuka sing diarani. API (antarmuka program aplikasi) lan sampeyan bisa nelpon (telpon). Sistem operasi khas ngidini atusan telpon sistem bisa digawe.

Pungkasan, amarga virtualisasi ngidini macem-macem program bisa mlaku (saiki nuduhake CPU), lan kanthi bebarengan ngakses instruksi lan data (saiki nuduhake memori), lan ngakses disk (saiki nuduhake piranti I / O). ), sistem operasi kasebut uga disebut a manajer sumber daya. Saben prosesor, disk lan memori minangka sumber daya sistem, lan kanthi mangkono salah sawijining peran sistem operasi dadi tugas kanggo ngatur sumber daya kasebut, nindakake kanthi efisien, jujur, utawa kosok balene, gumantung saka tugas sistem operasi iki. wis dirancang.

virtualisasi CPU

Coba program ing ngisor iki:
(https://www.youtube.com/watch?v=zDwT5fUcki4)

Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (terjemahan)

Ora nindakake tumindak khusus, nyatane, mung nelpon fungsi muter(), kang tugas kanggo siklus liwat mriksa wektu lan bali sawise siji detik wis liwati. Mangkono, iku mbaleni tanpa wates senar sing pangguna liwati minangka argumen.

Ayo mbukak program iki lan pass karakter "A" minangka argumen. Asil ora utamané menarik - sistem mung nglakokaké program sing periodik nampilake karakter "A".

Saiki ayo nyoba pilihan kasebut nalika akeh conto program sing padha mlaku, nanging ngasilake huruf sing beda supaya luwih jelas. Ing kasus iki, asil bakal rada beda. Senadyan kasunyatan manawa kita duwe prosesor siji, program kasebut dieksekusi bebarengan. Kepriye kedadeyane? Nanging ternyata sistem operasi, ora tanpa bantuan saka kemampuan hardware, nggawe khayalan. Ilusi sing sistem wis sawetara prosesor virtual, ngowahi prosesor fisik siji menyang nomer teoritis tanpa wates lan saéngga program ketoke kanggo mbukak bebarengan. Ilusi iki diarani virtualisasi CPU.

Gambar iki nuwuhake akeh pitakonan, umpamane, yen sawetara program pengin mbukak bebarengan, sing bakal diluncurake? "Kabijakan" OS tanggung jawab kanggo pitakonan iki. Kabijakan digunakake ing akeh panggonan ing OS lan njawab pitakonan kaya iki, lan minangka mekanisme dhasar sing ditindakake OS. Mula peran OS minangka manajer sumber daya.

Virtualisasi memori

Saiki ayo ndeleng memori. Model fisik memori ing sistem modern diwakili minangka array byte.. Kanggo maca saka memori, sampeyan kudu nemtokake alamat selkanggo ngakses. Kanggo nulis utawa nganyari data, sampeyan uga kudu nemtokake data lan alamat sel kanggo nulis.

Memori diakses terus-terusan sajrone eksekusi program. Program nyimpen kabeh struktur data ing memori lan ngakses kanthi nindakake macem-macem instruksi. Instruksi kasebut uga disimpen ing memori, saengga bisa diakses kanggo saben panyuwunan instruksi sabanjure.

malloc() telpon

Coba program ing ngisor iki, kang allocates wilayah memori nggunakake telpon malloc () (https://youtu.be/jnlKRnoT1m0):

Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (terjemahan)

Program kasebut nindakake sawetara perkara. First, iku allocates sawetara memori (baris 7), banjur prints alamat sel diparengake (baris 9), nyerat nul kanggo slot pisanan memori diparengake. Sabanjure, program kasebut mlebu ing daur ulang sing nambah nilai sing disimpen ing memori ing alamat ing variabel "p". Uga nyithak ID proses dhewe. ID proses unik kanggo saben proses sing mlaku. Sawise ngluncurake sawetara salinan, kita bakal kesandhung asil sing menarik: Ing kasus sing sepisanan, yen sampeyan ora nindakake apa-apa lan mung mbukak sawetara salinan, mula alamat bakal beda. Nanging iki ora kalebu ing teori kita! Bener, wiwit distribusi modern wis memori acak diaktifake minangka standar. Yen dipateni, kita entuk asil sing dikarepake - alamat memori saka rong program sing mlaku bebarengan bakal cocog.

Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (terjemahan)

Akibaté, pranyata loro program independen bisa digunakake karo spasi alamat pribadi dhewe, sing banjur dipetakan dening sistem operasi ing memori fisik.. Mulane, nggunakake alamat memori ing siji program ora mengaruhi liyane ing sembarang cara, lan misale jek saben program wis Piece dhewe saka memori fisik, tanggung diwenehi kanggo. Nanging kasunyatane, memori fisik minangka sumber daya sing dienggo bareng sing dikelola dening sistem operasi.

Konsistensi

Topik penting liyane ing sistem operasi yaiku − konsistensi. Istilah iki digunakake nalika ngomong babagan masalah ing sistem sing bisa kedadeyan nalika nggarap akeh perkara ing wektu sing padha ing program sing padha. Masalah konsistensi muncul sanajan ing sistem operasi dhewe. Ing conto virtualisasi memori lan prosesor sadurunge, kita nyadari yen OS ngatur akeh perkara ing wektu sing padha - miwiti proses pisanan, banjur kaloro, lan sateruse. Ternyata, prilaku iki bisa nyebabake sawetara masalah. Dadi, contone, program multi-threaded modern ngalami kesulitan kasebut.

Coba program ing ngisor iki:

Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (terjemahan)

Program ing fungsi utama nggawe rong utas nggunakake telpon pthread_create(). Ing conto iki, utas bisa dianggep minangka fungsi sing mlaku ing ruang memori sing padha bebarengan karo fungsi liyane, kanthi jelas luwih saka siji fungsi sing mlaku bebarengan. Ing conto iki, saben utas diwiwiti lan nglakokake fungsi kasebut worker () sing mung nambah variabel,.

Ayo mbukak program iki kanthi argumen 1000. Kaya sing wis sampeyan duga, asile kudu 2000 amarga saben thread nambah variabel 1000 kaping. Nanging, kabeh ora dadi prasaja. Ayo dadi nyoba kanggo mbukak program karo urutan gedhene repetitions.

Sistem Operasi: Telung Piece Gampang. Bagean 1: Pambuka (terjemahan)

Kanthi ngetik nomer, contone, 100000, kita ngarep-arep kanggo ndeleng output minangka nomer 200000. Nanging, yen kita mbukak nomer 100000 kaping pirang-pirang, kita ora mung ora bakal weruh jawaban sing bener, nanging uga njaluk jawaban salah beda. Jawaban dumunung ing kasunyatan sing kanggo nambah nomer, telung operasi dibutuhake - extract nomer saka memori, incrementing, lan banjur nulis nomer maneh. Amarga kabeh instruksi kasebut ora dieksekusi sacara atom (kabeh bebarengan), kedadeyan aneh kaya iki bisa kedadeyan. Masalah iki diarani pemrograman kahanan lomba. Nalika pasukan sing ora dingerteni ing wektu sing ora dingerteni bisa mengaruhi kinerja operasi sampeyan.

Source: www.habr.com

Add a comment