Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (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 rada deeply karya sistem operasi unix-kawas, nyaéta, gawé bareng prosés, rupa schedulers, memori sareng komponenana sarupa lianna nu ngawangun hiji 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:
- asli: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- asli: github.com/remzi-arpacidusseau/ostep-code
- adaptasi pribadi kuring: github.com/bykvaadm/OS/tree/master/ostep

Anjeun oge bisa pariksa kaluar channel abdi di telegram =)

Operasi program

Naon anu lumangsung nalika program dijalankeun? Hiji program ngajalankeun ngalakukeun hiji hal basajan - eta executes parentah. Unggal detik, jutaan bahkan mungkin milyaran paréntah dicandak ku prosésor tina RAM, teras nga-decode aranjeunna (contona, ngakuan naon jinis paréntah ieu) sareng ngalaksanakeunana. Ieu tiasa nambihan dua nomer, ngaksés mémori, mariksa kaayaan, ngaluncat kana fungsi, sareng saterasna. Sanggeus palaksanaan hiji instruksi, processor proceeds ka palaksanaan sejen. Tur jadi instruksi sanggeus instruksi, aranjeunna dieksekusi dugi program ends.
Conto ieu sacara alami dianggap disederhanakeun - kanyataanna, pikeun nyepetkeun prosésor, hardware modern ngamungkinkeun anjeun pikeun ngalaksanakeun paréntah kaluar giliran, ngitung hasil anu mungkin, ngalaksanakeun paréntah sakaligus, sareng trik anu sami.

Modél komputasi Von Neumann

Bentuk karya saderhana anu dijelaskeun ku urang sami sareng modél komputasi Von Neumann. Von Neumann mangrupakeun salah sahiji panaratas sistem komputer, anjeunna oge salah sahiji pangarang téori kaulinan. Nalika programna dijalankeun, sakumpulan kajadian anu sanés kajantenan, seueur prosés sanés sareng logika pihak katilu anu dianggo, tujuan utama nyaéta pikeun nyederhanakeun peluncuran, operasi sareng pangropéa sistem.
Aya sakumpulan parangkat lunak anu tanggung jawab pikeun ngajantenkeun program gampang dijalankeun (atanapi ngamungkinkeun sababaraha program dijalankeun dina waktos anu sami), anu ngamungkinkeun program pikeun ngabagi mémori anu sami, sareng komunikasi sareng alat anu béda. Sapertos parangkat lunak (software) dina dasarna disebut sistem operasi sareng tugasna kalebet ngawaskeun yén sistem éta jalanna leres sareng éfisién, ogé mastikeun betah ngokolakeun sistem ieu.

sistem operasi

Sistem operasi, disingget salaku OS, nyaéta sakumpulan program anu aya hubunganana anu dirancang pikeun ngatur sumber daya komputer sareng ngatur interaksi pangguna sareng komputer..
OS ngahontal efektivitas na di tempat munggaran, ngaliwatan téhnik pangpentingna - téhnik virtualisasi. OS berinteraksi sareng sumberdaya fisik (processor, memori, disk, jsb) sarta transforms kana bentuk leuwih umum, leuwih kuat, sarta gampang-to-pamakéan sorangan. Ku alatan éta, pikeun pamahaman umum, anjeun tiasa pisan kasarna ngabandingkeun sistem operasi jeung mesin virtual.
Dina raraga ngidinan pamaké pikeun méré paréntah ka sistem operasi sahingga ngagunakeun kamampuhan tina mesin virtual (kayaning ngajalankeun program, allocating memori, ngakses file, jeung saterusna), sistem operasi nyadiakeun sababaraha panganteur disebut. API (antarmuka program aplikasi) sareng anjeun tiasa nelepon (nelepon). Sistem operasi anu biasa ngamungkinkeun ratusan telepon sistem tiasa dilakukeun.
Tungtungna, saprak virtualization ngamungkinkeun sababaraha program pikeun ngajalankeun (sahingga babagi CPU), sarta sakaligus ngakses parentah maranéhanana sarta data (sahingga babagi memori), sarta aksés disk (sahingga babagi I / O alat). ), sistem operasi disebut oge a manajer sumberdaya. Unggal prosésor, disk sareng mémori mangrupikeun sumber sistem, sahingga salah sahiji peran sistem operasi janten tugas pikeun ngatur sumber daya ieu, ngalakukeun éta éfisién, jujur, atanapi sabalikna, gumantung kana tugas anu sistem operasi ieu. dirancang.

virtualisasi CPU

Pertimbangkeun program di handap ieu:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (tarjamahan)

Éta henteu ngalakukeun tindakan khusus, kanyataanna, sadaya anu dilakukeun nyaéta nyauran fungsi muter(), anu tugasna pikeun siklus ngaliwatan cék waktos sareng uih deui saatos sadetik. Ku kituna, eta repeats salamina string anu pamaké diliwatan salaku argumen.
Hayu urang ngajalankeun program ieu sarta lulus eta karakter "A" salaku argumen. Hasilna teu utamana metot - sistem saukur executes program nu périodik mintonkeun karakter "A".
Ayeuna hayu urang cobian pilihan nalika seueur instansi program anu sami dijalankeun, tapi ngaluarkeun hurup anu béda supados langkung jelas. Dina hal ieu, hasilna bakal rada béda. Najan kanyataan yén urang boga hiji processor, program ieu dieksekusi sakaligus. Kumaha kajadianana? Tapi tétéla yén sistem operasi, henteu tanpa bantosan kamampuan hardware, nyiptakeun ilusi. Ilusi yén sistem ngabogaan sababaraha prosesor virtual, ngarobah hiji prosésor fisik tunggal kana jumlah téoritis taya wates jeung sahingga sahingga program sigana ngajalankeun sakaligus. ilusi ieu disebut virtualisasi CPU.
Gambar ieu nyababkeun seueur patarosan, contona, upami sababaraha program hoyong dijalankeun dina waktos anu sami, mana anu bakal diluncurkeun? "Kawijakan" OS nanggungjawaban kanggo patarosan ieu. Kawijakan dianggo di seueur tempat dina OS sareng ngajawab patarosan sapertos kieu, sareng mangrupikeun mékanisme dasar anu diimplementasikeun ku OS. Ku kituna peran OS salaku manajer sumberdaya.

