Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Introduction to Operating Systems

Hlo Habr! Kuv xav coj tuaj rau koj mloog ib co kab lus-kev txhais lus ntawm ib cov ntaub ntawv nthuav hauv kuv lub tswv yim - OSTEP. Cov ntaub ntawv no sib tham txog kev ua haujlwm ntawm unix-zoo li operating systems, uas yog, ua haujlwm nrog cov txheej txheem, ntau lub sijhawm teem sijhawm, nco thiab lwm yam zoo sib xws uas tsim los ntawm OS niaj hnub. Koj tuaj yeem pom tus thawj ntawm tag nrho cov ntaub ntawv ntawm no S, SΡ“S,. Thov nco ntsoov tias qhov kev txhais lus tau ua tsis muaj kev tshaj lij (tseem dawb), tab sis kuv vam tias kuv khaws lub ntsiab lus dav dav.

Lab ua hauj lwm rau cov ncauj lus no tuaj yeem pom ntawm no:
- original: pages.cs.wisc.edu/~remzi/OSTEP/Homework/homework.html
- original: github.com/remzi-arpacidusseau/ostep-code
- Kuv tus kheej adaptation: github.com/bykvaadm/OS/tree/master/ostep

Koj tuaj yeem tshawb xyuas kuv channel ntawm xov tooj =)

Txoj haujlwm ua haujlwm

Yuav ua li cas thaum lub program khiav? Ib qho kev khiav haujlwm ua ib qho yooj yim - nws ua cov lus qhia. Txhua thib ob, ntau lab thiab txawm tias tej zaum ntau lab cov lus qhia tau muab los ntawm processor los ntawm RAM, tig nws decodes lawv (piv txwv li, nws paub tias hom lus qhia no yog dab tsi) thiab ua rau lawv. Qhov no tuaj yeem ntxiv ob tus lej, nkag mus rau lub cim xeeb, kuaj xyuas tus mob, dhia mus rau qhov ua haujlwm, thiab lwm yam. Tom qab ua tiav ntawm ib qho kev qhia, tus processor mus rau qhov ua tiav ntawm lwm qhov. Thiab yog li kev qhia tom qab kev qhia, lawv raug tua kom txog thaum qhov kev pab cuam xaus.
Qhov piv txwv no yog ib txwm suav hais tias yooj yim - qhov tseeb, txhawm rau ua kom lub processor, cov khoom siv niaj hnub no tso cai rau koj los ua cov lus qhia tawm ntawm kev tig, suav cov txiaj ntsig tau, ua cov lus qhia ib txhij, thiab cov lus qhia zoo sib xws.

Von Neumann tus qauv ntawm kev suav

Daim ntawv yooj yim ntawm kev ua haujlwm tau piav qhia los ntawm peb zoo ib yam li Von Neumann tus qauv ntawm kev suav. Von Neumann yog ib tug ntawm cov pioneers ntawm lub computer systems, nws kuj yog ib tug ntawm cov sau phau ntawv ntawm game theory.. Thaum qhov kev zov me nyuam tab tom khiav, ib pawg ntawm lwm yam xwm txheej tshwm sim, ntau lwm cov txheej txheem thiab kev ua haujlwm thib peb, lub hom phiaj tseem ceeb ntawm kev ua kom yooj yim rau kev tso tawm, kev ua haujlwm thiab kev saib xyuas ntawm lub system.
Muaj cov txheej txheem software uas yog lub luag haujlwm los ua kom cov kev pab cuam tau yooj yim khiav (lossis txawm tias tso cai rau ntau qhov kev pab cuam khiav tib lub sijhawm), uas tso cai rau cov kev pab cuam sib faib tib lub cim xeeb, thiab sib txuas lus nrog cov khoom sib txawv. Xws li cov txheej txheem software (software) yog qhov tseem ceeb hu ua lub operating system thiab nws cov dej num suav nrog kev saib xyuas tias lub kaw lus ua haujlwm raug thiab ua haujlwm tau zoo, nrog rau kev ua kom yooj yim ntawm kev tswj hwm qhov system no.

operating system

