操作系統之面試常考
一、操作系統引論
操作系統目標
1:方面性,2:有效性,3:可擴展性,4:開放性
操作系統基本特性
1:並發、2:共享、3:虛擬、4:異步
描述多道批處理、分時、實時操作系統的特點各是什麽?
批處理操作系統:多道性、無序性、調度性,系統利用率高、吞吐量大、平均周轉時間長、但無交互能力。
分時操作系統:有多路性、獨立性、及時性和交互性。 有較好的人機交互的特性,並且可以實現共享主機
實時系統:有多路性、獨立性、及時性、交互性和可靠性。實際上是指操作系統工作時,其各種資源可以根據需要隨時進行動態分配。由於各種資源可以進行動態分配,因此,其處理事務的能力較強、速度較快。
總結:從可靠性:實時系統更強,從交互性:分時系統更強
二、進程的描述與控制
程序並發執行的特征
1:間斷性:程序在並發執行的時候,因為是共享資源,以及完成同一項任務而相互合作,致使在這些並發執行的程序之間形成了相互制約的關系,導致程序執行呈現:執行--暫停--執行
2:失去封閉性:當系統中有多個並發執行的程序時,各個資源是他們所共享的,這些資源的狀態也由這些程序所改變,所以摸一個程序的運行環境會受到其他程序的影響。
3:不可再生性
進程的特征與三種基本狀態
1、特征:
1:動態性,2:並發性,3:獨立性,4:異步性。 2、狀態: 1:就緒狀態,2:執行狀態,3:阻塞狀態 3、三種基本狀態轉換:線程與進程的區別聯系
1、定義:
進程:進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,是系統進行資源分配和調度的一個獨立單位。(包括程序段,相關數據段,和進程控制塊PCB)
線程:線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源.
2、關系:一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以並發執行.相對進程而言,線程是一個更加接近於執行體的概念,它可以與同進程中的其他線程共享數據,但擁有自己的棧空間,擁有獨立的執行序列。
3、區別:主要差別在於它們是不同的操作系統資源管理方式。進程有獨立的地址空間,一個進程崩潰後,在保護模式下不會對其它進程產生影響,而線程只是一個進程中的不同執行路徑。線程有自己的堆棧和局部變量,但線程之間沒有單獨的地址空間,一個線程死掉就等於整個進程死掉,所以多進程的程序要比多線程的程序健壯,但在進程切換時,耗費資源較大,效率要差一些。但對於一些要求同時進行並且又要共享某些變量的並發操作,只能用線程,不能用進程。
4.優缺點:線程和進程在使用上各有優缺點:線程執行開銷小,但不利於資源的管理和保護;而進程正相反。同時,線程適合於在SMP機器上運行,而進程則可以跨機器遷移。
進程間的通信是如何實現的?
早期的屬於低級通信:原因:1:效率低,生產者每次只能向緩沖池投放一個信息 2:通信對用戶不透明,隱藏了通信的具體細節。現在發展為高級通信:用戶可以利用操作系統所提供的一組通信命令傳送大量數據。操作系統隱藏了進程通信的實現細節。或者說,通信過程對用戶是透明的。
高級通信機制:
1:共享存儲器系統(存儲器中劃分的共享存儲區)
實際操作中對應的是“剪貼板”(剪貼板實際上是系統維護管理的一塊內存區域)的通信方式。
2:消息傳遞系統(進程間的數據交換以消息(message)為單位)
當今最流行的微內核操作系統中,微內核與服務器之間的通信,都采用 了消息傳遞機制
3:管道通信系統(連接讀寫進程實現他們之間通信的共享文件(pipe文件,類似先進先出的隊列,由一個進程寫,另一進程讀))
管道分為匿名管道、命名管道。匿名管道是未命名的、單向管道,通過父進程和一個子進程之間傳輸數據。匿名管道只能實現本地機器上兩個進程之間的通信,不能實現跨網絡的通信。命名管道不僅可以在本機上實現兩個進程間的通信,還可以跨網絡實現進程間的通信。
4:客戶機-服務器系統
包括:套接字(socket),遠程過程調用和遠程方法調用
什麽是臨界區?如何解決沖突?
每個進程中訪問臨界資源的那段程序稱為臨界區,每次只準許一個進程進入臨界區,進入後不允許其他進程進入。
1:如果有若幹進程要求進入空閑的臨界區,一次僅允許一個進程進入;
2:任何時候,處於臨界區內的進程不可多於一個。如已有進程進入自己的臨界區,則其它所有試圖進入臨界區的進程必須等待;
3:進入臨界區的進程要在有限時間內退出,以便其它進程能及時進入自己的臨界區;
4:如果進程不能進入自己的臨界區,則應讓出CPU,避免進程出現“忙等”現象。
進程同步原則
進程同步的主要任務:是對多個相關進程在執行次序上進行協調,以使並發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。同步機制遵循的原則:
1:空閑讓進;
2:忙則等待(保證對臨界區的互斥訪問);
3:有限等待(有限代表有限的時間,避免死等);
4:讓權等待,(當進程不能進入自己的臨界區時,應該釋放處理機,以免陷入忙等狀態)。
進程同步
由於進程同步產生了一系列經典的同步問題“生產者-消費者”問題,“哲學家進餐”問題,“讀者-寫者”問題。
程序和進程的區別
程序:計算機指令的集合,它以文件的形式存儲在磁盤上。程序是靜態實體(passive Entity),在多道程序系統中,它是不能獨立運行的,更不能與其他程序並發執行。
使用系統資源情況:不使用(程序不能申請系統資源,不能被系統調度,也不能作為獨立運行的單位,它不占用系統的運行資源)。
進程:進程是進程實體(包括:程序段、相關的數據段、進程控制塊PCB)的運行過程,是一個程序在其自身的地址空間中的一次執行活動。是系統進行資源分配和調度的一個獨立單位。
使用系統資源情況:使用(進程是資源申請、調度和獨立運行的單位,因此,它使用系統中的運行資源)
三、處理機調度與死鎖
處理機調度的層次:
1:高級調度
主要用於多道批處理系統中,又稱長作業調度,調度隊像是作業,根據某種算法決定將後備隊列中的哪幾個作業調入內存。
2:低級調度
操作系統中最基本的一種調度方式(頻率最高),在多道批處理、分時和時實三中類型的OS中都存在,又稱為短作業調度。
3:中級調度
又稱為內存調度,目的是為了提高內存的利用率和系統的吞吐率,
作業調度的算法:
1:先來先服務算法(FSFS) 最簡單的調度算法,既可用於作業調度也可用於進程調度,系統按照作業到達的先後順序進行調度,或者是優先考慮在系統中等待時間最長的作業 2:短作業優先調度算法(SJF) 實際情況短作業占有比例很大,為了使他們比長作業優先執行,而產生了短作業優先的調度算法 ,作業越短優先級越高, 缺點:是必須知道作業的運行時間,對長作業不利,人機無法實現交互,未完全考慮作業的緊迫程度3:優先級調度算法(PSA)
優先級:對於先來先服務算法,作業的等待時間就是他的優先級,等待時間越長優先級越高,對於短作業優先級作業的長短就是他的優先級。在優先級算法中,基於作業的緊迫程度。
4:高響應比優先調度算法(HRRN)
在FSFS中只是考慮作業的等待時間而忽略作業的運行時間,SJF算法正好相反,高響應比算法既考慮作業的等待時間有考慮作業的運行時間,
優先權 = (等待時間+要求服務時間)/要求服務時間
由於等待時間與服務時間之和就是作業的相應時間,顧優先級相當於響應比:Rp
Rp = (等待時間+要求服務時間)/要求服務時間 = 響應時間/要求服務時間
什麽是死鎖,死鎖產生的4個條件
死鎖定義:
在兩個或多個並發進程中,如果每個進程持有某種資源而又都等待別的進程釋放它或它們現在保持著的資源,在未改變這種狀態之前都不能向前推進,稱這一組進程產生了死鎖。通俗地講,就是兩個或多個進程被無限期地阻塞、相互等待的一種狀態。
產生條件:
1:互斥條件 -- 一個資源一次只能被一個進程使用 2:請求保持條件 -- 一個進程因請求資源而阻塞時,對已經獲得資源保持不放 3:不可搶占條件 -- 進程已獲得的資源在未使用完之前不能強行剝奪 4:循環等待條件 -- 若幹進程之間形成一種頭尾相接的循環等待資源的關系 預防避免死鎖的方法 1:破壞“請求和保持”條件:規定所有進程在開始運行之前,都必須一次性的申請其在整個運行過程所需要的全部資源。優點:簡單,安全。 缺點:資源嚴重浪費,惡化了系統的利用率;
2:破壞“不剝奪”條件:進程逐個的提出資源請求,當一個已經保持了某些資源的進程,再提出新的資源請求而不能立即得到滿足時,必須釋放它已經保持了的所有資源,待以後需要時再重新申請。缺點:實現復雜,代價大,反復地申請和釋放資源,而使進程的執行無限的推遲、延長了進程的周轉時間增加系統開銷、降低系統吞吐量。
3:破壞“環路等待”條件:將所有的資源按類型進行線性排隊,並賦予不同的序號。所有進程請求資源必須按照資源遞增的次序提出,防止出現環路。缺點:1、序號必須相對穩定,限制了新設備類型的增加2、作業(進程)使用資源順序和系統規定的順序不同而造成資源的浪費3、限制了用戶編程
註意:由於互斥條件是非共享設備所必需的,不能改變
四、存儲器管理
連續分配存儲管理方式
1:單一連續分配 2:固定分區分配 3:動態分區分配 其中動態分區分配將涉及到分區分配中實際需要的數據結構,分區分配算法和分區的分配與回收操作 內存分配的流程: 動態分區分配算法 1:首次適應算法(FF): 要求地址空間遞增的順序鏈接,再分配內存時從鏈首開始查找,知道有一個滿足的空間為止。該算法優先利用內存中低址空間,保留了高址空間,缺點是低址部分不斷被劃分,留下許多內存碎片, 2:循環首次適應算法(NF): 為了防止留下碎片,減少低址空間開銷,NF算法每次從上一次分配的地方繼續分配,該算法需要一個起始查詢的指針用於指示下一次查詢的空間地址。缺點是:缺乏大的空間分區 3:最加適應算法(BF): 每次作業分配時,總是把滿足要求,又是最小的空間分配給作業,該算法把空間分區按其容量大小從小到大排列成空閑區鏈,缺點是:留下許多內存碎片, 4:最壞適應算法(WF): 總是挑選最大的空閑區域分配給作業使用,優點是不至於使空閑區間太小,產生碎片的可能性小,缺點是:缺乏大的空間分區分頁存儲管理方式
分頁存儲的基本方法: 1:頁面和物理快 頁面:分頁存儲管理將進程的邏輯地址空間分成若幹頁,並從0開始編號,把內存的物理地址分成若幹塊(物理快) 2:地址結構: 頁號P ----- 偏移量W(包括頁號P和偏移量W),對於特定的機器其地址結構一定,給定邏輯地址A,頁面的大小為 L,則頁號P和頁內地址D有一下關系:P = int[A/L]; d=[A] MOD L 例如:頁面大小1kb A=2170B 得:p=2 d=122 3:頁表:記錄相應頁在內存中對應的物理塊號 4:地址轉換機構:將用戶邏輯空間的地址,轉變為空間中的物理地址分段存儲管理方式
分段是管理不會產生內存碎片(短號 , 段內地址) 分段管理方式的引入原因: 1:一般程序分為若幹段,如:主程序段、數據段、棧段等,每個段大多是一個相對獨立的單位 2:實現滿足信息共享、信息保護、動態鏈接、以及信息動態增長等需要 分頁和分段的區別: 共同點:兩者都采用離散分配方式,且都地址映射機構來實現地址的轉換 不同點: 1:頁是信息的物理單位采用分頁存儲管理方式是為了實現離散分配方法。提高內存的利用率,采用分段目的主要在於能更好的滿足用戶的需求 2:頁的大小固定且有系統決定,在采用分頁存儲管理方式中直接由硬件實現。而段的大小不固定,決定於用戶所編寫的程序 3:分頁的地址空間是一維的,分頁完全是系統完全是行為,分段系統中是二維的。段頁式存儲管理方式
基本原理是分段和分頁相結合,其地址結構由:段號、段內頁號、頁內地址三部分組成。在段頁式系統中獲得一條指令需要三次訪問內存,第一次訪問內存中的段表,第二次訪問內存中的頁表,第三次訪問內存中的數據。
Windows下的內存是如何管理的?
Windows提供了3種方法來進行內存管理:
1:虛擬內存,最適合用來管理大型對象或者結構數組;
2:內存映射文件,最適合用來管理大型數據流(通常來自文件)以及在單個計算機上運行多個進程之間共享數據;
3:內存堆棧,最適合用來管理大量的小對象。
Windows操縱內存可以分兩個層面:物理內存和虛擬內存。
其中物理內存由系統管理,不允許應用程序直接訪問
五、虛擬存儲器
操作系統的內容分為幾塊?什麽叫做虛擬內存?他和主存的關系如何?內存管理屬於操作系統的內容嗎?
操作系統的主要組成部分:進程和線程的管理,存儲管理,設備管理,文件管理。虛擬內存是一些系統頁文件,存放在磁盤上,每個系統頁文件大小為4K,物 理內存也被分頁,每個頁大小也為4K,這樣虛擬頁文件和物理內存頁就可以對應,實際上虛擬內存就是用於物理內存的臨時存放的磁盤空間。頁文件就是內存頁, 物理內存中每頁叫物理頁,磁盤上的頁文件叫虛擬頁,物理頁+虛擬頁就是系統所有使用的頁文件的總和。請求分頁存儲管理方式
請求頁表機制:作用是吧用戶的邏輯地址映射為內存空間中的物理地址。 結構頁號 | 物理塊號 | 狀態位P | 訪問字段A | 修改位M | 外存地址 |
虛擬存儲器頁面置換算法
六、輸入輸出系統
SpooLing系統的構成
1:輸入井和輸出井 2:輸入緩沖區和輸出緩沖區 3:輸入進程和輸出進程 4:井管理程序
緩沖區 1:單緩沖區,處理時間是:max(c,T)+M 2:雙緩沖區,處理時間是:max(C+T);
七、文件管理
文件邏輯結構分類
按文件的有無結構分:
1:有結構文件(記錄式文件) 2:無結構文件(流式文件)
按文件組織方式分:
1:順序文件,2:索引文件,3:索引順序文件
八、磁盤存儲器管理
外存的組織方式 1:連續組織方式, 又稱為連續分配方式,要求每一個文件分配一個相鄰的盤快 優點:順序訪問容易:訪問連續文件非常容易,訪問速度非常快 缺點:要求為文件分配連續的空間,必須事先知道文件的長度,不能靈活的刪除插入記錄動態增長的文件難分配空間2:鏈接組織方式(分為隱式鏈接和顯示鏈接) 采用鏈接組織的方式可以為文件分配多個不連續的盤快 優點:1:消除磁盤的外部碎片,提高內存的利用率 。2:對插入刪除修改非常容易。3:可以適應文件的動態增長 3:索引組織方式 分為單索引和多索引組織方式。 文件存儲的組織方式 1:空閑表法,2:空閑鏈表法(空閑盤快連,空閑盤區鏈),3:位示圖法, 4:成組鏈接法(重要) 轉載:http://www.cnblogs.com/zyf-zhaoyafei/p/4714598.html
操作系統之面試常考