Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Pasiuna sa Operating System

Hoy Habr! Gusto nakong dad-on sa imong pagtagad ang usa ka serye sa mga artikulo-paghubad sa usa ka makapaikag nga literatura sa akong opinyon - OSTEP. Gihisgutan sa kini nga materyal nga lawom ang trabaho sa mga operating system nga sama sa unix, nga mao, pagtrabaho kauban ang mga proseso, lainlaing mga scheduler, memorya, ug uban pang parehas nga mga sangkap nga naglangkob sa usa ka modernong OS. Makita nimo ang orihinal sa tanang materyales dinhi dinhi. Palihug timan-i nga ang paghubad gihimo nga dili propesyonal (medyo gawasnon), apan nanghinaut ko nga akong gihuptan ang kinatibuk-ang kahulugan.

Ang trabaho sa lab sa kini nga hilisgutan makita dinhi:
- orihinal: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- orihinal: github.com/remzi-arpacidusseau/ostep-code
- akong personal nga pagpahiangay: github.com/bykvaadm/OS/tree/master/ostep

Mahimo usab nimo tan-awon ang akong channel sa telegram =)

Operasyon sa programa

Unsa ang mahitabo kung ang usa ka programa nagdagan? Ang nagdagan nga programa usa ka yano nga butang - kini nagpatuman sa mga panudlo. Matag segundo, milyon-milyon ug mahimo’g bilyon-bilyon nga mga panudlo ang makuha sa processor gikan sa RAM, sa baylo gi-decode kini (pananglitan, nahibal-an kung unsang klase kini nga mga panudlo) ug gipatuman kini. Mahimo kini nga pagdugang og duha ka numero, pag-access sa memorya, pagsusi sa usa ka kondisyon, paglukso sa usa ka function, ug uban pa. Human sa pagpatuman sa usa ka instruksiyon, ang processor nagpadayon sa pagpatuman sa lain. Ug busa instruksyon human sa instruksyon, kini ipatuman hangtod matapos ang programa.
Kini nga pananglitan natural nga giisip nga gipasimple - sa tinuud, aron mapadali ang processor, gitugotan ka sa modernong hardware nga ipatuman ang mga panudlo nga wala’y turno, kalkulado ang posible nga mga sangputanan, ipatuman ang mga panudlo nga dungan, ug parehas nga mga limbong.

Von Neumann nga modelo sa pagkalkula

Ang gipasimple nga porma sa trabaho nga gihulagway namo susama sa Von Neumann model of computation. Si Von Neumann usa sa mga pioneer sa mga sistema sa kompyuter, usa usab siya sa mga tagsulat sa teorya sa dula. Samtang ang programa nagdagan, usa ka hugpong sa ubang mga panghitabo ang nahitabo, daghang uban pang mga proseso ug ikatulo nga partido nga lohika nga nagtrabaho, ang panguna nga katuyoan niini mao ang pagpasimple sa paglansad, operasyon ug pagpadayon sa sistema.
Adunay usa ka set sa software nga responsable sa paghimo sa mga programa nga dali nga modagan (o bisan ang pagtugot sa daghang mga programa sa pagdagan sa parehas nga oras), nga nagtugot sa mga programa nga magpaambit sa parehas nga memorya, ug makigsulti sa lainlaing mga aparato. Ang ingon nga usa ka hugpong sa software (software) sa esensya gitawag nga operating system ug ang mga buluhaton niini naglakip sa pag-monitor nga ang sistema nagtrabaho sa husto ug episyente, ingon man pagsiguro sa kasayon ​​sa pagdumala niini nga sistema.

operating sistema sa

