Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

Gabatarwa zuwa Tsarukan Ayyuka

Hai Habr! Ina so in kawo muku jerin labarai-fassarar wallafe-wallafe guda ɗaya mai ban sha'awa a ra'ayina - OSTEP. Wannan abu yayi magana sosai game da aikin tsarin aiki-kamar unix, wato, aiki tare da matakai, masu tsarawa daban-daban, ƙwaƙwalwar ajiya, da sauran abubuwa makamantan waɗanda suka haɗa da OS na zamani. Kuna iya ganin asalin duk kayan anan a nan. Da fatan za a lura cewa fassarar an yi ta ne ba da ƙwararru ba (da yardar rai), amma ina fata na riƙe ma'anar gaba ɗaya.

Ana iya samun aikin Lab akan wannan batu a nan:

Sauran sassa:

Hakanan zaka iya duba tashar ta a sakon waya =)

Bari mu dubi mafi mahimmanci abstraction da OS ke bayarwa ga masu amfani: tsari. Ma'anar tsarin yana da sauƙi - shi ne shirin gudu. Shirin da kansa wani abu ne marar rai wanda ke kan faifai - tsari ne na umarni da yuwuwar wasu bayanan da ke jiran a ƙaddamar da su. OS ne ke daukar waɗancan bytes ɗin yana sarrafa su, yana mai da shirin zuwa wani abu mai amfani.
Mafi sau da yawa, masu amfani suna son gudanar da shirye-shirye fiye da ɗaya a lokaci guda, misali, za ku iya gudanar da browser, game, media player, editan rubutu, da makamantansu akan kwamfutar tafi-da-gidanka. A gaskiya ma, tsarin al'ada na iya tafiyar da dubun ko daruruwan matakai a lokaci guda. Wannan gaskiyar ta sa tsarin ya fi sauƙi don amfani, ba za ka taba damuwa da ko CPU kyauta ba ne, kawai kuna gudanar da shirye-shirye.

Wannan yana tayar da matsalar: yadda ake samar da ruɗin yawancin CPUs? Ta yaya OS zai iya haifar da ruɗi na kusan adadin CPUs mara iyaka, koda kuwa kuna da CPU na zahiri ɗaya kawai?

