關(guān)于操作系統(tǒng)的知識點
學(xué)習(xí)操作系統(tǒng)我們需要掌握其中的重要知識點。下面由學(xué)習(xí)啦小編為大家整理了關(guān)于操作系統(tǒng)的知識點的相關(guān)知識,希望對大家有幫助!
關(guān)于操作系統(tǒng)的知識點1、什么是進程(Process)和線程(Thread)?有何區(qū)別?
進程是具有一定獨立功能的程序關(guān)于某個數(shù)據(jù)集合上的一次運行活動,進程是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。線程是進程的一個實體,是CPU調(diào)度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統(tǒng)資源,只擁有一點在運行中必不可少的資源(如程序計數(shù)器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源。一個線程可以創(chuàng)建和撤銷另一個線程,同一個進程中的多個線程之間可以并發(fā)執(zhí)行。
如果說操作系統(tǒng)引入進程的目的是為了提高程序并發(fā)執(zhí)行,以提高資源利用率和系統(tǒng)吞吐量。那么操作系統(tǒng)中引入線程的目的,則是為了減少進程并發(fā)執(zhí)行過程中所付出的時空開銷,使操作系統(tǒng)能很好的并發(fā)執(zhí)行。
進程process定義了一個執(zhí)行環(huán)境,包括它自己私有的地址空間、一個句柄表,以及一個安全環(huán)境;線程則是一個控制流,有他自己的調(diào)用棧call stack,記錄了它的執(zhí)行歷史。
線程由兩個部分組成:1)線程的內(nèi)核對象,操作系統(tǒng)用它來對線程實施管理。內(nèi)核對象也是系統(tǒng)用來存放線程統(tǒng)計信息的地方。2)線程堆棧,它用于維護線程在執(zhí)行代碼時需要的所有參數(shù)和局部變量。當(dāng)創(chuàng)建線程時,系統(tǒng)創(chuàng)建一個線程內(nèi)核對象。該線程內(nèi)核對象不是線程本身,而是操作系統(tǒng)用來管理線程的較小的數(shù)據(jù)結(jié)構(gòu)??梢詫⒕€程內(nèi)核對象視為由關(guān)于線程的統(tǒng)計信息組成的一個小型數(shù)據(jù)結(jié)構(gòu)。
進程與線程的比較如下:
比較 | 進程 | 線程 |
活潑性 | 不活潑(只是線程的容器) | 活潑 |
地址空間 | 系統(tǒng)賦予的獨立的虛擬地址空間(對于32位進程來說,這個地址空間是4GB) | 在進程的地址空間執(zhí)行代碼。線程只有一個內(nèi)核對象和一個堆棧,保留的記錄很少,因此所需要的內(nèi)存也很少。因為線程需要的開銷比進程少 |
調(diào)度 | 僅是資源分配的基本單位 | 獨立調(diào)度、分派的基本單位 |
并發(fā)性 | 僅進程間并發(fā)(傳統(tǒng)OS) | 進程間、線程間并發(fā) |
擁有資源 | 資源擁有的基本單位 | 基本上不擁有資源 |
系統(tǒng)開銷 | 創(chuàng)建、撤銷、切換開銷大 | 僅保存少量寄存器內(nèi)容,開銷小。 |
進程與應(yīng)用程序的區(qū)別在于應(yīng)用程序作為一個靜態(tài)文件存儲在計算機系統(tǒng)的硬盤等存儲空間中,而進程則是處于動態(tài)條件下由操作系統(tǒng)維護的系統(tǒng)資源管理實體。
|
定義 |
使用系統(tǒng)運行資源情況 |
程序 |
計算機指令的集合,它以文件的形式存儲在磁盤上。程序是靜態(tài)實體(passive Entity),在多道程序系統(tǒng)中,它是不能獨立運行的,更不能與其他程序并發(fā)執(zhí)行。 |
不使用【程序不能申請系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨立運行的單位,因此,它不占用系統(tǒng)的運行資源】。
|
進程 |
通常被定義為一個正在運行的程序的實例,是一個程序在其自身的地址空間中的一次執(zhí)行活動。 定義:進程是進程實體(包括:程序段、相關(guān)的數(shù)據(jù)段、進程控制塊PCB)的運行過程,是系統(tǒng)進行資源分配和調(diào)度的一個獨立單位。 |
使用【進程是資源申請、調(diào)度和獨立運行的單位,因此,它使用系統(tǒng)中的運行資源?!?/span> |
關(guān)于操作系統(tǒng)的知識點2、Windows下的內(nèi)存是如何管理的?
Windows提供了3種方法來進行內(nèi)存管理:虛擬內(nèi)存,最適合用來管理大型對象或者結(jié)構(gòu)數(shù)組;內(nèi)存映射文件,最適合用來管理大型數(shù)據(jù)流(通常來自文件)以及在單個計算機上運行多個進程之間共享數(shù)據(jù);內(nèi)存堆棧,最適合用來管理大量的小對象。
關(guān)于操作系統(tǒng)的知識點3、Windows消息調(diào)度機制是?
A)指令隊列;B)指令堆棧;C)消息隊列;D)消息堆棧
答案:C
處理消息隊列的順序。首先Windows絕對不是按隊列先進先出的次序來處理的,而是有一定優(yōu)先級的。優(yōu)先級通過消息隊列的狀態(tài)標(biāo)志來實現(xiàn)的。首先,最高優(yōu)先級的是別的線程發(fā)過來的消息(通過sendmessage);其次,處理登記消息隊列消息;再次處理QS_QUIT標(biāo)志,處理虛擬輸入隊列,處理wm_paint;最后是wm_timer。
關(guān)于操作系統(tǒng)的知識點4、描述實時系統(tǒng)的基本特性
在特定時間內(nèi)完成特定的任務(wù),實時性與可靠性。
所謂“實時操作系統(tǒng)”,實際上是指操作系統(tǒng)工作時,其各種資源可以根據(jù)需要隨時進行動態(tài)分配。由于各種資源可以進行動態(tài)分配,因此,其處理事務(wù)的能力較強、速度較快。
關(guān)于操作系統(tǒng)的知識點5、中斷和輪詢的特點
對I/O設(shè)備的程序輪詢的方式,是早期的計算機系統(tǒng)對I/O設(shè)備的一種管理方式。它定時對各種設(shè)備輪流詢問一遍有無處理要求。輪流詢問之后,有要求的,則加以處理。在處理I/O設(shè)備的要求之后,處理機返回繼續(xù)工作。盡管輪詢需要時間,但輪詢要比I/O設(shè)備的速度要快得多,所以一般不會發(fā)生不能及時處理的問題。當(dāng)然,再快的處理機,能處理的輸入輸出設(shè)備的數(shù)量也是有一定限度的。而且,程序輪詢畢竟占據(jù)了CPU相當(dāng)一部分處理時間,因此,程序輪詢是一種效率較低的方式,在現(xiàn)代計算機系統(tǒng)中已很少應(yīng)用。
程序中斷通常簡稱中斷,是指CPU在正常運行程序的過程中,由于預(yù)先安排或發(fā)生了各種隨機的內(nèi)部或外部事件,使CPU中斷正在運行的程序,而轉(zhuǎn)到為響應(yīng)的服務(wù)程序去處理。
輪詢——效率低,等待時間很長,CPU利用率不高。
中斷——容易遺漏一些問題,CPU利用率高。
關(guān)于操作系統(tǒng)的知識點6、什么是臨界區(qū)?如何解決沖突?
每個進程中訪問臨界資源的那段程序稱為臨界區(qū),每次只準(zhǔn)許一個進程進入臨界區(qū),進入后不允許其他進程進入。
(1)如果有若干進程要求進入空閑的臨界區(qū),一次僅允許一個進程進入;
(2)任何時候,處于臨界區(qū)內(nèi)的進程不可多于一個。如已有進程進入自己的臨界區(qū),則其它所有試圖進入臨界區(qū)的進程必須等待;
(3)進入臨界區(qū)的進程要在有限時間內(nèi)退出,以便其它進程能及時進入自己的臨界區(qū);
(4)如果進程不能進入自己的臨界區(qū),則應(yīng)讓出CPU,避免進程出現(xiàn)“忙等”現(xiàn)象。
關(guān)于操作系統(tǒng)的知識點7、說說分段和分頁
頁是信息的物理單位,分頁是為實現(xiàn)離散分配方式,以消減內(nèi)存的外零頭,提高內(nèi)存的利用率;或者說,分頁僅僅是由于系統(tǒng)管理的需要,而不是用戶的需要。
段是信息的邏輯單位,它含有一組其意義相對完整的信息。分段的目的是為了能更好的滿足用戶的需要。
頁的大小固定且由系統(tǒng)確定,把邏輯地址劃分為頁號和頁內(nèi)地址兩部分,是由機器硬件實現(xiàn)的,因而一個系統(tǒng)只能有一種大小的頁面。段的長度卻不固定,決定于用戶所編寫的程序,通常由編輯程序在對源程序進行編輯時,根據(jù)信息的性質(zhì)來劃分。
分頁的作業(yè)地址空間是一維的,即單一的線性空間,程序員只須利用一個記憶符,即可表示一地址。分段的作業(yè)地址空間是二維的,程序員在標(biāo)識一個地址時,既需給出段名,又需給出段內(nèi)地址。
關(guān)于操作系統(tǒng)的知識點8、說出你所知道的保持進程同步的方法?
進程同步的主要任務(wù):是對多個相關(guān)進程在執(zhí)行次序上進行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。
同步機制遵循的原則:
(1)空閑讓進;
(2)忙則等待(保證對臨界區(qū)的互斥訪問);
(3)有限等待(有限代表有限的時間,避免死等);
(4)讓權(quán)等待,(當(dāng)進程不能進入自己的臨界區(qū)時,應(yīng)該釋放處理機,以免陷入忙等狀態(tài))。
進程間同步的主要方法有原子操作、信號量機制、自旋鎖、分布式系統(tǒng)等。
關(guān)于操作系統(tǒng)的知識點9、Linux中常用到的命令
顯示文件目錄命令ls 如ls
改變當(dāng)前目錄命令cd 如cd /home
建立子目錄mkdir 如mkdir xiong
刪除子目錄命令rmdir 如rmdir /mnt/cdrom
刪除文件命令rm 如rm /ucdos.bat
文件復(fù)制命令cp 如cp /ucdos /fox
獲取幫助信息命令man 如man ls
顯示文件的內(nèi)容less 如less mwm.lx
重定向與管道type 如type readme>>direct,將文件readme的內(nèi)容追加到文direct中
關(guān)于操作系統(tǒng)的知識點10、makefile文件的作用是什么?
一個工程中的源文件不計其數(shù),其按類型、功能、模塊分別放在若干個目錄中。makefile定義了一系列的規(guī)則來指定哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復(fù)雜的功能操作。因為makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。makefile帶來的好處就是——“自動化編譯”。一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大地提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具。一般來說,大多數(shù)的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
關(guān)于操作系統(tǒng)的知識點11、簡術(shù)OSI的物理層Layer1,鏈路層Layer2,網(wǎng)絡(luò)層Layer3的任務(wù)。
網(wǎng)絡(luò)層:通過路由選擇算法,為報文或分組通過通信子網(wǎng)選擇最適當(dāng)?shù)穆窂健?/p>
鏈路層:通過各種控制協(xié)議,將有差錯的物理信道變?yōu)闊o差錯的、能可靠傳輸數(shù)據(jù)幀的數(shù)據(jù)鏈路。
物理層:利用傳輸介質(zhì)為數(shù)據(jù)鏈路層提供物理連接,實現(xiàn)比特流的透明傳輸。
關(guān)于操作系統(tǒng)的知識點12、什么是中斷?中斷時CPU做什么工作?
中斷是指在計算機執(zhí)行期間,系統(tǒng)內(nèi)發(fā)生任何非尋常的或非預(yù)期的急需處理事件,使得CPU暫時中斷當(dāng)前正在執(zhí)行的程序而轉(zhuǎn)去執(zhí)行相應(yīng)的事件處理程序。待處理完畢后又返回原來被中斷處繼續(xù)執(zhí)行或調(diào)度新的進程執(zhí)行的過程。
關(guān)于操作系統(tǒng)的知識點13、你知道操作系統(tǒng)的內(nèi)容分為幾塊嗎?什么叫做虛擬內(nèi)存?他和主存的關(guān)系如何?內(nèi)存管理屬于操作系統(tǒng)的內(nèi)容嗎?
操作系統(tǒng)的主要組成部分:進程和線程的管理,存儲管理,設(shè)備管理,文件管理。虛擬內(nèi)存是一些系統(tǒng)頁文件,存放在磁盤上,每個系統(tǒng)頁文件大小為4K,物理內(nèi)存也被分頁,每個頁大小也為4K,這樣虛擬頁文件和物理內(nèi)存頁就可以對應(yīng),實際上虛擬內(nèi)存就是用于物理內(nèi)存的臨時存放的磁盤空間。頁文件就是內(nèi)存頁,物理內(nèi)存中每頁叫物理頁,磁盤上的頁文件叫虛擬頁,物理頁+虛擬頁就是系統(tǒng)所有使用的頁文件的總和。
關(guān)于操作系統(tǒng)的知識點14、什么是緩沖區(qū)溢出?有什么危害?其原因是什么?
緩沖區(qū)溢出是指當(dāng)計算機向緩沖區(qū)內(nèi)填充數(shù)據(jù)時超過了緩沖區(qū)本身的容量,溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上。
緩沖區(qū)溢出中,最為危險的是堆棧溢出,因為入侵者可以利用堆棧溢出,在函數(shù)返回時改變返回程序的地址,讓其跳轉(zhuǎn)到任意地址,帶來的危害一種是程序崩潰導(dǎo)致拒絕服務(wù),另外一種就是跳轉(zhuǎn)并且執(zhí)行一段惡意代碼,比如得到shell,然后為所欲為。通過往程序的緩沖區(qū)寫超出其長度的內(nèi)容,造成緩沖區(qū)的溢出,從而破壞程序的堆棧,使程序轉(zhuǎn)而執(zhí)行其它指令,以達到攻擊的目的。
造成緩沖區(qū)溢出的主原因是程序中沒有仔細(xì)檢查用戶輸入的參數(shù)。
關(guān)于操作系統(tǒng)的知識點15、什么是死鎖?其條件是什么?怎樣避免死鎖?
死鎖的概念:在兩個或多個并發(fā)進程中,如果每個進程持有某種資源而又都等待別的進程釋放它或它們現(xiàn)在保持著的資源,在未改變這種狀態(tài)之前都不能向前推進,稱這一組進程產(chǎn)生了死鎖。通俗地講,就是兩個或多個進程被無限期地阻塞、相互等待的一種狀態(tài)。
死鎖產(chǎn)生的原因主要是:? 系統(tǒng)資源不足;? 進程推進順序非法。
產(chǎn)生死鎖的必要條件:
(1)互斥(mutualexclusion),一個資源每次只能被一個進程使用;
(2)不可搶占(nopreemption),進程已獲得的資源,在未使用完之前,不能強行剝奪;
(3)占有并等待(hold andwait),一個進程因請求資源而阻塞時,對已獲得的資源保持不放;
(4)環(huán)形等待(circularwait),若干進程之間形成一種首尾相接的循環(huán)等待資源關(guān)系。
這四個條件是死鎖的必要條件,只要系統(tǒng)發(fā)生死鎖,這些條件必然成立,而只要上述條件之一不滿足,就不會發(fā)生死鎖。
死鎖的解除與預(yù)防:理解了死鎖的原因,尤其是產(chǎn)生死鎖的四個必要條件,就可以最大可能地避免、預(yù)防和解除死鎖。所以,在系統(tǒng)設(shè)計、進程調(diào)度等方面注意如何不讓這四個必要條件成立,如何確定資源的合理分配算法,避免進程永久占據(jù)系統(tǒng)資源。此外,也要防止進程在處于等待狀態(tài)的情況下占用資源。因此,對資源的分配要給予合理的規(guī)劃。
死鎖的處理策略:
忽略該問題。例如鴕鳥算法,該算法可以應(yīng)用在極少發(fā)生死鎖的情況下。傳說中,鴕鳥看到危險就把頭深埋地下,這是顯然是一種很消極的策略。
檢測死鎖并且恢復(fù)。
通過對資源有序分配,以避免循環(huán)等待的“環(huán)路”發(fā)生。
通過破壞死鎖的必要條件,來防止死鎖的產(chǎn)生。