Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

Introduction to Operating Systems

Nyob zoo, Habr! Kuv xav nthuav qhia rau koj mloog ib co kab lus-kev txhais lus ntawm ib cov ntaub ntawv uas nthuav hauv kuv lub tswv yim - OSTEP. Cov ntaub ntawv no soj ntsuam heev heev ua hauj lwm ntawm unix-zoo li operating systems, uas yog, ua hauj lwm nrog cov txheej txheem, ntau yam teem sij hawm, nco thiab lwm yam zoo sib xws Cheebtsam uas tsim ib tug niaj hnub OS. 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:

Lwm qhov chaw:

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

Tswb! Muaj ib lub lab rau cov lus qhuab qhia no! Saib github

Txheej txheem API

Cia peb saib ib qho piv txwv ntawm kev tsim cov txheej txheem hauv UNIX system. Nws tshwm sim los ntawm ob lub kaw lus hu rab rawg () ΠΈ exec().

Hu rau fork( )

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

Xav txog ib qho kev pab cuam uas ua rau lub fork() hu. Cov txiaj ntsig ntawm nws qhov kev ua tiav yuav yog raws li hauv qab no.

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

Ua ntej tshaj plaws, peb nkag mus rau lub ntsiab () ua haujlwm thiab luam cov hlua rau ntawm qhov screen. Cov kab muaj cov txheej txheem tus cim uas nyob rau hauv thawj hu ua disease PID los yog tus txheej txheem identifier. Tus cim no yog siv hauv UNIX kom xa mus rau cov txheej txheem. Cov lus txib tom ntej yuav hu rau fork(). Lub sijhawm no, yuav luag ib daim qauv ntawm cov txheej txheem tsim. Rau OS, nws zoo li muaj 2 daim ntawv luam ntawm tib qhov kev pab cuam uas khiav ntawm lub system, uas nyob rau hauv lem yuav tawm lub diav rawg () muaj nuj nqi. Cov txheej txheem menyuam yaus tsim tshiab (nrog rau cov txheej txheem niam txiv uas tsim nws) yuav tsis raug tua, pib ntawm lub ntsiab() ua haujlwm. Nws yuav tsum nco ntsoov tias tus txheej txheem me nyuam tsis yog ib daim qauv ntawm niam txiv cov txheej txheem; tshwj xeeb, nws muaj nws qhov chaw nyob, nws tus kheej sau npe, nws tus taw tes rau cov lus qhia ua tau, thiab lwm yam. Yog li, tus nqi xa rov qab mus rau tus neeg hu xov tooj ntawm rab diav rawg () ua haujlwm yuav txawv. Tshwj xeeb, cov txheej txheem niam txiv yuav tau txais PID tus nqi ntawm tus menyuam txheej txheem rov qab, thiab tus menyuam yuav tau txais tus nqi sib npaug li 0. Siv cov lej xa rov qab no, koj tuaj yeem cais cov txheej txheem thiab yuam txhua tus ua nws tus kheej ua haujlwm. . Txawm li cas los xij, kev ua tiav ntawm qhov kev pab cuam no tsis tau txhais nruj me ntsis. Tom qab faib ua 2 txheej txheem, OS pib saib xyuas lawv, thiab npaj lawv txoj haujlwm. Yog tias ua tiav ntawm cov txheej txheem ib leeg, ib qho ntawm cov txheej txheem, hauv qhov no, niam txiv, yuav ua haujlwm txuas ntxiv, thiab tom qab ntawd tus txheej txheem me nyuam yuav tau txais kev tswj hwm. Thaum rov pib dua, qhov xwm txheej yuav txawv.

Hu tos ( )

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

Xav txog qhov program hauv qab no. Nyob rau hauv qhov kev pab cuam, vim muaj ib tug hu tos( ) Cov txheej txheem niam txiv yeej yuav tos kom tus menyuam ua tiav. Nyob rau hauv cov ntaub ntawv no, peb yuav tau txais ib tug nruj me ntsis txhais cov ntawv tso zis ntawm qhov screen

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