Ang operating system, pinamubo nga OS, usa ka hugpong sa mga programa nga adunay kalabutan nga gidesinyo sa pagdumala sa mga kapanguhaan sa kompyuter ug pag-organisar sa interaksyon sa tiggamit sa usa ka kompyuter..
Nakab-ot sa OS ang pagka-epektibo niini sa una, pinaagi sa labing hinungdanon nga teknik - ang teknik virtualization. Ang OS nakig-uban sa usa ka pisikal nga kapanguhaan (processor, memorya, disk, ug uban pa) ug nagbag-o niini ngadto sa usa ka mas kinatibuk-an, mas gamhanan, ug mas sayon ​​​​gamiton nga porma sa iyang kaugalingon. Busa, alang sa usa ka kinatibuk-ang pagsabut, mahimo nimo nga halos itandi ang operating system sa usa ka virtual machine.
Aron tugotan ang mga tiggamit sa paghatag og mga sugo sa operating system ug sa ingon magamit ang mga kapabilidad sa virtual machine (sama sa pagpadagan sa usa ka programa, paggahin og memorya, pag-access sa usa ka file, ug uban pa), ang operating system naghatag og pipila ka interface nga gitawag API (aplikasyon sa programming interface) ug diin mahimo nimong tawagan (tawag). Ang usa ka tipikal nga operating system nagtugot sa gatusan nga mga tawag sa sistema nga mahimo.
Sa katapusan, tungod kay ang virtualization nagtugot sa daghang mga programa nga modagan (sa ingon nagpaambit sa CPU), ug dungan nga maka-access sa ilang mga instruksyon ug data (sa ingon nagpaambit sa memorya), ug maka-access sa mga disk (sa ingon nagpaambit sa I/O nga mga device). ), ang operating system gitawag usab nga usa ka tagdumala sa kapanguhaan. Ang matag processor, disk ug memorya usa ka kapanguhaan sa sistema, ug sa ingon usa sa mga tahas sa operating system nahimo nga tahas sa pagdumala niini nga mga kapanguhaan, pagbuhat niini nga episyente, matinud-anon, o vice versa, depende sa tahas kung diin kini nga operating system gidesinyo.

CPU virtualization

Tagda ang mosunod nga programa:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Wala kini maghimo ug bisan unsang espesyal nga mga aksyon, sa tinuud, ang tanan nga gihimo niini mao ang pagtawag usa ka function pagtuyok(), kansang tahas mao ang pag-cycle pinaagi sa pagsusi sa oras ug pagbalik pagkahuman sa usa ka segundo. Sa ingon, gisubli niini hangtod sa hangtod ang pisi nga gipasa sa tiggamit ingon usa ka argumento.
Atong padagan kini nga programa ug ipasa kini sa karakter nga "A" isip argumento. Ang resulta dili kaayo makapaikag - ang sistema yano nga nagpatuman sa usa ka programa nga matag karon ug unya nagpakita sa karakter nga "A".
Karon atong sulayan ang kapilian kung daghang mga higayon sa parehas nga programa ang nagdagan, apan nagpagawas sa lainlaing mga letra aron mas klaro. Sa kini nga kaso, ang resulta mahimong medyo lahi. Bisan pa sa kamatuoran nga kami adunay usa ka processor, ang programa dungan nga gipatuman. Giunsa kini mahitabo? Apan kini nahimo nga ang operating system, dili kung wala ang tabang sa mga kapabilidad sa hardware, nagmugna usa ka ilusyon. Ang ilusyon nga ang sistema adunay daghang virtual nga mga processor, nga naghimo sa usa ka pisikal nga processor ngadto sa usa ka theoretically walay kinutuban nga numero ug sa ingon nagtugot sa daw mga programa sa pagdagan nga dungan. Gitawag kini nga ilusyon CPU virtualization.
Kini nga hulagway nagpatunghag daghang mga pangutana, pananglitan, kung daghang mga programa ang gustong modagan sa samang higayon, hain ang ilusad? Ang "mga polisiya" sa OS maoy responsable niini nga pangutana. Ang mga palisiya gigamit sa daghang mga lugar sa OS ug pagtubag sa mga pangutana nga sama niini, ug mao ang sukaranan nga mga mekanismo nga gipatuman sa OS. Busa ang papel sa OS isip usa ka tigdumala sa kapanguhaan.

Virtualization sa memorya

Karon atong tan-awon ang memorya. Ang pisikal nga modelo sa memorya sa modernong mga sistema girepresentahan isip usa ka han-ay sa mga byte.. Aron mabasa gikan sa panumduman, kinahanglan nimo nga ipiho adres sa cellaron ma-access kini. Aron magsulat o mag-update sa datos, kinahanglan nimo nga ipiho ang datos ug ang adres sa cell kung asa kini isulat.
Ang memorya kanunay nga gi-access sa panahon sa pagpatuman sa programa. Gitipigan sa usa ka programa ang tibuuk nga istruktura sa datos sa memorya ug gi-access kini pinaagi sa pagpatuman sa lainlaing mga panudlo. Ang mga instruksyon, sa laing bahin, gitipigan usab sa panumduman, mao nga ma-access usab kini alang sa matag hangyo alang sa sunod nga panudlo.

malloc() tawag