Ib qho kev ua haujlwm, luv luv li OS, yog cov txheej txheem sib cuam tshuam tsim los tswj cov khoom siv hauv computer thiab teeb tsa cov neeg siv kev sib cuam tshuam nrog lub computer..
OS ua tiav nws cov txiaj ntsig zoo hauv thawj qhov chaw, los ntawm cov txheej txheem tseem ceeb tshaj plaws - cov txheej txheem virtualization. Lub OS cuam tshuam nrog cov peev txheej ntawm lub cev (processor, nco, disk, thiab lwm yam) thiab hloov nws mus rau hauv ntau dua, muaj zog dua, thiab yooj yim-rau-siv daim ntawv ntawm nws tus kheej. Yog li ntawd, rau kev nkag siab dav dav, koj tuaj yeem sib piv cov haujlwm ua haujlwm nrog lub tshuab virtual.
Txhawm rau tso cai rau cov neeg siv muab cov lus txib rau lub operating system thiab yog li siv lub peev xwm ntawm lub tshuab virtual (xws li khiav ib qho program, faib lub cim xeeb, nkag mus rau cov ntaub ntawv, thiab lwm yam), lub operating system muab qee qhov kev sib txuas hu ua. API (application programming interface) thiab uas koj tuaj yeem hu (hu). Ib qho kev ua haujlwm raug tso cai rau ntau pua lub kaw lus hu ua.
Thaum kawg, txij li virtualization tso cai rau ntau yam kev pab cuam khiav (yog li sib koom CPU), thiab ib txhij nkag mus rau lawv cov lus qhia thiab cov ntaub ntawv (yog li sib koom nco), thiab nkag mus rau disks (yog li sib koom I / O cov cuab yeej). tus thawj tswj kev pab. Txhua lub processor, disk thiab nco yog cov peev txheej ntawm lub kaw lus, thiab yog li ib qho ntawm lub luag haujlwm ntawm lub operating system dhau los ua txoj haujlwm ntawm kev tswj cov peev txheej no, ua kom muaj txiaj ntsig, ncaj ncees, lossis rov ua haujlwm, nyob ntawm txoj haujlwm uas qhov kev ua haujlwm no. yog tsim.

CPU virtualization

