操作系統(tǒng)面試題
操作系統(tǒng)面試題
不放過(guò)每一個(gè)知識(shí)點(diǎn),尤其對(duì)容易混淆的東西要下更大工夫搞清楚,基礎(chǔ)要牢固,百分網(wǎng)小編整理了一些操作系統(tǒng)面試題給大家,希望對(duì)你有所幫助!
1. 進(jìn)程和線程的區(qū)別。
進(jìn)程(Process):是操作系統(tǒng)分配資源的單位
線程(Thread):是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位
進(jìn)程在執(zhí)行過(guò)程中擁有獨(dú)立的內(nèi)存單元,而多個(gè)線程共享內(nèi)存。
同一進(jìn)程內(nèi)的線程間切換比進(jìn)程間的切換要快,尤其是用戶級(jí)線程間的切換。
2. 死鎖的必要條件,怎么處理死鎖。
死鎖的必要條件:
互斥條件。某個(gè)資源在一段時(shí)間內(nèi)只能由一個(gè)進(jìn)程占有,不能同時(shí)被兩個(gè)或兩個(gè)以上的進(jìn)程占有。
不可搶占條件。進(jìn)程所獲得的資源在未使用完畢之前,資源申請(qǐng)者不能強(qiáng)行地從資源占有者手中奪取資源,而只能由該資源的占有者進(jìn)程自行釋放。
占有且申請(qǐng)條件。進(jìn)程至少已經(jīng)占有一個(gè)資源,但又申請(qǐng)新的資源;由于該資源已被另外進(jìn)程占有,此時(shí)該進(jìn)程阻塞;但是,它在等待新資源之時(shí),仍繼續(xù)占用已占有的資源。
循環(huán)等待條件。存在一個(gè)進(jìn)程等待序列{P1,P2,...,Pn},其中P1等待P2所占有的'某一資源,P2等待P3所占有的某一源,......,而Pn等待P1所占有的的某一資源,形成一個(gè)進(jìn)程循環(huán)等待環(huán)。
解決死鎖的方法:
死鎖的預(yù)防:基本思想是要求進(jìn)程申請(qǐng)資源時(shí)遵循某種協(xié)議,從而打破產(chǎn)生死鎖的四個(gè)必要條件中的一個(gè)或幾個(gè),保證系統(tǒng)不會(huì)進(jìn)入死鎖狀態(tài)
死鎖的避免:不限制進(jìn)程有關(guān)申請(qǐng)資源的命令,而是對(duì)進(jìn)程所發(fā)出的每一個(gè)申請(qǐng)資源命令加以動(dòng)態(tài)地檢查(是否有發(fā)生死鎖的可能性),并根據(jù)檢查結(jié)果決定是否進(jìn)行資源分配。這種方法的關(guān)鍵是確定資源分配的安全性。(安全序列、銀行家算法、 雖然存在安全序列時(shí)一定不會(huì)有死鎖發(fā)生,但是系統(tǒng)進(jìn)入不安全狀態(tài)(四個(gè)死鎖的必要條件同時(shí)發(fā)生)也未必會(huì)產(chǎn)生死鎖。當(dāng)然,產(chǎn)生死鎖后,系統(tǒng)一定處于不安全狀態(tài))。
死鎖的檢測(cè)與恢復(fù)
3. 內(nèi)存管理方式:段存儲(chǔ),頁(yè)存儲(chǔ),段頁(yè)存儲(chǔ)。
頁(yè)存儲(chǔ):用戶程序的地址空間被劃分成若干固定大小的區(qū)域,稱為“頁(yè)”,相應(yīng)地,內(nèi)存空間分成若干個(gè)物理塊,頁(yè)和塊的大小相等?蓪⒂脩舫绦虻娜我豁(yè)放在內(nèi)存的任一塊中,實(shí)現(xiàn)了離散分配。
段存儲(chǔ):將用戶程序地址空間分成若干個(gè)大小不等的段,每段可以定義一組相對(duì)完整的邏輯信息。存儲(chǔ)分配時(shí),以段為單位,段與段在內(nèi)存中可以不相鄰接,也實(shí)現(xiàn)了離散分配。
段頁(yè)存儲(chǔ):分段式和分頁(yè)式結(jié)合的存儲(chǔ)組織方法,這樣可充分利用分段管理和分頁(yè)管理的優(yōu)點(diǎn)。(1) 用分段方法來(lái)分配和管理虛擬存儲(chǔ)器。程序的地址空間按邏輯單位分成基本獨(dú)立的段,而每一段有自己的段名,再把每段分成固定大小的若干頁(yè)。(2) 用分頁(yè)方法來(lái)分配和管理實(shí)存。即把整個(gè)主存分成與上述頁(yè)大小相等的存儲(chǔ)塊,可裝入作業(yè)的任何一頁(yè)。程序?qū)?nèi)存的調(diào)入或調(diào)出是按頁(yè)進(jìn)行的,但它又可按段實(shí)現(xiàn)共享和保護(hù)。
4. 進(jìn)程的幾種狀態(tài)。
5. IPC幾種通信方式。
管道(pipe):管道包括三種:1)普通管道PIPE, 通常有種限制,一是半雙工,只能單向傳輸;二是只能在父子進(jìn)程間使用. 2)流管道s_pipe: 去除了第一種限制,可以雙向傳輸. 3)命名管道:name_pipe, 去除了第二種限制,可以在許多并不相關(guān)的進(jìn)程之間進(jìn)行通訊.
信號(hào)量(semophore):信號(hào)量是一種計(jì)數(shù)器,可以控制進(jìn)程間多個(gè)線程或者多個(gè)進(jìn)程對(duì)資源的同步訪問(wèn),它常實(shí)現(xiàn)為一種鎖機(jī)制。實(shí)質(zhì)上,信號(hào)量是一個(gè)被保護(hù)的變量,并且只能通過(guò)初始化和兩個(gè)標(biāo)準(zhǔn)的原子操作(P/V)來(lái)訪問(wèn)。(P,V操作也常稱為wait(s),signal(s))
信號(hào)(Signal):信號(hào)是Unix系統(tǒng)中使用的最古老的進(jìn)程間通信的方法之一。操作系統(tǒng)通過(guò)信號(hào)來(lái)通知某一進(jìn)程發(fā)生了某一種預(yù)定好的事件;接收到信號(hào)的進(jìn)程可以選擇不同的方式處理該信號(hào),一是可以采用默認(rèn)處理機(jī)制-進(jìn)程中斷或退出,一是忽略該信號(hào),還有就是自定義該信號(hào)的處理函數(shù),執(zhí)行相應(yīng)的動(dòng)作。內(nèi)核為進(jìn)程生產(chǎn)信號(hào),來(lái)響應(yīng)不同的事件,這些事件就是信號(hào)源。信號(hào)源可以是:異常,其他進(jìn)程,終端的中斷(Ctrl-C,Ctrl+等),作業(yè)的控制(前臺(tái),后臺(tái)進(jìn)程的管理等),分配額問(wèn)題(cpu超時(shí)或文件過(guò)大等),內(nèi)核通知(例如I/O就緒等),報(bào)警(計(jì)時(shí)器)。
消息隊(duì)列(Message Queue):消息隊(duì)列就是消息的一個(gè)鏈表,它允許一個(gè)或者多個(gè)進(jìn)程向它寫消息,一個(gè)或多個(gè)進(jìn)程向它讀消息。Linux維護(hù)了一個(gè)消息隊(duì)列向量表:msgque,來(lái)表示系統(tǒng)中所有的消息隊(duì)列。消息隊(duì)列克服了信號(hào)傳遞信息少,管道只能支持無(wú)格式字節(jié)流和緩沖區(qū)受限的缺點(diǎn)。
共享內(nèi)存(shared memory):共享內(nèi)存映射為一段可以被其他進(jìn)程訪問(wèn)的內(nèi)存。該共享內(nèi)存由一個(gè)進(jìn)程所創(chuàng)建,然后其他進(jìn)程可以掛載到該共享內(nèi)存中。共享內(nèi)存是最快的IPC機(jī)制,但由于linux本身不能實(shí)現(xiàn)對(duì)其同步控制,需要用戶程序進(jìn)行并發(fā)訪問(wèn)控制,因此它一般結(jié)合了其他通信機(jī)制實(shí)現(xiàn)了進(jìn)程間的通信,例如信號(hào)量。
套接字(socket):socket也是一種進(jìn)程間的通信機(jī)制,不過(guò)它與其他通信方式主要的區(qū)別是:它可以實(shí)現(xiàn)不同主機(jī)間的進(jìn)程通信。一個(gè)套接口可以看做是進(jìn)程間通信的端點(diǎn)(endpoint),每個(gè)套接口的名字是唯一的;其他進(jìn)程可以訪問(wèn),連接和進(jìn)行數(shù)據(jù)通信。
6. 什么是虛擬內(nèi)存。
虛擬內(nèi)存:邏輯上不分內(nèi)外存,實(shí)現(xiàn)了邏輯上的“擴(kuò)存”。
虛擬存儲(chǔ)器具有請(qǐng)求調(diào)入、 置換功能,當(dāng)所需要的頁(yè)面不再內(nèi)存中時(shí),就要執(zhí)行頁(yè)面的請(qǐng)求調(diào)入算法。
7. 虛擬地址、邏輯地址、線性地址、物理地址的區(qū)別。
邏輯地址(虛擬地址):由程序產(chǎn)生的與段相關(guān)的偏移地址部分
線性地址:段中的偏移地址,加上相應(yīng)段的基地址就生成了一個(gè)線性地址。如果啟用了分頁(yè)機(jī)制,那么線性地址可以再經(jīng)變換以產(chǎn)生一個(gè)物理地址。若沒(méi)有啟用分頁(yè)機(jī)制,那么線性地址直接就是物理地址。
物理地址:在CPU外部地址總線上的尋址物理內(nèi)存的地址信號(hào),是地址變換的最終結(jié)果地址
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 yyfangchan@163.com (舉報(bào)時(shí)請(qǐng)帶上具體的網(wǎng)址) 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除