<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        My Github

      操作系統(tǒng)核心原理-3.進(jìn)程原理(上):進(jìn)程概要

      進(jìn)程管理、內(nèi)存管理和文件管理是操作系統(tǒng)的三大核心功能,那么什么是進(jìn)程呢?顧名思義,進(jìn)程就是進(jìn)展中的程序,或者說(shuō)進(jìn)程是執(zhí)行中的程序。當(dāng)一個(gè)程序被加載到內(nèi)存之后就變?yōu)榱诉M(jìn)程。因此,我們可以得到:進(jìn)程=程序+執(zhí)行。本篇將會(huì)對(duì)進(jìn)程、進(jìn)程模型、進(jìn)程狀態(tài)以及進(jìn)程的缺陷等進(jìn)行學(xué)習(xí),為后續(xù)學(xué)習(xí)進(jìn)程調(diào)度與進(jìn)程通信打下堅(jiān)實(shí)基礎(chǔ)。

      一、進(jìn)程是什么鬼?

      1.1 從工作到進(jìn)程

        進(jìn)程在Multics操作系統(tǒng)出現(xiàn)之前被叫做工作(Job),工作是IBM用于多道批處理程序設(shè)計(jì)中的概念。由于歷史原因,Multics操作系統(tǒng)的研發(fā)人員不愿意承用IBM發(fā)明的術(shù)語(yǔ),于是將工作改為了進(jìn)程(Process)。

      1.2 實(shí)現(xiàn)CPU的多道編程

        在計(jì)算機(jī)發(fā)展的初期,單一操作員單一控制終端,CPU使用率很低。為了提高CPU利用率,人們想要將多個(gè)程序同時(shí)加載到計(jì)算里并發(fā)執(zhí)行。于是,這些同時(shí)存在于計(jì)算機(jī)內(nèi)存中的程序就被稱(chēng)為進(jìn)程。進(jìn)程的出現(xiàn),讓每個(gè)用戶(hù)感覺(jué)到自己在獨(dú)占CPU。因此,可以說(shuō)進(jìn)程就是為了在CPU上實(shí)現(xiàn)多道編程而出現(xiàn)的概念,如下圖所示。

        人們發(fā)明進(jìn)程是為了支持多道編程,而進(jìn)行多道編程的目的則是為了提高計(jì)算機(jī)CPU的利用率(或者說(shuō)系統(tǒng)的吞吐量)。例如,如果一個(gè)進(jìn)程有20%的時(shí)間使用CPU進(jìn)行計(jì)算,另外80%的時(shí)間用來(lái)進(jìn)行I/O,則在單道編程下CPU的利用率只有20%。單如果同時(shí)運(yùn)行兩個(gè)這樣的進(jìn)程,即使用2道編程,則CPU只在兩個(gè)進(jìn)程同時(shí)進(jìn)行I/O時(shí)才會(huì)處于閑置狀態(tài),因此CPU利用率將會(huì)提高到:1-0.8*0.8=0.36=>36%。同理,如果同時(shí)運(yùn)行更多的進(jìn)程,CPU利用率會(huì)逐步提高,直到某個(gè)臨界點(diǎn)為止。(PS:這里的例子忽略了進(jìn)程切換所需要的系統(tǒng)消耗)

      二、進(jìn)程模型

      2.1 三個(gè)視角看進(jìn)程模型

        (1)物理視角:從物理內(nèi)存的分配來(lái)看,每個(gè)進(jìn)程占用一片內(nèi)存空間,從這點(diǎn)上看,進(jìn)程其實(shí)就是內(nèi)存的某片空間。由于在任意時(shí)刻,一個(gè)CPU只能執(zhí)行一條指令,因此任意時(shí)刻在CPU上執(zhí)行的進(jìn)程只有一個(gè),而到底執(zhí)行哪條指令是由物理程序計(jì)數(shù)器指定。因此,在物理層面,所有進(jìn)程共用一個(gè)程序計(jì)數(shù)器,只是CPU在不停地做進(jìn)程切換

        (2)邏輯視角:從邏輯層面來(lái)看,每個(gè)進(jìn)程都可以執(zhí)行,也可以暫時(shí)掛起讓別的進(jìn)程執(zhí)行,之后又可以接著執(zhí)行。所以,進(jìn)程需要想辦法保持狀態(tài)才能在下次接著執(zhí)行時(shí)從正確的地點(diǎn)開(kāi)始。因此,每個(gè)進(jìn)程都有自己的計(jì)數(shù)器,記錄其下一條指令所在的位置。(從邏輯上來(lái)說(shuō),程序計(jì)數(shù)器可以有多個(gè))

        (3)時(shí)序視角:從時(shí)間來(lái)看,每個(gè)進(jìn)程都必須往前推進(jìn)。在運(yùn)行一定時(shí)間后,進(jìn)程都應(yīng)該完成了一定的工作量。換句話說(shuō),每次進(jìn)程返回,它都處在上次返回點(diǎn)之后。哲學(xué)家有云:“一個(gè)人不能兩次踏入同一條河流”。

      2.2 進(jìn)程模型如何實(shí)現(xiàn)

        (1)物理基礎(chǔ):進(jìn)程的物理基礎(chǔ)是程序,程序又運(yùn)行在計(jì)算機(jī)上,因此計(jì)算機(jī)上要運(yùn)行程序首先要解決進(jìn)程的存儲(chǔ):給進(jìn)程分配內(nèi)存,使其安身立命。由于多個(gè)進(jìn)程可能同時(shí)并存,因此需要考慮如何讓多個(gè)進(jìn)程共享同一個(gè)物理內(nèi)存而不發(fā)生沖突。OS通過(guò)內(nèi)存管理來(lái)解決這個(gè)問(wèn)題。

        (2)進(jìn)程切換:進(jìn)程運(yùn)行實(shí)際上是指進(jìn)程在CPU上執(zhí)行,那么如何將CPU在多個(gè)進(jìn)程之間進(jìn)行切換也是一個(gè)問(wèn)題。OS通過(guò)進(jìn)程調(diào)度來(lái)解決這個(gè)問(wèn)題。所謂進(jìn)程調(diào)度,就是決定在什么時(shí)候讓什么進(jìn)程來(lái)使用CPU。

      三、進(jìn)程的層次與狀態(tài)

      3.1 進(jìn)程的層次結(jié)構(gòu)

        一個(gè)進(jìn)程在執(zhí)行過(guò)程中可以通過(guò)系統(tǒng)調(diào)用創(chuàng)建新的進(jìn)程,這個(gè)新的進(jìn)程就稱(chēng)為子進(jìn)程,而創(chuàng)建子進(jìn)程的進(jìn)程則被稱(chēng)為父進(jìn)程

        子進(jìn)程又可以再創(chuàng)建子進(jìn)程,于是這樣子子孫孫地創(chuàng)建下去就形成了所謂的進(jìn)程樹(shù)

      3.2 進(jìn)程的狀態(tài)轉(zhuǎn)換

        基本的進(jìn)程狀態(tài)主要有3種:執(zhí)行、阻塞和就緒,如下圖所示:

        那么,進(jìn)程被掛起阻塞有哪些原因呢?首先是一個(gè)進(jìn)程在運(yùn)行過(guò)程中執(zhí)行了某種阻塞操作,例如讀寫(xiě)磁盤(pán)。(由于阻塞操作需要等待結(jié)果后才能繼續(xù)執(zhí)行,因此OS將把這個(gè)進(jìn)程掛起,讓其他進(jìn)程運(yùn)轉(zhuǎn))其次是一個(gè)進(jìn)程執(zhí)行的時(shí)間太長(zhǎng)了,為了公平,OS將其掛起從而讓其他進(jìn)程也有機(jī)會(huì)執(zhí)行。

      PS:當(dāng)然,上述闡述的3種典型狀態(tài)并不是唯一的分類(lèi)方式,事實(shí)上,許多商業(yè)OS的進(jìn)程都不止3個(gè),比如Windows的進(jìn)程就有7種狀態(tài)。

      四、進(jìn)程管理概要

      4.1 需要的手段

      首先看看一個(gè)人的出生對(duì)一個(gè)社會(huì)來(lái)說(shuō)意味著什么?在一個(gè)人出生后,醫(yī)院需要為其建立記錄,該記錄包括諸如姓名、性別、體重、父母信息、何時(shí)何地出生等信息,然后會(huì)通過(guò)該記錄來(lái)登記戶(hù)口,辦理身份證等等。辦完手續(xù)之后,這個(gè)人就正式存在,稱(chēng)為一個(gè)公民。當(dāng)然,我們得goverment就可以對(duì)這個(gè)人進(jìn)行各種管理了,比如你不能亂說(shuō)話,不能亂游行等等。

        與一個(gè)社會(huì)管理人的過(guò)程類(lèi)似,OS要管理進(jìn)程就需要維護(hù)進(jìn)程的一些信息,OS用于維護(hù)進(jìn)程記錄的結(jié)構(gòu)就是進(jìn)程表或進(jìn)程控制塊(Process Control Block,PCB)。那么進(jìn)程表里有什么記錄呢?一般來(lái)說(shuō),維護(hù)的記錄應(yīng)該包含:寄存器、程序計(jì)數(shù)器、狀態(tài)字、棧指針、優(yōu)先級(jí)、進(jìn)程ID、創(chuàng)建時(shí)間、所耗CPU時(shí)間、當(dāng)前持有的各種句柄等等。

      4.2 創(chuàng)建的過(guò)程

        一般來(lái)說(shuō),OS創(chuàng)建進(jìn)程的步驟如下圖所示:

        在不同的OS中,創(chuàng)建進(jìn)程的方法也不同,例如Windows中是通過(guò)系統(tǒng)調(diào)用完成進(jìn)程創(chuàng)建的,這個(gè)系統(tǒng)調(diào)用就是CreateProcess。

      4.3 處理的問(wèn)題

        人類(lèi)社會(huì)最大的問(wèn)題就是資源分配,進(jìn)程管理的最大問(wèn)題也是如此。雖然進(jìn)程沒(méi)有自我意識(shí),但我們的本性還是追求公平的。除了公平,還需要考慮:效率。于是,公平與效率就成了進(jìn)程管理中永恒的主題。

      4.4 進(jìn)程的缺陷

        假定有兩部都很好地島國(guó)愛(ài)情動(dòng)作片,都只放映一次,以后就再也不放映了。而且,這兩部片子還是同時(shí)放映(狗血?jiǎng)∏榘。。€在兩個(gè)不同的小房間放映。而你在同一時(shí)間只能做一件事情,所以你不得不放棄另外一部。進(jìn)程亦是如此,這也是進(jìn)程的缺點(diǎn),如果想要同時(shí)做兩件或多件事情,進(jìn)程就不夠用了。并且,如果進(jìn)程在執(zhí)行的過(guò)程中發(fā)生阻塞,例如等待輸入,整個(gè)進(jìn)程就將被掛起(暫停),而無(wú)法繼續(xù)執(zhí)行。這樣,即使進(jìn)程里面有部分工作不依賴(lài)于輸入數(shù)據(jù),也無(wú)法推進(jìn)。

        因此,為了解決上述兩個(gè)問(wèn)題,人們發(fā)明了線程。

        

        欲知后事如何,還聽(tīng)下回分解。

      參考資料

      鄒恒明,《操作系統(tǒng)之哲學(xué)原理》,機(jī)械工業(yè)出版社

       

      posted @ 2015-12-04 00:11  EdisonZhou  閱讀(7487)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 久久se精品一区精品二区| 免费国产好深啊好涨好硬视频| 福利一区二区在线播放| 大肉大捧一进一出视频| 石原莉奈日韩一区二区三区| 岛国岛国免费v片在线观看| 亚洲综合无码一区二区| 亚洲gv天堂无码男同在线观看| 国产精品一区二区三区三级| 久久精品蜜芽亚洲国产AV| 亚洲香蕉伊综合在人在线| 少妇午夜福利一区二区三区| 无码伊人66久久大杳蕉网站谷歌| 亚洲成av人片天堂网无码| 午夜久久一区二区狠狠干| 成人性做爰aaa片免费看| 久久国产精品精品国产色婷婷| 九九热在线视频只有精品| 久久精品国产亚洲av麻豆小说| 日日猛噜噜狠狠扒开双腿小说| 黄色不卡视频一区二区三区| 国产免费久久精品99reswag| 国产最新AV在线播放不卡| 看全色黄大黄大色免费久久| 国产成人免费午夜在线观看| 精品熟女少妇免费久久| 你拍自拍亚洲一区二区三区| 国产精品白丝久久AV网站| 国产精品内射在线免费看| 高清有码国产一区二区| 国产精品自在自线视频| 亚洲中文字幕综合小综合| 午夜免费无码福利视频麻豆| 国产网友愉拍精品视频手机| 国产寡妇偷人在线观看| 国产在线亚州精品内射 | 久久夜色撩人精品国产小说 | 久久99久国产精品66| 老妇xxxxx性开放| 国模少妇无码一区二区三区| 亚洲色帝国综合婷婷久久|