Virtualisasi mémori

Ayeuna hayu urang nempo memori. Modél fisik mémori dina sistem modéren digambarkeun salaku sakumpulan bait.. Pikeun maca tina mémori, anjeun kedah netepkeun alamat sélpikeun ngakses eta. Pikeun nyerat atanapi ngapdet data, anjeun ogé kedah netepkeun data sareng alamat sél dimana nyeratna.
Mémori diaksés terus-terusan salami palaksanaan program. Hiji program nyimpen sakabéh struktur data na dina mémori jeung ngakses eta ku executing sagala rupa parentah. Parentah, Samentara éta, ogé disimpen dina mémori, ku kituna ogé diaksés pikeun tiap pamundut pikeun instruksi salajengna.

malloc () panggero

Mertimbangkeun program di handap ieu, nu allocates wewengkon memori ngagunakeun nelepon malloc () (https://youtu.be/jnlKRnoT1m0):

Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (tarjamahan)

Program éta ngalakukeun sababaraha hal. Kahiji, allocates sababaraha memori (jalur 7), lajeng prints alamat sél disadiakeun (jalur 9), nyerat enol ka slot munggaran memori disadiakeun. Salajengna, program asup kana loop dimana eta increments nilai disimpen dina mémori dina alamat dina variabel "p". Ogé prints ID prosés sorangan. Prosés ID unik pikeun tiap prosés jalan. Ngaluncurkeun sababaraha salinan, urang bakal titajong kana hasil anu pikaresepeun: Dina kasus anu pertama, upami anjeun henteu ngalakukeun nanaon sareng ngan ukur ngajalankeun sababaraha salinan, maka alamatna bakal béda. Tapi ieu teu digolongkeun dina téori urang! Leres, saprak distribusi modern gaduh randomization memori diaktipkeun sacara standar. Upami éta ditumpurkeun, urang nampi hasil anu dipiharep - alamat mémori dua program anu ngajalankeun sakaligus bakal cocog.

Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (tarjamahan)

Hasilna, tétéla yén dua program mandiri tiasa dianggo sareng rohangan alamat pribadina, anu dipetakeun ku sistem operasi dina mémori fisik.. Ku alatan éta, pamakéan alamat memori dina hiji program moal mangaruhan batur sagala cara, jeung sigana unggal program boga sapotong sorangan memori fisik, sagemblengna dibikeun ka eta. Kanyataanana, kumaha ogé, mémori fisik mangrupikeun sumber daya anu diurus ku sistem operasi.

Konsistensi

Sejen tina jejer penting dina sistem operasi nyaéta - konsistensi. Istilah ieu dianggo nalika nyarioskeun masalah dina sistem anu tiasa lumangsung nalika damel sareng seueur hal dina waktos anu sami dina program anu sami. Masalah konsistensi timbul sanajan dina sistem operasi sorangan. Dina mémori saméméhna sareng conto virtualisasi prosésor, urang sadar yén OS ngatur seueur hal dina waktos anu sami - éta ngamimitian prosés anu munggaran, teras anu kadua, sareng saterasna. Salaku tétéla, kabiasaan ieu bisa ngakibatkeun sababaraha masalah. Janten, contona, program multi-threaded modern ngalaman kasusah sapertos kitu.

Pertimbangkeun program di handap ieu:

Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (tarjamahan)

Program dina fungsi utama nyiptakeun dua benang nganggo sauran pthread_create(). Dina conto ieu, thread bisa dianggap salaku hiji fungsi ngajalankeun dina spasi memori sarua jeung fungsi sejen, kalawan jelas leuwih ti hiji fungsi jalan dina waktos anu sareng. Dina conto ieu, unggal thread dimimitian tur executes fungsi worker () anu dina gilirannana ngan nambahan variabel,.

Hayu urang ngajalankeun program ieu kalawan argumen 1000. Anjeun bisa geus ditebak, hasilna kudu 2000 sabab unggal thread incremented variabel 1000 kali. Sanajan kitu, sagalana teu jadi basajan. Hayu urang coba ngajalankeun program kalawan urutan gedena leuwih pangulangan.

Sistem operasi: Tilu Potongan Gampang. Bagian 1: Intro (tarjamahan)

Ku inputting angka, contona, 100000, urang ngaharepkeun ningali kaluaran salaku angka 200000. Sanajan kitu, lamun urang ngajalankeun angka 100000 sababaraha kali, urang moal ngan moal ningali jawaban nu bener, tapi ogé meunang jawaban salah béda. Jawabanna perenahna di kanyataan yén nambahanana jumlah merlukeun tilu operasi - extracting angka tina memori, incrementing lajeng nulis nomer deui. Kusabab sadaya paréntah ieu henteu dilaksanakeun sacara atom (sadayana dina waktos anu sami), hal-hal aneh sapertos kieu tiasa kajantenan. Masalah ieu disebut dina programming kaayaan lomba. Lamun kakuatan kanyahoan dina momen kanyahoan bisa mangaruhan kinerja salah sahiji operasi Anjeun.

sumber: www.habr.com

Tambahkeun komentar