Xav txog qhov program hauv qab no:
(https://www.youtube.com/watch?v=zDwT5fUcki4&feature=youtu.be)

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Nws tsis ua tej yam tshwj xeeb, qhov tseeb, txhua yam nws ua yog hu ua haujlwm kiv(), uas nws txoj hauj lwm yog mus ncig los ntawm lub sij hawm xyuas thiab rov qab los tom qab ib tug thib ob lawm. Yog li, nws rov ua tsis tiav txoj hlua uas tus neeg siv dhau los ua kev sib cav.
Cia peb khiav qhov kev pab cuam no thiab dhau nws lub cim "A" raws li kev sib cav. Qhov tshwm sim yog tsis nthuav tshwj xeeb - lub kaw lus tsuas yog ua tiav ib qho kev pab cuam uas ib ntus qhia tus cwj pwm "A".
Tam sim no cia sim ua qhov kev xaiv thaum muaj ntau qhov xwm txheej ntawm tib qhov kev pab cuam tab tom ua haujlwm, tab sis tso tawm cov ntawv sib txawv kom pom tseeb dua. Hauv qhov no, qhov tshwm sim yuav txawv me ntsis. Txawm tias muaj tseeb hais tias peb muaj ib tug processor, qhov kev pab cuam yog executed ib txhij. Nws tshwm sim li cas? Tab sis nws hloov tawm hais tias lub operating system, tsis yog tsis muaj kev pab los ntawm hardware muaj peev xwm, tsim ib tug illusion. Lub illusion hais tias lub system muaj ntau yam virtual processors, tig ib tug tib lub cev processors mus rau hauv ib tug theoretically infinite tus naj npawb thiab yog li tso cai rau seemingly cov kev pab cuam khiav ib txhij. Qhov illusion no hu ua CPU virtualization.
Daim duab no tsa ntau cov lus nug, piv txwv li, yog tias ob peb lub program xav khiav tib lub sijhawm, qhov twg yuav raug tso tawm? Cov "txoj cai" ntawm OS yog lub luag haujlwm rau lo lus nug no. Txoj cai siv ntau qhov chaw hauv OS thiab teb cov lus nug zoo li no, thiab yog cov txheej txheem yooj yim uas OS siv. Yog li lub luag haujlwm ntawm OS ua tus tswj hwm kev pabcuam.

Nco virtualization

Tam sim no cia saib lub cim xeeb. Lub cev qauv ntawm kev nco nyob rau hauv niaj hnub systems yog sawv cev raws li ib tug array ntawm bytes.. Txhawm rau nyeem los ntawm kev nco, koj yuav tsum qhia meej chaw nyob ntawm tesnkag mus rau nws. Txhawm rau sau lossis hloov kho cov ntaub ntawv, koj yuav tsum qhia cov ntaub ntawv thiab qhov chaw nyob ntawm lub xov tooj ntawm qhov chaw sau nws.
Nco yog nkag mus tas li thaum lub sijhawm ua haujlwm. Ib qhov program khaws nws cov qauv ntaub ntawv tag nrho hauv lub cim xeeb thiab nkag mus rau nws los ntawm kev ua ntau yam lus qhia. Cov lus qhia, lub sijhawm no, kuj tseem khaws cia hauv lub cim xeeb, yog li nws tseem nkag mus rau txhua qhov kev thov rau cov lus qhia tom ntej.

malloc() hu

Xav txog cov kev pab cuam hauv qab no, uas faib ib cheeb tsam ntawm kev nco siv hu malloc () (https://youtu.be/jnlKRnoT1m0):

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Qhov kev zov me nyuam ua ntau yam. Ua ntej, nws faib qee lub cim xeeb (kab 7), tom qab ntawd luam tawm qhov chaw nyob ntawm lub cell faib (kab 9), sau xoom rau thawj qhov chaw ntawm lub cim xeeb faib. Tom ntej no, qhov kev zov me nyuam nkag mus rau hauv lub voj uas nws nce tus nqi khaws cia hauv lub cim xeeb ntawm qhov chaw nyob hauv "p" sib txawv. Nws kuj luam tus txheej txheem ID ntawm nws tus kheej. Tus txheej txheem ID yog qhov tshwj xeeb rau txhua qhov kev khiav haujlwm. Tau tsim ntau daim ntawv theej, peb yuav dawm rau qhov txiaj ntsig zoo: Hauv thawj kis, yog tias koj tsis ua dab tsi thiab tsuas yog khiav ob peb daim ntawv, ces qhov chaw nyob yuav txawv. Tab sis qhov no tsis poob rau hauv peb txoj kev xav! Yog lawm, txij li niaj hnub kev faib khoom muaj kev nco randomization enabled los ntawm lub neej ntawd. Yog tias nws yog neeg xiam oob khab, peb tau txais cov txiaj ntsig xav tau - lub cim xeeb chaw nyob ntawm ob lub khoos phis tawj ua haujlwm yuav zoo sib xws.

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Yog li ntawd, nws hloov tawm tias ob txoj haujlwm ywj pheej ua haujlwm nrog lawv tus kheej qhov chaw nyob, uas nyob rau hauv lem yog mapped los ntawm lub operating system nyob rau hauv lub cev nco.. Yog li ntawd, kev siv lub cim xeeb chaw nyob hauv ib qho kev pab cuam yuav tsis cuam tshuam rau lwm tus hauv txhua txoj kev, thiab nws zoo li txhua qhov kev pab cuam uas nws muaj nws lub cim xeeb ntawm lub cev, tag nrho muab rau nws. Qhov tseeb, txawm li cas los xij, yog qhov kev nco lub cev yog ib qho kev sib koom ua ke tswj hwm los ntawm kev ua haujlwm.

Kev sib raug zoo

Lwm cov ntsiab lus tseem ceeb hauv kev ua haujlwm yog βˆ’ sib xws. Lo lus no yog siv thaum tham txog cov teeb meem hauv qhov system uas tuaj yeem tshwm sim thaum ua haujlwm nrog ntau yam tib lub sijhawm hauv tib txoj haujlwm. Cov teeb meem kev sib raug zoo tshwm sim txawm nyob hauv lub operating system nws tus kheej. Nyob rau hauv lub cim xeeb yav dhau los thiab processor virtualization piv txwv, peb pom tau hais tias OS tswj ntau yam nyob rau tib lub sij hawm - nws pib thawj txheej txheem, ces qhov thib ob, thiab hais txog. Raws li nws tau muab tawm, tus cwj pwm no tuaj yeem ua rau qee qhov teeb meem. Yog li, piv txwv li, niaj hnub multi-threaded cov kev pab cuam muaj xws li cov teeb meem.

Xav txog qhov program hauv qab no:

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Qhov kev zov me nyuam hauv lub luag haujlwm tseem ceeb tsim ob txoj xov siv hu pthread_create() ua. Hauv qhov piv txwv no, cov xov tuaj yeem xav tias yog ib qho haujlwm ua haujlwm hauv tib lub cim xeeb qhov chaw nrog rau lwm cov haujlwm, nrog rau ntau dua ib txoj haujlwm khiav tib lub sijhawm. Hauv qhov piv txwv no, txhua txoj xov pib thiab ua tiav cov haujlwm tus neeg ua haujlwm () uas nyob rau hauv lem tsuas yog nce qhov sib txawv,.

Cia peb khiav qhov kev pab cuam no nrog kev sib cav ntawm 1000. Raws li koj yuav tau twv, qhov tshwm sim yuav tsum yog 2000 vim tias txhua txoj xov incremented qhov sib txawv 1000 zaug. Txawm li cas los xij, txhua yam tsis yooj yim li ntawd. Cia peb sim khiav qhov kev zov me nyuam nrog qhov kev txiav txim ntawm qhov loj dua ntau dua.

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Part 1: Intro (kev txhais lus)

Los ntawm kev sau tus lej, piv txwv li, 100000, peb cia siab tias yuav pom cov zis raws li tus lej 200000. Txawm li cas los xij, yog tias peb khiav tus lej 100000 ob peb zaug, peb yuav tsis tsuas tsis pom cov lus teb raug, tab sis kuj tau txais cov lus teb tsis raug sib txawv. Cov lus teb nyob rau hauv qhov tseeb hais tias kom nce tus naj npawb, peb yuav tsum tau ua haujlwm - rho tawm tus naj npawb ntawm lub cim xeeb, incrementing, thiab ces sau tus lej rov qab. Txij li thaum tag nrho cov lus qhia no tsis raug ua tiav atomically (tag nrho tib lub sijhawm), tej yam txawv txawv xws li qhov no tuaj yeem tshwm sim. Qhov teeb meem no hu ua programming haiv neeg mob. Thaum tsis paub lub zog ntawm lub sijhawm tsis paub yuav cuam tshuam rau kev ua haujlwm ntawm koj qhov haujlwm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib