計(jì)算機(jī)操作系統(tǒng)面試
計(jì)算機(jī)操作系統(tǒng)面試
計(jì)算機(jī)操作系統(tǒng)面試時(shí)經(jīng)常會(huì)有不熟悉的問(wèn)題,下面由學(xué)習(xí)啦小編為大家整理了計(jì)算機(jī)操作系統(tǒng)面試的相關(guān)知識(shí),希望對(duì)大家有幫助!
計(jì)算機(jī)操作系統(tǒng)面試一、操作系統(tǒng)引論
操作系統(tǒng)目標(biāo)
1:方面性,2:有效性,3:可擴(kuò)展性,4:開(kāi)放性
操作系統(tǒng)基本特性
1:并發(fā)、2:共享、3:虛擬、4:異步
描述多道批處理、分時(shí)、實(shí)時(shí)操作系統(tǒng)的特點(diǎn)各是什么?
批處理操作系統(tǒng):多道性、無(wú)序性、調(diào)度性,系統(tǒng)利用率高、吞吐量大、平均周轉(zhuǎn)時(shí)間長(zhǎng)、但無(wú)交互能力。
分時(shí)操作系統(tǒng):有多路性、獨(dú)立性、及時(shí)性和交互性。 有較好的人機(jī)交互的特性,并且可以實(shí)現(xiàn)共享主機(jī)
實(shí)時(shí)系統(tǒng):有多路性、獨(dú)立性、及時(shí)性、交互性和可靠性。實(shí)際上是指操作系統(tǒng)工作時(shí),其各種資源可以根據(jù)需要隨時(shí)進(jìn)行動(dòng)態(tài)分配。由于各種資源可以進(jìn)行動(dòng)態(tài)分配,因此,其處理事務(wù)的能力較強(qiáng)、速度較快。
總結(jié):從可靠性:實(shí)時(shí)系統(tǒng)更強(qiáng),從交互性:分時(shí)系統(tǒng)更強(qiáng)
計(jì)算機(jī)操作系統(tǒng)面試二、進(jìn)程的描述與控制
程序并發(fā)執(zhí)行的特征
1:間斷性:程序在并發(fā)執(zhí)行的時(shí)候,因?yàn)槭枪蚕碣Y源,以及完成同一項(xiàng)任務(wù)而相互合作,致使在這些并發(fā)執(zhí)行的程序之間形成了相互制約的關(guān)系,導(dǎo)致程序執(zhí)行呈現(xiàn):執(zhí)行--暫停--執(zhí)行
2:失去封閉性:當(dāng)系統(tǒng)中有多個(gè)并發(fā)執(zhí)行的程序時(shí),各個(gè)資源是他們所共享的,這些資源的狀態(tài)也由這些程序所改變,所以摸一個(gè)程序的運(yùn)行環(huán)境會(huì)受到其他程序的影響。
3:不可再生性
進(jìn)程的特征與三種基本狀態(tài)
1、特征:
1:動(dòng)態(tài)性,2:并發(fā)性,3:獨(dú)立性,4:異步性。
2、狀態(tài):
1:就緒狀態(tài),2:執(zhí)行狀態(tài),3:阻塞狀態(tài)
3、三種基本狀態(tài)轉(zhuǎn)換:
處于就緒狀態(tài)的進(jìn)程,在調(diào)度程序?yàn)橹峙淞颂幚頇C(jī)之后便開(kāi)始執(zhí)行, 就緒 -> 執(zhí)行
正在執(zhí)行的進(jìn)程如果因?yàn)榉峙渌臅r(shí)間片已經(jīng)用完,而被剝奪處理劑, 執(zhí)行 -> 就緒
如果因?yàn)槟撤N原因致使當(dāng)前的進(jìn)程執(zhí)行受阻,使之不能執(zhí)行。 執(zhí)行 -> 阻塞
4、創(chuàng)建狀態(tài)和終止?fàn)顟B(tài)圖
進(jìn)程控制塊PCB的作用
1:作為獨(dú)立運(yùn)行基本單位的標(biāo)志
2:能實(shí)現(xiàn)間斷性運(yùn)行方式
3:提供進(jìn)程通信管理所需要的信息
4:提供進(jìn)程調(diào)度所需要的信息
線程與進(jìn)程的區(qū)別聯(lián)系
1、定義:
進(jìn)程:進(jìn)程是具有一定獨(dú)立功能的程序關(guān)于某個(gè)數(shù)據(jù)集合上的一次運(yùn)行活動(dòng),是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。(包括程序段,相關(guān)數(shù)據(jù)段,和進(jìn)程控制塊PCB)
線程:線程是進(jìn)程的一個(gè)實(shí)體,是CPU調(diào)度和分派的基本單位,它是比進(jìn)程更小的能獨(dú)立運(yùn)行的基本單位。線程自己基本上不擁有系統(tǒng)資源,只擁有一點(diǎn)在運(yùn)行中必不可少的資源(如程序計(jì)數(shù)器,一組寄存器和棧),但是它可與同屬一個(gè)進(jìn)程的其他的線程共享進(jìn)程所擁有的全部資源.
2、關(guān)系:一個(gè)線程可以創(chuàng)建和撤銷另一個(gè)線程;同一個(gè)進(jìn)程中的多個(gè)線程之間可以并發(fā)執(zhí)行.相對(duì)進(jìn)程而言,線程是一個(gè)更加接近于執(zhí)行體的概念,它可以與同進(jìn)程中的其他線程共享數(shù)據(jù),但擁有自己的??臻g,擁有獨(dú)立的執(zhí)行序列。
3、區(qū)別:主要差別在于它們是不同的操作系統(tǒng)資源管理方式。進(jìn)程有獨(dú)立的地址空間,一個(gè)進(jìn)程崩潰后,在保護(hù)模式下不會(huì)對(duì)其它進(jìn)程產(chǎn)生影響,而線程只是一個(gè)進(jìn)程中的不同執(zhí)行路徑。線程有自己的堆棧和局部變量,但線程之間沒(méi)有單獨(dú)的地址空間,一個(gè)線程死掉就等于整個(gè)進(jìn)程死掉,所以多進(jìn)程的程序要比多線程的程序健壯,但在進(jìn)程切換時(shí),耗費(fèi)資源較大,效率要差一些。但對(duì)于一些要求同時(shí)進(jìn)行并且又要共享某些變量的并發(fā)操作,只能用線程,不能用進(jìn)程。
4.優(yōu)缺點(diǎn):線程和進(jìn)程在使用上各有優(yōu)缺點(diǎn):線程執(zhí)行開(kāi)銷小,但不利于資源的管理和保護(hù);而進(jìn)程正相反。同時(shí),線程適合于在SMP機(jī)器上運(yùn)行,而進(jìn)程則可以跨機(jī)器遷移。
進(jìn)程間的通信是如何實(shí)現(xiàn)的?
早期的屬于低級(jí)通信:原因:1:效率低,生產(chǎn)者每次只能向緩沖池投放一個(gè)信息 2:通信對(duì)用戶不透明,隱藏了通信的具體細(xì)節(jié)。現(xiàn)在發(fā)展為高級(jí)通信:用戶可以利用操作系統(tǒng)所提供的一組通信命令傳送大量數(shù)據(jù)。操作系統(tǒng)隱藏了進(jìn)程通信的實(shí)現(xiàn)細(xì)節(jié)?;蛘哒f(shuō),通信過(guò)程對(duì)用戶是透明的。
高級(jí)通信機(jī)制:
1:共享存儲(chǔ)器系統(tǒng)(存儲(chǔ)器中劃分的共享存儲(chǔ)區(qū))
實(shí)際操作中對(duì)應(yīng)的是“剪貼板”(剪貼板實(shí)際上是系統(tǒng)維護(hù)管理的一塊內(nèi)存區(qū)域)的通信方式。
2:消息傳遞系統(tǒng)(進(jìn)程間的數(shù)據(jù)交換以消息(message)為單位)
當(dāng)今最流行的微內(nèi)核操作系統(tǒng)中,微內(nèi)核與服務(wù)器之間的通信,都采用 了消息傳遞機(jī)制
3:管道通信系統(tǒng)(連接讀寫進(jìn)程實(shí)現(xiàn)他們之間通信的共享文件(pipe文件,類似先進(jìn)先出的隊(duì)列,由一個(gè)進(jìn)程寫,另一進(jìn)程讀))
管道分為匿名管道、命名管道。匿名管道是未命名的、單向管道,通過(guò)父進(jìn)程和一個(gè)子進(jìn)程之間傳輸數(shù)據(jù)。匿名管道只能實(shí)現(xiàn)本地機(jī)器上兩個(gè)進(jìn)程之間的通信,不能實(shí)現(xiàn)跨網(wǎng)絡(luò)的通信。命名管道不僅可以在本機(jī)上實(shí)現(xiàn)兩個(gè)進(jìn)程間的通信,還可以跨網(wǎng)絡(luò)實(shí)現(xiàn)進(jìn)程間的通信。
4:客戶機(jī)-服務(wù)器系統(tǒng)
包括:套接字(socket),遠(yuǎn)程過(guò)程調(diào)用和遠(yuǎn)程方法調(diào)用
什么是臨界區(qū)?如何解決沖突?
每個(gè)進(jìn)程中訪問(wèn)臨界資源的那段程序稱為臨界區(qū),每次只準(zhǔn)許一個(gè)進(jìn)程進(jìn)入臨界區(qū),進(jìn)入后不允許其他進(jìn)程進(jìn)入。
1:如果有若干進(jìn)程要求進(jìn)入空閑的臨界區(qū),一次僅允許一個(gè)進(jìn)程進(jìn)入;
2:任何時(shí)候,處于臨界區(qū)內(nèi)的進(jìn)程不可多于一個(gè)。如已有進(jìn)程進(jìn)入自己的臨界區(qū),則其它所有試圖進(jìn)入臨界區(qū)的進(jìn)程必須等待;
3:進(jìn)入臨界區(qū)的進(jìn)程要在有限時(shí)間內(nèi)退出,以便其它進(jìn)程能及時(shí)進(jìn)入自己的臨界區(qū);
4:如果進(jìn)程不能進(jìn)入自己的臨界區(qū),則應(yīng)讓出CPU,避免進(jìn)程出現(xiàn)“忙等”現(xiàn)象。
進(jìn)程同步原則
進(jìn)程同步的主要任務(wù):是對(duì)多個(gè)相關(guān)進(jìn)程在執(zhí)行次序上進(jìn)行協(xié)調(diào),以使并發(fā)執(zhí)行的諸進(jìn)程之間能有效地共享資源和相互合作,從而使程序的執(zhí)行具有可再現(xiàn)性。同步機(jī)制遵循的原則:
1:空閑讓進(jìn);
2:忙則等待(保證對(duì)臨界區(qū)的互斥訪問(wèn));
3:有限等待(有限代表有限的時(shí)間,避免死等);
4:讓權(quán)等待,(當(dāng)進(jìn)程不能進(jìn)入自己的臨界區(qū)時(shí),應(yīng)該釋放處理機(jī),以免陷入忙等狀態(tài))。
進(jìn)程同步
由于進(jìn)程同步產(chǎn)生了一系列經(jīng)典的同步問(wèn)題“生產(chǎn)者-消費(fèi)者”問(wèn)題,“哲學(xué)家進(jìn)餐”問(wèn)題,“讀者-寫者”問(wèn)題。
程序和進(jìn)程的區(qū)別
程序:計(jì)算機(jī)指令的集合,它以文件的形式存儲(chǔ)在磁盤上。程序是靜態(tài)實(shí)體(passive Entity),在多道程序系統(tǒng)中,它是不能獨(dú)立運(yùn)行的,更不能與其他程序并發(fā)執(zhí)行。
使用系統(tǒng)資源情況:不使用(程序不能申請(qǐng)系統(tǒng)資源,不能被系統(tǒng)調(diào)度,也不能作為獨(dú)立運(yùn)行的單位,它不占用系統(tǒng)的運(yùn)行資源)。
進(jìn)程:進(jìn)程是進(jìn)程實(shí)體(包括:程序段、相關(guān)的數(shù)據(jù)段、進(jìn)程控制塊PCB)的運(yùn)行過(guò)程,是一個(gè)程序在其自身的地址空間中的一次執(zhí)行活動(dòng)。是系統(tǒng)進(jìn)行資源分配和調(diào)度的一個(gè)獨(dú)立單位。
使用系統(tǒng)資源情況:使用(進(jìn)程是資源申請(qǐng)、調(diào)度和獨(dú)立運(yùn)行的單位,因此,它使用系統(tǒng)中的運(yùn)行資源)
計(jì)算機(jī)操作系統(tǒng)面試三、處理機(jī)調(diào)度與死鎖
處理機(jī)調(diào)度的層次:
1:高級(jí)調(diào)度
主要用于多道批處理系統(tǒng)中,又稱長(zhǎng)作業(yè)調(diào)度,調(diào)度隊(duì)像是作業(yè),根據(jù)某種算法決定將后備隊(duì)列中的哪幾個(gè)作業(yè)調(diào)入內(nèi)存。
2:低級(jí)調(diào)度
操作系統(tǒng)中最基本的一種調(diào)度方式(頻率最高),在多道批處理、分時(shí)和時(shí)實(shí)三中類型的OS中都存在,又稱為短作業(yè)調(diào)度。
3:中級(jí)調(diào)度
又稱為內(nèi)存調(diào)度,目的是為了提高內(nèi)存的利用率和系統(tǒng)的吞吐率,
作業(yè)調(diào)度的算法:
1:先來(lái)先服務(wù)算法(FSFS)
最簡(jiǎn)單的調(diào)度算法,既可用于作業(yè)調(diào)度也可用于進(jìn)程調(diào)度,系統(tǒng)按照作業(yè)到達(dá)的先后順序進(jìn)行調(diào)度,或者是優(yōu)先考慮在系統(tǒng)中等待時(shí)間最長(zhǎng)的作業(yè)
2:短作業(yè)優(yōu)先調(diào)度算法(SJF)
實(shí)際情況短作業(yè)占有比例很大,為了使他們比長(zhǎng)作業(yè)優(yōu)先執(zhí)行,而產(chǎn)生了短作業(yè)優(yōu)先的調(diào)度算法 ,作業(yè)越短優(yōu)先級(jí)越高,
缺點(diǎn):是必須知道作業(yè)的運(yùn)行時(shí)間,對(duì)長(zhǎng)作業(yè)不利,人機(jī)無(wú)法實(shí)現(xiàn)交互,未完全考慮作業(yè)的緊迫程度
3:優(yōu)先級(jí)調(diào)度算法(PSA)
優(yōu)先級(jí):對(duì)于先來(lái)先服務(wù)算法,作業(yè)的等待時(shí)間就是他的優(yōu)先級(jí),等待時(shí)間越長(zhǎng)優(yōu)先級(jí)越高,對(duì)于短作業(yè)優(yōu)先級(jí)作業(yè)的長(zhǎng)短就是他的優(yōu)先級(jí)。在優(yōu)先級(jí)算法中,基于作業(yè)的緊迫程度。
4:高響應(yīng)比優(yōu)先調(diào)度算法(HRRN)
在FSFS中只是考慮作業(yè)的等待時(shí)間而忽略作業(yè)的運(yùn)行時(shí)間,SJF算法正好相反,高響應(yīng)比算法既考慮作業(yè)的等待時(shí)間有考慮作業(yè)的運(yùn)行時(shí)間,
優(yōu)先權(quán) = (等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間
由于等待時(shí)間與服務(wù)時(shí)間之和就是作業(yè)的相應(yīng)時(shí)間,顧優(yōu)先級(jí)相當(dāng)于響應(yīng)比:Rp
Rp = (等待時(shí)間+要求服務(wù)時(shí)間)/要求服務(wù)時(shí)間 = 響應(yīng)時(shí)間/要求服務(wù)時(shí)間
什么是死鎖,死鎖產(chǎn)生的4個(gè)條件
死鎖定義:
在兩個(gè)或多個(gè)并發(fā)進(jìn)程中,如果每個(gè)進(jìn)程持有某種資源而又都等待別的進(jìn)程釋放它或它們現(xiàn)在保持著的資源,在未改變這種狀態(tài)之前都不能向前推進(jìn),稱這一組進(jìn)程產(chǎn)生了死鎖。通俗地講,就是兩個(gè)或多個(gè)進(jìn)程被無(wú)限期地阻塞、相互等待的一種狀態(tài)。
產(chǎn)生條件:
1:互斥條件 -- 一個(gè)資源一次只能被一個(gè)進(jìn)程使用
2:請(qǐng)求保持條件 -- 一個(gè)進(jìn)程因請(qǐng)求資源而阻塞時(shí),對(duì)已經(jīng)獲得資源保持不放
3:不可搶占條件 -- 進(jìn)程已獲得的資源在未使用完之前不能強(qiáng)行剝奪
4:循環(huán)等待條件 -- 若干進(jìn)程之間形成一種頭尾相接的循環(huán)等待資源的關(guān)系
預(yù)防避免死鎖的方法
1:破壞“請(qǐng)求和保持”條件:規(guī)定所有進(jìn)程在開(kāi)始運(yùn)行之前,都必須一次性的申請(qǐng)其在整個(gè)運(yùn)行過(guò)程所需要的全部資源。
優(yōu)點(diǎn):簡(jiǎn)單,安全。 缺點(diǎn):資源嚴(yán)重浪費(fèi),惡化了系統(tǒng)的利用率;
2:破壞“不剝奪”條件:進(jìn)程逐個(gè)的提出資源請(qǐng)求,當(dāng)一個(gè)已經(jīng)保持了某些資源的進(jìn)程,再提出新的資源請(qǐng)求而不能立即得到滿足時(shí),必須釋放它已經(jīng)保持了的所有資源,待以后需要時(shí)再重新申請(qǐng)。
缺點(diǎn):實(shí)現(xiàn)復(fù)雜,代價(jià)大,反復(fù)地申請(qǐng)和釋放資源,而使進(jìn)程的執(zhí)行無(wú)限的推遲、延長(zhǎng)了進(jìn)程的周轉(zhuǎn)時(shí)間增加系統(tǒng)開(kāi)銷、降低系統(tǒng)吞吐量。
3:破壞“環(huán)路等待”條件:將所有的資源按類型進(jìn)行線性排隊(duì),并賦予不同的序號(hào)。所有進(jìn)程請(qǐng)求資源必須按照資源遞增的次序提出,防止出現(xiàn)環(huán)路。
缺點(diǎn):1、序號(hào)必須相對(duì)穩(wěn)定,限制了新設(shè)備類型的增加2、作業(yè)(進(jìn)程)使用資源順序和系統(tǒng)規(guī)定的順序不同而造成資源的浪費(fèi)3、限制了用戶編程
注意:由于互斥條件是非共享設(shè)備所必需的,不能改變