Tagda ang mosunod nga programa, nga naggahin ug rehiyon sa memorya gamit ang tawag malloc () (https://youtu.be/jnlKRnoT1m0):

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Ang programa adunay daghang mga butang. Una, naggahin kini og pipila ka panumduman (linya 7), dayon gipatik ang adres sa gigahin nga selula (linya 9), nagsulat og sero sa unang slot sa gigahin nga memorya. Sunod, ang programa mosulod sa usa ka loop diin kini nagdugang sa kantidad nga gitipigan sa memorya sa adres sa "p" variable. Kini usab nag-imprinta sa proseso ID sa iyang kaugalingon. Ang ID sa proseso talagsaon alang sa matag proseso nga nagdagan. Ang paglansad sa daghang mga kopya, makit-an namon ang usa ka makapaikag nga sangputanan: Sa una nga kaso, kung wala ka’y buhaton ug nagpadagan lang daghang mga kopya, nan magkalainlain ang mga adres. Apan kini wala mahulog ubos sa atong teorya! Husto, tungod kay ang modernong mga distribusyon adunay memory randomization nga gipalihok pinaagi sa default. Kung kini gibabagan, makuha namon ang gipaabut nga sangputanan - ang mga adres sa panumduman sa duha nga dungan nga nagdagan nga mga programa magkatugma.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Ingon usa ka sangputanan, nahimo nga ang duha nga independente nga mga programa nagtrabaho uban ang ilang kaugalingon nga pribado nga mga lugar sa adres, nga sa baylo gimapa sa operating system sa pisikal nga panumduman.. Busa, ang paggamit sa mga address sa memorya sulod sa usa ka programa dili makaapekto sa uban sa bisan unsa nga paagi, ug kini daw sa matag programa nga kini adunay iyang kaugalingon nga piraso sa pisikal nga panumduman, sa bug-os nga gihatag niini. Ang tinuod, bisan pa, mao nga ang pisikal nga panumduman usa ka gipaambit nga kapanguhaan nga gidumala sa operating system.

pagkamakanunayon

Ang laing importante nga mga hilisgutan sulod sa mga operating system mao ang βˆ’ pagkamakanunayon. Kini nga termino gigamit kung maghisgot bahin sa mga problema sa sistema nga mahimong mahitabo kung nagtrabaho sa daghang mga butang sa parehas nga oras sulod sa parehas nga programa. Ang mga isyu sa pagkamakanunayon mitungha bisan sa sulod mismo sa operating system. Sa miaging panumduman ug processor virtualization nga mga pananglitan, nahibal-an namon nga ang OS nagdumala daghang mga butang sa parehas nga oras - nagsugod kini sa una nga proseso, dayon ang ikaduha, ug uban pa. Ingon sa nahimo, kini nga pamatasan mahimong mosangput sa pipila ka mga problema. Busa, pananglitan, ang modernong multi-threaded nga mga programa makasinati sa maong mga kalisdanan.

Tagda ang mosunod nga programa:

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Ang programa sa main function nagmugna og duha ka mga hilo gamit ang tawag pthread_create(). Niini nga pananglitan, ang usa ka hilo mahimong isipon nga usa ka function nga nagdagan sa parehas nga memory space kauban ang ubang mga function, nga adunay klaro nga labaw sa usa ka function nga nagdagan sa parehas nga oras. Sa kini nga pananglitan, ang matag hilo magsugod ug ipatuman ang function worker() nga sa baylo nagdugang lamang sa variable,.

Atong daganon kini nga programa nga adunay argumento nga 1000. Sama sa imong natag-an, ang resulta kinahanglan nga 2000 tungod kay ang matag thread nagdugang sa variable nga 1000 ka beses. Bisan pa, ang tanan dili kaayo yano. Atong sulayan ang pagpadagan sa programa nga adunay usa ka han-ay sa magnitude nga daghang mga pagbalik-balik.

Mga Operating System: Tulo ka Sayon nga Piraso. Bahin 1: Intro (paghubad)

Pinaagi sa pag-input sa usa ka numero, pananglitan, 100000, gipaabut namon nga makita ang output ingon ang numero nga 200000. Bisan pa, kung gipadagan namon ang numero nga 100000 sa daghang mga higayon, dili lamang namon makita ang husto nga tubag, apan makakuha usab lainlaing dili husto nga mga tubag. Ang tubag anaa sa kamatuoran nga aron madugangan ang gidaghanon, tulo ka mga operasyon ang gikinahanglan - pagkuha sa numero gikan sa memorya, pagdugang, ug dayon pagsulat sa numero balik. Tungod kay kining tanan nga mga instruksyon wala gipatuman sa atomically (tanan sa samang higayon), ang mga katingad-an nga mga butang nga sama niini mahimong mahitabo. Kini nga problema gitawag sa programming kahimtang sa lumba. Kung ang wala mailhi nga mga pwersa sa wala mailhi nga higayon makaapekto sa paghimo sa bisan unsang imong mga operasyon.

Source: www.habr.com

Idugang sa usa ka comment