OS yana haifar da wannan ruɗi ta hanyar haɓakar CPU. Ta hanyar fara wani tsari, sannan a dakatar da shi, fara wani tsari, da sauransu, OS na iya kula da tunanin cewa akwai CPUs masu kama da juna, lokacin da za a sami guda ɗaya ko fiye da na'ura mai sarrafawa. Ana kiran wannan fasaha rarraba albarkatun CPU ta lokaci. Wannan dabarar tana ba masu amfani damar gudanar da yawancin matakai na lokaci ɗaya kamar yadda suke so. Farashin wannan bayani shine aiki - tunda idan an raba CPU ta matakai da yawa, kowane tsari za a sarrafa shi a hankali.
Don aiwatar da ingantaccen tsarin CPU, kuma musamman don yin shi da kyau, OS yana buƙatar duka ƙananan matakan tallafi da babban matakin. Ana kiran tallafin ƙananan matakin hanyoyin ƙananan hanyoyi ne ko ƙa'idodi waɗanda ke aiwatar da ɓangaren da ake buƙata na aikin. Misalin irin wannan aikin shine canza yanayin mahallin, wanda ke ba OS ikon dakatar da shirin guda ɗaya da gudanar da wani shirin akan processor. Ana aiwatar da wannan rabon lokaci a duk tsarin aiki na zamani.
A saman waɗannan hanyoyin akwai wasu dabaru da aka gina a cikin OS, ta hanyar “manufofin”. siyasa wani algorithm ne na yanke shawara don tsarin aiki. Irin waɗannan manufofin, alal misali, yanke shawarar wane shiri ya kamata a ƙaddamar (daga jerin umarni) da farko. Don haka, alal misali, za a magance wannan matsala ta hanyar manufar da ake kira tsarin tsarawa (manufofin tsarawa) kuma lokacin zabar mafita, za a jagorance shi ta hanyar bayanai kamar: tarihin farawa (wanda aka ƙaddamar da shi mafi tsayi a cikin mintuna na ƙarshe), menene nauyin wannan tsari (waɗanne nau'ikan shirye-shiryen da aka ƙaddamar), ma'aunin aiki (ko tsarin. an inganta shi don hulɗar hulɗa ko don fitarwa) da sauransu.

Abstraction: tsari

Abstraction na tsarin aiki wanda tsarin aiki ke aiwatarwa shine abin da muke kira aiwatar. Kamar yadda aka ambata a baya, tsari tsari ne kawai mai gudana, a kowane lokaci na lokaci-lokaci. Shirin da za mu iya samun taƙaitaccen bayani daga albarkatun tsarin daban-daban waɗanda wannan shirin ke samun dama ko tasiri yayin aiwatar da shi.
Don fahimtar sassan tsarin, kuna buƙatar fahimtar jihohin tsarin: abin da shirin zai iya karantawa ko canza yayin aikinsa. A kowane lokaci, kuna buƙatar fahimtar abubuwan da ke cikin tsarin suna da mahimmanci don aiwatar da shirin.
Ɗaya daga cikin abubuwan da ke bayyane na tsarin ya bayyana cewa tsarin ya haɗa da shi ƙwaƙwalwar ajiya. Umurnai suna cikin ƙwaƙwalwar ajiya. Bayanan da shirin ke karantawa ko ya rubuta suna cikin ƙwaƙwalwar ajiya. Don haka, ƙwaƙwalwar ajiyar da tsari zai iya magance (wanda ake kira sararin adireshi) wani ɓangare ne na tsari.
Hakanan wani ɓangare na tsarin tsarin shine rajista. Umurnai da yawa suna da nufin canza ƙimar rajista ko karanta ƙimar su, don haka rajista kuma ya zama muhimmin sashi na aikin tsari.
Ya kamata a lura cewa jihar na'ura kuma tana samuwa ne daga wasu rajista na musamman. Misali, IP - jagorar jagora - mai nuni ga umarnin da shirin ke aiwatarwa a halin yanzu. Akwai kuma tari na nunawa da alaka da shi ma'anar firam, waɗanda ake amfani da su don sarrafa: sigogin aiki, masu canji na gida da adiresoshin dawowa.
A ƙarshe, shirye-shirye sukan sami damar ROM (ƙwaƙwalwar karantawa kawai). Wannan bayanin "I/O" (shigarwa/fitarwa) ya kamata ya ƙunshi jerin fayilolin da aka buɗe a halin yanzu.

API ɗin tsari

Domin inganta fahimtar mu game da yadda tsarin ke aiki, bari mu yi nazarin misalan kiran tsarin da ya kamata a haɗa su cikin kowane tsarin sadarwa. Ana samun waɗannan APIs a cikin nau'i ɗaya ko wani akan kowace OS.

Create (halitta): OS dole ne ya haɗa da wasu hanyoyin da ke ba ku damar ƙirƙirar sabbin matakai. Lokacin da ka shigar da umarni a cikin tashar tashar ko kaddamar da aikace-aikacen ta danna sau biyu akan gunki, ana aika kira zuwa OS don ƙirƙirar sabon tsari sannan kuma kaddamar da ƙayyadaddun shirin.
Share: Tun da akwai hanyar sadarwa don ƙirƙirar tsari, OS ya kamata kuma ya ba da ikon tilasta cire tsari. Yawancin shirye-shirye a dabi'a za su fara da ƙarewa da kansu yayin da suke gudana. In ba haka ba mai amfani zai so ya iya kashe su kuma ta haka ne mai dubawa don dakatar da tsarin zai zama da amfani.
Jira (jiran): Wani lokaci yana da amfani a jira tsari don kammalawa, don haka ana ba da wasu hanyoyin sadarwa waɗanda ke ba da ikon jira.
Misc Control (Mai sarrafa iri-iri): Baya ga kisa da jiran tsari, akwai kuma wasu hanyoyin sarrafawa iri-iri. Misali, yawancin tsarin aiki suna ba da ikon daskare tsari (dakatar da aiwatar da shi na wani lokaci) sannan a ci gaba da shi (ci gaba da aiwatarwa)
Status (jihar): Akwai hanyoyin sadarwa daban-daban don samun wasu bayanai game da matsayin tsari, kamar tsawon lokacin da aka yi aiki ko kuma wane yanayi yake a halin yanzu.

Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

Ƙirƙirar tsari: cikakkun bayanai

Ɗaya daga cikin abubuwan ban sha'awa shine yadda ainihin shirye-shiryen ke canzawa zuwa matakai. Musamman yadda OS ke ɗauka da tafiyar da shirin. Yadda ake ƙirƙirar tsari daidai.
Da farko, OS dole ne ya ɗora lambar shirin da bayanan tsaye cikin ƙwaƙwalwar ajiya (a cikin sararin adireshin tsari). Shirye-shiryen yawanci suna kan faifai ko faifai mai ƙarfi a cikin wani tsari mai iya aiwatarwa. Don haka, tsarin loda shirye-shirye da kuma bayanan da suka dace cikin ƙwaƙwalwar ajiya yana buƙatar OS ya sami damar karanta waɗannan bytes daga faifai kuma ya sanya su a wani wuri a cikin ƙwaƙwalwar ajiya.

A farkon tsarin aiki, ana yin aikin lodawa cikin ƙwazo, wanda ke nufin cewa an loda dukkan lambar zuwa ƙwaƙwalwar ajiya kafin ƙaddamar da shirin. Tsarukan aiki na zamani suna yin hakan ne cikin kasala, wato, loda kodi ko bayanai kawai lokacin da shirin ya buƙaci su yayin aiwatar da shi.

Da zarar an ɗora lambar da madaidaicin bayanai a cikin ƙwaƙwalwar OS, akwai wasu ƙarin abubuwan da ake buƙatar yin kafin aiwatar da aiki. Dole ne a keɓe wasu adadin ƙwaƙwalwar ajiya don tari. Shirye-shiryen suna amfani da tari don masu canji na gida, sigogin aiki, da adiresoshin dawo da su. OS yana keɓance wannan ƙwaƙwalwar ajiya kuma yana ba da shi ga tsarin. Hakanan za'a iya rarraba tari tare da wasu gardama, musamman yana cika ma'auni na babban () aikin, misali tare da tsararrun argc da argv.

Hakanan tsarin aiki na iya keɓance wasu ƙwaƙwalwar ajiya zuwa tarin shirin. Ana amfani da tulin ta hanyar shirye-shirye don buƙatar bayanan da aka keɓe kai tsaye. Shirye-shiryen suna buƙatar wannan sarari ta hanyar kiran aikin malloc () kuma yana share shi a sarari ta hanyar kiran aikin kyauta(). Ana buƙatar tulin don tsarin bayanai kamar zanen gadon da aka haɗa, tebur hash, bishiyoyi da sauran su. Da farko, ana ba da ƙaramin adadin ƙwaƙwalwar ajiya zuwa tarin, amma bayan lokaci, yayin da shirin ke gudana, tulin na iya buƙatar ƙarin ƙwaƙwalwar ajiya ta ɗakin karatu API call malloc(). Tsarin aiki yana da hannu cikin aiwatar da keɓance ƙarin ƙwaƙwalwar ajiya don taimakawa gamsar da waɗannan kira.

Hakanan tsarin aiki zai yi ayyukan farawa, musamman waɗanda ke da alaƙa da I/O. Misali, akan tsarin UNIX, kowane tsari ta tsohuwa yana da buɗaɗɗen bayanan fayil guda 3, don daidaitaccen shigarwa, fitarwa, da kuskure. Waɗannan hannaye suna ba da damar shirye-shirye don karanta shigarwar daga tashar tare da nuna bayanai akan allon.

Don haka, ta hanyar loda lambobi da bayanan da suka dace cikin ƙwaƙwalwar ajiya, ƙirƙira da ƙaddamar da tari, da yin wasu ayyukan da suka shafi aiwatar da ayyukan I/O, OS yana shirya matakin aiwatarwa. A ƙarshe, akwai aiki na ƙarshe da ya rage: gudanar da shirin ta wurin shigarsa, mai suna main() function. Ta hanyar aiwatar da babban () aikin, OS yana canja wurin ikon CPU zuwa sabon tsarin da aka ƙirƙira, don haka shirin ya fara aiwatarwa.

Yanayin tsari

Yanzu da muka ɗan fahimci mene ne tsari da kuma yadda ake ƙirƙira shi, bari mu lissafa hanyoyin da tsarin zai iya kasancewa a ciki. A cikin mafi sauƙi tsari, tsari na iya kasancewa cikin ɗayan waɗannan jihohi:
Running. Lokacin aiki, tsarin yana gudana akan processor. Wannan yana nufin ana aiwatar da umarni.
Ready. A cikin shirye-shiryen, tsarin yana shirye don gudana, amma saboda wasu dalilai OS baya aiwatar da shi a ƙayyadadden lokacin.
An katange. A cikin yanayin da aka katange, wani tsari yana yin wasu ayyuka waɗanda ke hana shi kasancewa a shirye don aiwatarwa har sai wani abu ya faru. Misali ɗaya na gama gari shine lokacin da tsari ya fara aikin IO, yana zama toshewa ta yadda wani tsari zai iya amfani da processor.

Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

Kuna iya tunanin waɗannan jihohin a cikin sigar jadawali. Kamar yadda muke iya gani a cikin hoton, yanayin tsarin zai iya canzawa tsakanin GUDU DA SHIRI bisa ga tsarin OS. Lokacin da yanayin tsari ya canza daga READY zuwa GUDU, yana nufin cewa an tsara tsarin. A cikin m shugabanci - cire daga layout. A lokacin da tsari ya zama BLOCKED, misali, na fara aikin IO, OS zai ajiye shi a cikin wannan yanayin har sai wani abu ya faru, misali kammala IO. a wannan lokacin canzawa zuwa yanayin SHIRYA kuma maiyuwa nan da nan zuwa yanayin RUNNING idan OS ya yanke shawarar haka.
Bari mu kalli misalin yadda matakai biyu ke tafiya a cikin wadannan jihohin. Da farko, bari mu yi tunanin cewa duka hanyoyin biyu suna gudana, kuma kowanne yana amfani da CPU kawai. A wannan yanayin jihohin su za su kasance kamar haka.

Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

A cikin misali mai zuwa, tsari na farko, bayan ɗan lokaci yana gudana, yana buƙatar IO kuma ya shiga cikin BLOCKED, yana barin wani tsari ya gudana (FIG 1.4). OS yana ganin cewa tsarin 0 baya amfani da CPU kuma ya fara aiwatarwa 1. Yayin da tsari na 1 ke gudana, IO ya ƙare kuma matsayin tsari 0 ya canza zuwa READY. A ƙarshe, tsari na 1 ya ƙare, kuma bayan kammalawa, tsari na 0 yana farawa, aiwatarwa, kuma ya ƙare aikinsa.

Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

Tsarin bayanai

OS kanta shiri ne, kuma kamar kowane shiri, yana da wasu mahimman tsarin bayanai waɗanda ke lura da sassa daban-daban na bayanai masu dacewa. Don bin yanayin kowane tsari, OS zai goyi bayan wasu jerin tsari don duk matakai a cikin jihar READY da wasu ƙarin bayanai don bin hanyoyin da ke gudana a halin yanzu. Hakanan, OS yakamata ya saka idanu akan matakan da aka katange. Bayan an gama IO, OS dole ne ya farka tsarin da ake buƙata kuma ya sanya shi cikin yanayin da ke shirye don aiki.

Misali, OS dole ne ya adana yanayin rajistar mai sarrafawa. A lokacin da tsari ya tsaya, ana adana yanayin rajistar a cikin adireshin adireshin tsarin, kuma a lokacin da aikinsa ya ci gaba, an dawo da dabi'un rajista kuma don haka ci gaba da aiwatar da wannan tsari.

Baya ga shirye-shiryen, toshe, gudanar da jihohi, akwai wasu jihohi. Wani lokaci, a lokacin halitta, tsari na iya kasancewa a cikin jihar INIT. A ƙarshe, ana iya sanya tsari a cikin FINAL jihar lokacin da ya riga ya gama, amma har yanzu ba a share bayanansa ba. A tsarin UNIX ana kiran wannan jiha aljan tsari. Wannan jihar yana da amfani ga lokuta inda tsarin iyaye ke son sanin lambar dawowar yaro, misali, yawanci 0 yana nuna nasara da 1 kuskure, amma masu shirye-shirye na iya ba da ƙarin lambobin fitarwa don sigina matsaloli daban-daban. Lokacin da tsarin iyaye ya ƙare, yana yin kiran tsarin ƙarshe, kamar jira (), don jira tsarin yaron ya ƙare da kuma sigina ga OS cewa zai iya share duk wani bayanan da ke da alaƙa da tsarin da aka ƙare.

Tsarukan Aiki: Guda Sau Uku. Sashe na 2: Abstraction: Tsari (fassara)

Muhimman batutuwan karatun:

aiwatar - babban abstraction na shirin mai gudana a cikin OS. A kowane lokaci, ana iya siffanta tsari ta yanayinsa: abubuwan da ke cikin ƙwaƙwalwar ajiya a sararin adireshi, abubuwan da ke cikin rajistar sarrafawa, gami da ma'anar koyarwa da ma'ana, da bayanin IO, kamar buɗe fayilolin da ake karantawa ko rubutawa.
API ɗin tsari ya ƙunshi kira waɗanda shirye-shirye za su iya yi don aiwatarwa. Yawanci waɗannan ƙirƙira ne, sharewa, ko wasu kira.
Tsarin yana cikin ɗaya daga cikin jihohi da yawa, gami da gudana, shirye, toshe. Abubuwa daban-daban kamar tsarawa, keɓancewa daga tsarawa, ko jira na iya canza yanayin tsari daga ɗayan zuwa wani.
Jerin tsari ya ƙunshi bayanai game da duk matakai a cikin tsarin. Kowace shigarwa a cikinta ana kiranta tsarin sarrafa tsari, wanda a zahiri tsari ne wanda ya ƙunshi duk mahimman bayanai game da takamaiman tsari. 

source: www.habr.com

Add a comment