操作系統(tǒng)面試題(帶答案)_第1頁
操作系統(tǒng)面試題(帶答案)_第2頁
操作系統(tǒng)面試題(帶答案)_第3頁
操作系統(tǒng)面試題(帶答案)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1.1進(jìn)程線程的基本概念(本文講1.1.1-1.1.3)1.1.1什么是進(jìn)程,線程,彼此有什么區(qū)別?????1.1.2多進(jìn)程、多線程的優(yōu)缺點(diǎn)????1.1.3什么時候用進(jìn)程,什么時候用線程???1.1.4多進(jìn)程、多線程同步(通訊)的方法????1.1.5進(jìn)程的空間模型???1.1.6一個進(jìn)程可以創(chuàng)建多少線程,和什么有關(guān)??1.1.7進(jìn)程線程的狀態(tài)轉(zhuǎn)換圖什么時候阻塞,什么時候就緒??1.1.8父進(jìn)程、子進(jìn)程的關(guān)系以及區(qū)別?????1.1.9什么是進(jìn)程上下文、中斷上下文??1.2并發(fā),同步,異步,互斥,阻塞,非阻塞的理解1.2.1并發(fā),同步,異步,互斥,阻塞,非阻塞的理解?????1.2.2什么是線程同步和互斥?????1.2.3線程同步與阻塞的關(guān)系?同步一定阻塞嗎?阻塞一定同步嗎????1.3孤兒進(jìn)程、僵尸進(jìn)程、守護(hù)進(jìn)程的概念1.3.1基本概念??1.3.2如何創(chuàng)建守護(hù)進(jìn)程:??1.3.3正確處理孤兒進(jìn)程、僵尸進(jìn)程的方法?????1.1進(jìn)程線程的基本概念1.1.1什么是進(jìn)程,線程?也就是問彼此有什么區(qū)別?答:進(jìn)程是資源(CPU、內(nèi)存等)分配的基本單位,線程是CPU調(diào)度和分配的基本單位(程序執(zhí)行的最小單位)。1)當(dāng)我們運(yùn)行一個程序的時候,系統(tǒng)就會創(chuàng)建一個進(jìn)程,并分配地址空間和其他資源,最后把進(jìn)程加入就緒隊(duì)列直到分配到CPU時間就可以正式運(yùn)行了。2)線程是進(jìn)程的一個執(zhí)行流,有一個初學(xué)者可能誤解的概念,進(jìn)程就像一個容器一樣,包括程序運(yùn)行的程序段、數(shù)據(jù)段等信息,但是進(jìn)程其實(shí)是不能用來運(yùn)行代碼的,真正運(yùn)行代碼的是進(jìn)程里的線程。3)那么,來看看我們最熟悉的main()函數(shù),我們既可以認(rèn)為這是一個進(jìn)程,也可以認(rèn)為是一個線程。我們都知道,在C/C++中main函數(shù)是程序入口,所以準(zhǔn)確來說main函數(shù)是程序的主線程。然而很神奇的地方在于,當(dāng)系統(tǒng)在執(zhí)行main函數(shù)的時候,main函數(shù)又是一個獨(dú)立的進(jìn)程,我們可以在main函數(shù)里創(chuàng)建子進(jìn)程,也可以創(chuàng)建子線程。4)在main函數(shù)里創(chuàng)建的多個子線程中,每個線程有自己的堆棧和局部變量,但多個線程也可共享同個進(jìn)程下的所有共享資源,因此我們經(jīng)??梢詣?chuàng)建多個線程實(shí)現(xiàn)并發(fā)操作,實(shí)現(xiàn)更加復(fù)雜的功能。1.1.2多進(jìn)程、多線程的優(yōu)缺點(diǎn)解析:為了理解多進(jìn)程、多線程各自的優(yōu)缺點(diǎn)之前,我們需要先了解進(jìn)程和線程最大的區(qū)別和聯(lián)系,一個進(jìn)程由PCB(進(jìn)程控制塊)、數(shù)據(jù)段、代碼段組成,進(jìn)程本身不可以運(yùn)行程序,而是像一個容器一樣,先創(chuàng)建出一個主線程,分配給主線程一定的系統(tǒng)資源,這時候就可以在主線程開始實(shí)現(xiàn)各種功能。當(dāng)我們需要實(shí)現(xiàn)更復(fù)雜的功能時,可以在主線程里創(chuàng)建多個子線程,跟人多好干活的道理一樣,多個線程在同一個進(jìn)程里,利用這個進(jìn)程所擁有的系統(tǒng)資源合作完成某些功能。理解了這些知識點(diǎn),再來理解各自優(yōu)缺點(diǎn)就很容易了。1)多進(jìn)程更健壯,一個進(jìn)程死了不影響其他進(jìn)程,子進(jìn)程死了也不會影響到主進(jìn)程,畢竟系統(tǒng)會給每個進(jìn)程分配獨(dú)立的系統(tǒng)資源。多線程比較脆弱,一個線程崩潰很可能影響到整個程序,因?yàn)槎鄠€線程是在一個進(jìn)程里一起合作干活的。2)進(jìn)程性能大于線程,每個進(jìn)程獨(dú)立地址空間和資源,而多個線程是一起共享了同個進(jìn)程里的空間和資源,結(jié)果就很明顯了,線程的性能上限一定比不上進(jìn)程。3)正因?yàn)檫M(jìn)程性能大于線程。所以這也引發(fā)了另一重要知識點(diǎn),創(chuàng)建多進(jìn)程的系統(tǒng)花銷遠(yuǎn)大于創(chuàng)建多線程。4)多進(jìn)程通訊因?yàn)樾枰缭竭M(jìn)程邊界,不適合大量數(shù)據(jù)的傳送,更適合小數(shù)據(jù)或者密集數(shù)據(jù)的傳送。而多線程無需跨越進(jìn)程邊界,適合各線程間大量數(shù)據(jù)的傳送,甚至還有很重要的一點(diǎn),多線程可以共享同一進(jìn)程里的共享內(nèi)存和變量哦。5)多進(jìn)程邏輯控制比多線程復(fù)雜,需要與主進(jìn)程做好交互。根據(jù)上面幾點(diǎn),我們不難知道多進(jìn)程是“要用來做大事”的,而多線程是“各自做件小事,合作完成大事”。所以要做大事自然就需要更復(fù)雜的邏輯控制,不像做小事那么目標(biāo)明顯。6)雖然多線程邏輯控制比較簡單,但是卻需要復(fù)雜的線程同步和加鎖控制等機(jī)制。7)最后的一點(diǎn),可能比較少見,我們可以通過增加CPU的數(shù)量來增加進(jìn)程的數(shù)量,但增加不了線程的數(shù)量,即增加CPU無法提高線程數(shù)量,線程數(shù)量由進(jìn)程的空間資源和線程本身?xiàng)4笮〈_定,詳情見1.1.6小節(jié)。1.1.3什么時候用進(jìn)程,什么時候用線程解析:還是同一個思想,進(jìn)程是“要用來做大事”的,而線程是“各自做件小事,合作完成大事”,結(jié)合上節(jié)新鮮出爐的優(yōu)缺點(diǎn)我們就很好理解什么時候用進(jìn)程或者線程了。1)創(chuàng)建和銷毀較頻繁使用線程,因?yàn)閯?chuàng)建進(jìn)程花銷大嘛。2)需要大量數(shù)據(jù)傳送使用線程,因?yàn)槎嗑€程切換速度快,不需要跨越進(jìn)程邊界。3)并行操作使用線程。線程是為了實(shí)現(xiàn)并行操作的一個手段,也就是剛才說的需要多個并行操作“合作完成大事”,當(dāng)然是使用線程啦。4)最后可以總結(jié)為:安全穩(wěn)定選進(jìn)程;快速頻繁選線程;1.1.4多進(jìn)程、多線程同步(通訊)的方法答:當(dāng)我們在使用系統(tǒng)編程時,就會遇到多進(jìn)程、多線程編程,所以必須知道在多個進(jìn)程、多個線程之間都有什么常見的通訊機(jī)制,這也是嵌入式面試中高頻問題之一。進(jìn)程間通訊:(1)管道/無名管道(2)信號(3)共享內(nèi)存(4)消息隊(duì)列(5)信號量(6)socket注意:臨界區(qū)則是一種概念,指的是訪問公共資源的程序片段,并不是一種通信方式。線程通訊:(1)信號量(2)讀寫鎖(3)條件變量(4)互斥鎖(5)自旋鎖提問:互斥鎖與信號量的區(qū)別?答:互斥鎖用于線程的互斥,信號量用于線程的同步。這是互斥鎖和信號量的根本區(qū)別,也就是互斥和同步之間的區(qū)別。同時互斥鎖的作用域僅僅在于線程,信號量可以作用于線程和進(jìn)程。1.1.5進(jìn)程的空間模型解析:32位系統(tǒng)中,當(dāng)系統(tǒng)運(yùn)行一個程序,就會創(chuàng)建一個進(jìn)程,系統(tǒng)為其分配4G的虛擬地址空間,其中0-3G是用戶空間,3-4G是內(nèi)核空間,具體如圖1-2,內(nèi)核空間是受保護(hù)的,用戶不能對該空間進(jìn)行讀寫操作,否則可能出現(xiàn)段錯誤。其中??臻g有向下的箭頭,代表數(shù)據(jù)地址增加的空間是往下的,新的數(shù)據(jù)的地址的值反而更小,堆空間則是往上。1.1.6一個進(jìn)程可以創(chuàng)建多少線程,和什么有關(guān)答:一個進(jìn)程創(chuàng)建線程的個數(shù)由虛擬內(nèi)存和分配給線程的調(diào)用棧大小決定。由1.1.5小節(jié)我們已經(jīng)知道創(chuàng)建一個進(jìn)程,系統(tǒng)會分配4G的虛擬內(nèi)存,其中1G是內(nèi)核空間,只有3G是用戶空間,也

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論