exec() hu

Cov Txheej Txheem Ua Haujlwm: Peb Daim Ntawv Yooj Yim. Ntu 3: Txheej txheem API (kev txhais lus)

Xav txog qhov kev sib tw exec(). Qhov kev hu xov tooj no muaj txiaj ntsig zoo thaum peb xav khiav ib qho kev sib txawv kiag li. Ntawm no peb yuav hu execvp() khiav wc program uas yog ib qho kev suav cov lus. Yuav ua li cas thaum exec() hu ua? Qhov kev hu no tau dhau lub npe ntawm cov ntaub ntawv executable thiab qee qhov tsis raws li kev sib cav. Tom qab ntawd cov code thiab cov ntaub ntawv zoo li qub los ntawm cov ntaub ntawv executable no tau thauj khoom thiab nws cov ntu nrog tus lej yog overwritten. Cov chaw nco ntxiv, xws li cov pawg thiab pawg, tau rov pib dua. Tom qab ntawd OS tsuas ua tiav qhov kev pab cuam, dhau nws cov lus sib cav. Yog li peb tsis tau tsim cov txheej txheem tshiab, peb tsuas yog hloov pauv qhov kev pabcuam tam sim no mus rau lwm qhov haujlwm khiav haujlwm. Tom qab ua tiav cov exec() hu rau hauv cov xeeb leej xeeb ntxwv, nws zoo nkaus li yog qhov kev pab cuam qub tsis tau khiav txhua.

Qhov teeb meem pib qhov teeb meem no yog ib txwm ua rau lub plhaub Unix, thiab tso cai rau lub plhaub ntawd los ua tus lej tom qab hu rab rawg (), tab sis ua ntej hu exec(). Ib qho piv txwv ntawm cov cai no yuav tau kho lub plhaub ib puag ncig rau cov kev xav tau ntawm qhov kev pab cuam tau pib, ua ntej tso nws.

Plhaub - tsuas yog tus neeg siv qhov program. Nws qhia koj txoj kab caw thiab tos koj sau ib yam dab tsi hauv nws. Feem ntau, yog tias koj sau lub npe ntawm qhov kev zov me nyuam nyob ntawd, lub plhaub yuav pom nws qhov chaw, hu rau txoj kev diav rawg () thiab tom qab ntawd hu rau qee hom exec() los tsim cov txheej txheem tshiab thiab tos kom nws ua tiav siv ib qho. tos ( ) hu. Thaum cov txheej txheem me nyuam tawm, lub plhaub yuav rov qab los ntawm tos() hu thiab luam cov lus qhia ntxiv thiab tos kom nkag mus rau cov lus txib tom ntej.

Lub diav rawg() & exec() cais tso cai rau lub plhaub ua tej yam hauv qab no, piv txwv li:
wc file > new_file.

Hauv qhov piv txwv no, cov zis ntawm wc program raug xa mus rau cov ntaub ntawv. Txoj kev ntawm lub plhaub ua tiav qhov no yog qhov yooj yim heev - los ntawm kev tsim cov txheej txheem me nyuam ua ntej hu exec(), lub plhaub kaw cov qauv tso zis thiab qhib cov ntaub ntawv new_file, yog li, tag nrho cov zis los ntawm qhov kev pab cuam ntxiv wc yuav tau redirected rau ib cov ntaub ntawv es tsis txhob ntawm ib qho screen.

Unix cev raug coj los siv zoo ib yam, nrog qhov sib txawv uas lawv siv cov yeeb nkab () hu. Nyob rau hauv cov ntaub ntawv no, tus txheej txheem tso zis kwj yuav txuas mus rau ib tug yeeb nkab queue nyob rau hauv lub kernel, uas cov input kwj ntawm lwm cov txheej txheem yuav txuas nrog.

Tau qhov twg los: www.hab.com

Ntxiv ib saib