東秦宣傳片
1. 渭南東秦百姓怎麼投訴
我是渭南大荔的王女士。女兒在大荔城郊中學上高3 ,以前學校可以出來吃早餐 但是專現在孩子每天都屬只能在學校裡面吃那些方便麵啊· 麵包撒的,看這女人這樣子我擔心身體吃不削高三本來就壓力很大,學校竟然把學生吃早餐的時間都給剝奪了。聽說是學校的那個老師還是撒和商店的老闆是親戚 ·當然也是學校的高層,一般的老師么那麼大的實力。每天早上學生在學校那個不到30平方面的小商店排隊排成2 3百米就等那一包包5毛錢的方便麵··麵包 還有就是學生所謂的辣子片··海帶絲 夾饃。想問問這樣子下去孩子能夠堅強的成長嗎。希望電視節目能夠重視吃事情讓孩子順利的完成自己的夢想。
2. 東北大學秦皇島分校怎麼樣
以前校內上有分享,在東秦佔座之瘋狂。學生們的學習動力十足。
每年都有些東秦的回學子製作散場答的宣傳片。
同學如果你真心對我們學校感興趣,去優酷網輸入東北大學秦皇島分校,哪裡有N多個視頻,你可以好好看看,詳細了解。
我本著自己的良心告訴你:東秦絕對不是虛有其表,她是貨真價實的,我們的母校這些年一直都在發展,勢頭很猛。在全國各類大賽中都有獲獎。
東秦為社會和國家培養了眾多棟梁之才,今年我同學有簽中興、華為、神州數碼、oracle等。。考研、出國都有很多。
東秦會給你一個發展提高自己的舞台,在東秦你會學到很多東西。我是2011屆畢業生,今年考入人民大學讀研究生,我說的每句話都是實實在在的。
東秦是值得信賴的學校,東秦是校風淳樸、學風濃郁的學校,我們是有實力的。。。
3. 東秦的計算機操作系統考試會考什麼
第一章
1.設計現代OS的主要目標是什麼?
答:(1)有效性 (2)方便性 (3)可擴充性 (4)開放性
2.OS的作用可表現在哪幾個方面?
答:(1)OS作為用戶與計算機硬體系統之間的介面
(2)OS作為計算機系統資源的管理者
(3)OS實現了對計算機資源的抽象
3.為什麼說OS實現了對計算機資源的抽象?
答:OS首先在裸機上覆蓋一層I/O設備管理軟體,實現了對計算機硬體操作的第一層次抽
象;在第一層軟體上再覆蓋文件管理軟體,實現了對硬體資源操作的第二層次抽象。OS 通
過在計算機硬體上安裝多層系統軟體,增強了系統功能,隱藏了對硬體操作的細節,由它們
共同實現了對計算機資源的抽象。
4.試說明推動多道批處理系統形成和發展的主要動力是什麼?
答:主要動力來源於四個方面的社會需求與技術發展:
(1)不斷提高計算機資源的利用率;
(2)方便用戶;
(3)器件的不斷更新換代;
(4)計算機體系結構的不斷發展。
5.何謂離線I/O和聯機I/O?
答:離線I/O 是指事先將裝有用戶程序和數據的紙帶或卡片裝入紙帶輸入機或卡片機,在
外圍機的控制下,把紙帶或卡片上的數據或程序輸入到磁帶上。該方式下的輸入輸出由外圍
機控制完成,是在脫離主機的情況下進行的。
而聯機I/O方式是指程序和數據的輸入輸出都是在主機的直接控制下進行的。
6.試說明推動分時系統形成和發展的主要動力是什麼?
答:推動分時系統形成和發展的主要動力是更好地滿足用戶的需要。主要表現在:CPU 的
分時使用縮短了作業的平均周轉時間;人機交互能力使用戶能直接控制自己的作業;主機的
共享使多用戶能同時使用同一台計算機,獨立地處理自己的作業。
7.實現分時系統的關鍵問題是什麼?應如何解決?
答:關鍵問題是當用戶在自己的終端上鍵入命令時,系統應能及時接收並及時處理該命令,
在用戶能接受的時延內將結果返回給用戶。
解決方法:針對及時接收問題,可以在系統中設置多路卡,使主機能同時接收用戶從各個終
端上輸入的數據;為每個終端配置緩沖區,暫存用戶鍵入的命令或數據。針對及時處理問題,
應使所有的用戶作業都直接進入內存,並且為每個作業分配一個時間片,允許作業只在自己
的時間片內運行,這樣在不長的時間內,能使每個作業都運行一次。
8.為什麼要引入實時OS?
答:實時操作系統是指系統能及時響應外部事件的請求,在規定的時間內完成對該事件的處
理,並控制所有實時任務協調一致地運行。引入實時OS 是為了滿足應用的需求,更好地滿
足實時控制領域和實時信息處理領域的需要。
9.什麼是硬實時任務和軟實時任務?試舉例說明。
答:硬實時任務是指系統必須滿足任務對截止時間的要求,否則可能出現難以預測的結果。
舉例來說,運載火箭的控制等。
軟實時任務是指它的截止時間並不嚴格,偶爾錯過了任務的截止時間,對系統產生的影
響不大。舉例:網頁內容的更新、火車售票系統。
10.在8位微機和16位微機中,占據了統治地位的是什麼操作系統?
答:單用戶單任務操作系統,其中最具代表性的是CP/M和MS-DOS.
11.試列出Windows OS 中五個主要版本,並說明它們分別較之前一個版本有何改進。
答:
(1)Microsoft Windows 1.0是微軟公司在個人電腦上開發圖形界面的首次嘗試。
(2)Windows 95是混合的16位/32位系統,第一個支持32位。帶來了更強大、更穩
定、更實用的桌面圖形用戶界面,結束了桌面操作系統間的競爭。
(3)Windows 98是微軟公司的混合16位/32位Windows 操作系統,改良了硬體標准
的支持,革新了內存管理,是多進程操作系統。
(4)Windows XP是基於Windows 2000的產品,擁有新用戶圖形界面月神Luna。簡
化了用戶安全特性,整合了防火牆。
(5)Windows Vista 包含了上百種新功能;特別是新版圖形用戶界面和Windows Aero
全新界面風格、加強的搜尋功能(Windows Indexing Service)、新媒體創作工具以及重
新設計的網路、音頻、輸出(列印)和顯示子系統。。
12.試從交互性、及時性以及可靠性方面,將分時系統與實時系統進行比較。
答:(1)及時性:實時信息處理系統對實時性的要求與分時系統類似,都是以人所能接受
的等待時間來確定;而實時控制系統的及時性,是以控制對象所要求的開始截止時間或完成
截止時間來確定的,一般為秒級到毫秒級,甚至有的要低於100微妙。
(2)交互性:實時信息處理系統具有交互性,但人與系統的交互僅限於訪問系統中某
些特定的專用服務程序。不像分時系統那樣能向終端用戶提供數據和資源共享等服務。
(3)可靠性:分時系統也要求系統可靠,但相比之下,實時系統則要求系統具有高度
的可靠性。因為任何差錯都可能帶來巨大的經濟損失,甚至是災難性後果,所以在實時系統
中,往往都採取了多級容錯措施保障系統的安全性及數據的安全性。
13.OS有哪幾大特徵?其最基本的特徵是什麼?
答:並發性、共享性、虛擬性和非同步性四個基本特徵;最基本的特徵是並發性。
14.處理機管理有哪些主要功能?它們的主要任務是什麼?
答:處理機管理的主要功能是:進程管理、進程同步、進程通信和處理機調度;
進程管理:為作業創建進程,撤銷已結束進程,控制進程在運行過程中的狀態轉換。
進程同步:為多個進程(含線程)的運行______________進行協調。
通信:用來實現在相互合作的進程之間的信息交換。
處理機調度:
(1)作業調度。從後備隊里按照一定的演算法,選出若干個作業,為他們分配運行所需
的資源(首選是分配內存)。
(2)進程調度:從進程的就緒隊列中,按照一定演算法選出一個進程,把處理機分配給
它,並設置運行現場,使進程投入執行。
15.內存管理有哪些主要功能?他們的主要任務是什麼?
北京石油化工學院信息工程學院計算機系3/48
《計算機操作系統》習題參考答案余有明與計07和計G09的同學們編著 3/48
答:內存管理的主要功能有:內存分配、內存保護、地址映射和內存擴充。
內存分配:為每道程序分配內存。
內存保護:確保每道用戶程序都只在自己的內存空間運行,彼此互不幹擾。
地址映射:將地址空間的邏輯地址轉換為內存空間與對應的物理地址。
內存擴充:用於實現請求調用功能,置換功能等。
16.設備管理有哪些主要功能?其主要任務是什麼?
答:主要功能有: 緩沖管理、設備分配和設備處理以及虛擬設備等。
主要任務: 完成用戶提出的I/O 請求,為用戶分配I/O 設備;提高CPU 和I/O 設
備的利用率;提高I/O速度;以及方便用戶使用I/O設備.
17.文件管理有哪些主要功能?其主要任務是什麼?
答:文件管理主要功能:文件存儲空間的管理、目錄管理、文件的讀/寫管理和保護。
文件管理的主要任務:管理用戶文件和系統文件,方便用戶使用,保證文件安全性。
18.是什麼原因使操作系統具有非同步性特徵?
答:操作系統的非同步性體現在三個方面:一是進程的非同步性,進程以人們不可預知的速度向
前推進,二是程序的不可再現性,即程序執行的結果有時是不確定的,三是程序執行時間的
不可預知性,即每個程序何時執行,執行順序以及完成時間是不確定的。
19.模塊介面法存在哪些問題?可通過什麼樣的途徑來解決?
答:(1)模塊介面法存在的問題:①在OS設計時,各模塊間的介面規定很難滿足在模塊完
成後對介面的實際需求。②在OS 設計階段,設計者必須做出一系列的決定,每一個決定必
須建立在上一個決定的基礎上。但模塊化結構設計的各模塊設計齊頭並進,無法尋找可靠的
順序,造成各種決定的無序性,使程序設計人員很難做到設計中的每一步決定都建立在可靠
的基礎上,因此模塊介面法被稱為「無序模塊法」。
(2)解決途徑:將模塊介面法的決定順序無序變有序,引入有序分層法。
20.在微內核OS中,為什麼要採用客戶/伺服器模式?
答:C/S 模式具有獨特的優點:⑴數據的分布處理和存儲。⑵便於集中管理。⑶靈活性和
可擴充性。⑷易於改編應用軟體。
21.試描述什麼是微內核OS。
答:1)足夠小的內核 2)基於客戶/伺服器模式
3)應用機制與策略分離原理 4)採用面向對象技術。
22.在基於微內核結構的OS中,應用了哪些新技術?
答:在基於微內核結構的OS 中,採用面向對象的程序設汁技術。
23.何謂微內核技術?在微內核中通常提供了哪些功能?
答:把操作系統中更多的成分和功能放到更高的層次(即用戶模式)中去運行,而留下一個
盡量小的內核,用它來完成操作系統最基本的核心功能,稱這種技術為微內核技術。在微內
核中通常提供了進程(線程)管理、低級存儲器管理、中斷和陷入處理等功能。
24.微內核操作系統具有哪些優點?它為何能有這些優點?
答:1)提高了系統的可擴展性
2)增強了系統的可靠性
3)可移植性
4)提供了對分布式系統的支持
5)融入了面向對象技術
4. 東北大學秦皇島分校怎麼樣
以前校內上有分享復,在東秦佔座之制瘋狂。學生們的學習動力十足。
每年都有些東秦的學子製作散場的宣傳片。
同學如果你真心對我們學校感興趣,去優酷網輸入東北大學秦皇島分校,哪裡有N多個視頻,你可以好好看看,詳細了解。
我本著自己的良心告訴你:東秦絕對不是虛有其表,她是貨真價實的,我們的母校這些年一直都在發展,勢頭很猛。在全國各類大賽中都有獲獎。
東秦為社會和國家培養了眾多棟梁之才,今年我同學有簽中興、華為、神州數碼、oracle等。。考研、出國都有很多。
東秦會給你一個發展提高自己的舞台,在東秦你會學到很多東西。我是2011屆畢業生,今年考入人民大學讀研究生,我說的每句話都是實實在在的。
東秦是值得信賴的學校,東秦是校風淳樸、學風濃郁的學校,我們是有實力的。。。
5. 東秦的操作系統答案第二章
第二章
1. 什麼是前趨圖?為什麼要引入前趨圖?
答:前趨圖(Precedence Graph)是一個有向無循環圖,記為DAG(Directed Acyclic
Graph),用於描述進程之間執行的前後關系。
2. 畫出下面四條語句的前趨圖:
S1=a:=x+y; S2=b:=z+1; S3=c:=a – b; S4=w:=c+1;
答:其前趨圖為:
3. 什麼程序並發執行會產生間斷性特徵?
答:程序在並發執行時,由於它們共享系統資源,為完成同一項任務需要相互合作,致使這
些並發執行的進程之間,形成了相互制約關系,從而使得進程在執行期間出現間斷性。
4.程序並發執行時為什麼會失去封閉性和可再現性?
答:程序並發執行時,多個程序共享系統中的各種資源,因而這些資源的狀態由多個程序改變,致使程序運行失去了封閉性,也會導致其失去可再現性。
5.在操作系統中為什麼要引入進程概念?它會產生什麼樣的影響?
答:為了使程序在多道程序環境下能並發執行,並對並發執行的程序加以控制和描述,在操作系統中引入了進程概念。
影響: 使程序的並發執行得以實行。
6.試從動態性,並發性和獨立性上比較進程和程序?
答:(1)動態性是進程最基本的特性,表現為由創建而產生,由調度而執行,因得不到資源
而暫停執行,由撤銷而消亡。進程有一定的生命期,而程序只是一組有序的指令集合,是靜
態實體。
(2)並發性是進程的重要特徵,同時也是OS 的重要特徵。引入進程的目的正是為了使
其程序能和其它進程的程序並發執行,而程序是不能並發執行的。
(3)獨立性是指進程實體是一個能獨立運行的基本單位,也是系統中獨立獲得資源和獨
立調度的基本單位。對於未建立任何進程的程序,不能作為獨立單位參加運行。
7.試說明PCB 的作用,為什麼說PCB 是進程存在的惟一標志?
答:PCB 是進程實體的一部分,是操作系統中最重要的記錄型數據結構。作用是使一個在
多道程序環境下不能獨立運行的程序,成為一個能獨立運行的基本單位,成為能與其它進程
並發執行的進程。OS是根據PCB對並發執行的進程進行控制和管理的。
8.試說明進程在三個基本狀態之間轉換的典型原因。
答: (1)就緒狀態→執行狀態:進程分配到CPU資源
(2)執行狀態→就緒狀態:時間片用完
(3)執行狀態→阻塞狀態:I/O請求
(4)阻塞狀態→就緒狀態:I/O完成
9.為什麼要引入掛起狀態?該狀態有哪些性質?
答:引入掛起狀態處於五種不同的需要: 終端用戶需要,父進程需要,操作系統需要,對換
北京石油化工學院信息工程學院計算機系5/48
《計算機操作系統》習題參考答案余有明與計07和計G09的同學們編著 5/48
需要和負荷調節需要。處於掛起狀態的進程不能接收處理機調度。
10.在進行進程切換時,所要保存的處理機狀態信息有哪些?
答:進行進程切換時,所要保存的處理機狀態信息有:
(1)進程當前暫存信息
(2)下一指令地址信息
(3)進程狀態信息
(4)過程和系統調用參數及調用地址信息。
11.試說明引起進程創建的主要事件。
答:引起進程創建的主要事件有:用戶登錄、作業調度、提供服務、應用請求。
12.試說明引起進程被撤銷的主要事件。
答:引起進程被撤銷的主要事件有:正常結束、異常結束(越界錯誤、保護錯、非法指令、
特權指令錯、運行超時、等待超時、算術運算錯、I/O 故障)、外界干預(操作員或操作系
統干預、父進程請求、父進程終止)。
13.在創建一個進程時所要完成的主要工作是什麼?
答:
(1)OS 發現請求創建新進程事件後,調用進程創建原語Creat();
(2)申請空白PCB;
(3)為新進程分配資源;
(4)初始化進程式控制制塊;
(5)將新進程插入就緒隊列.
14.在撤銷一個進程時所要完成的主要工作是什麼?
答:
(1)根據被終止進程標識符,從PCB 集中檢索出進程PCB,讀出該進程狀態。
(2)若被終止進程處於執行狀態,立即終止該進程的執行,置調度標志真,指示該進程被
終止後重新調度。
(3)若該進程還有子進程,應將所有子孫進程終止,以防它們成為不可控進程。
(4)將被終止進程擁有的全部資源,歸還給父進程,或歸還給系統。
(5)將被終止進程PCB 從所在隊列或列表中移出,等待其它程序搜集信息。
15.試說明引起進程阻塞或被喚醒的主要事件是什麼?
答:a. 請求系統服務;b. 啟動某種操作;c. 新數據尚未到達;d. 無新工作可做.
16.進程在運行時存在哪兩種形式的制約?並舉例說明之。
答:
(1)間接相互制約關系。舉例:有兩進程A 和B,如果A 提出列印請求,系統已把唯一的
一台列印機分配給了進程B,則進程A 只能阻塞;一旦B 釋放列印機,A 才由阻塞改為就
緒。
(2)直接相互制約關系。舉例:有輸入進程A 通過單緩沖向進程B 提供數據。當緩沖空時,
計算進程因不能獲得所需數據而阻塞,當進程A 把數據輸入緩沖區後,便喚醒進程B;反
之,當緩沖區已滿時,進程A 因沒有緩沖區放數據而阻塞,進程B 將緩沖區數據取走後便
喚醒A。
17.為什麼進程在進入臨界區之前應先執行「進入區」代碼?而在退出前又要執行「退出
區」代碼?
答:為了實現多個進程對臨界資源的互斥訪問,必須在臨界區前面增加一段用於檢查欲訪問
的臨界資源是否正被訪問的代碼,如果未被訪問,該進程便可進入臨界區對資源進行訪問,
並設置正被訪問標志,如果正被訪問,則本進程不能進入臨界區,實現這一功能的代碼為"
北京石油化工學院信息工程學院計算機系6/48
《計算機操作系統》習題參考答案余有明與計07和計G09的同學們編著 6/48
進入區"代碼;
在退出臨界區後,必須執行"退出區"代碼,用於恢復未被訪問標志,使其它進程能再訪問此
臨界資源。
18. 同步機構應遵循哪些基本准則?為什麼?
答:同步機構應遵循的基本准則是:空閑讓進、忙則等待、有限等待、讓權等待
原因:為實現進程互斥進入自己的臨界區。
19. 試從物理概念上說明記錄型信號量wait 和signal。
答:wait(S):當S.value>0 時,表示目前系統中這類資源還有可用的。執行一次wait 操
作,意味著進程請求一個單位的該類資源,使系統中可供分配的該類資源減少一個,因此描
述為S.value:=S.value-1;當S.value<0時,表示該類資源已分配完畢,進程應調用block
原語自我阻塞,放棄處理機,並插入到信號量鏈表S.L中。
signal(S):執行一次signal操作,意味著釋放一個單位的可用資源,使系統中可供分配
的該類資源數增加一個,故執行S.value:=S.value+1 操作。若加1 後S.value≤0,則表
示在該信號量鏈表中,仍有等待該資源的進程被阻塞,因此應調用wakeup 原語,將S.L
鏈表中的第一個等待進程喚醒。
20.你認為整型信號量機制是否完全遵循了同步機構的四條准則?
答:整型信號量機制不完全遵循同步機制的四條准則,它不滿足「讓權等待」准則。
21.如何利用信號量機制來實現多個進程對臨界資源的互斥訪問?並舉例說明之。
答:為使多個進程互斥訪問某臨界資源,只需為該資源設置一互斥信號量mutex,並設其
初值為1,然後將各進程訪問該資源的臨界區CS置於wait(mutex)和signal(mutex)操作
之間即可。這樣,每個欲訪問該臨界資源的進程在進入臨界區之前,都要先對mutex 執行
wait 操作,若該資源此刻未被訪問,本次wait 操作必然成功,進程便可進入自己的臨界區,
這時若再有其他進程也欲進入自己的臨界區,此時由於對mutex 執行wait操作定會失敗,
因而該進程阻塞,從而保證了該臨界資源能被互斥訪問。當訪問臨界資源的進程退出臨界區
後,應對mutex執行signal 操作,釋放該臨界資源。利用信號量實現進程互斥的進程描述
如下:
Var mutex: semaphore:=1;
begin
parbegin
process 1: begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder seetion
until false;
end
process 2: begin
repeat
wait(mutex);
critical section
signal(mutex);
remainder section
until false;
end
parend
22.試寫出相應的程序來描述圖2-17所示的前驅圖。
答:(a)Var a, b, c, d, e, f, g, h; semaphore:= 0, 0, 0, 0, 0, 0, 0, 0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); end;
begin wait(c); S4; signal(f); end;
begin wait(d); S5; signal(g); end;
begin wait(e); S6; signal(h); end;
begin wait(f); wait(g); wait(h); S7; end;
parend
end
(b)Var a, b, c, d, e, f, g, h,i,j; semaphore:= 0, 0, 0, 0, 0, 0, 0,0,0, 0;
begin
parbegin
begin S1; signal(a); signal(b); end;
begin wait(a); S2; signal(c); signal(d); end;
begin wait(b); S3; signal(e); signal(f); end;
begin wait(c); S4; signal(g); end;
begin wait(d); S5; signal(h); end;
begin wait(e); S6; signal(i); end;
begin wait(f); S7; signal(j); end;
begin wait(g);wait(h); wait(i); wait(j); S8; end;
parend
end
23.在生產者消費者問題中,如果缺少了signal(full)或signal(empty),對執行結果有何影響?
答:
如果缺少signal(full),那麼表明從第一個生產者進程開始就沒有改變信號量full 值,
即使緩沖池產品已滿,但full 值還是0,這樣消費者進程執行wait(full)時認為緩沖池是空
而取不到產品,消費者進程一直處於等待狀態。
如果缺少signal(empty),在生產者進程向n個緩沖區投滿產品後消費者進程才開始從
中取產品,這時empty=0,full=n,那麼每當消費者進程取走一個產品empty 值並不改變,
直到緩沖池取空了,empty 值也是0,即使目前緩沖池有n 個空緩沖區,生產者進程要想
再往緩沖池中投放產品也會因為申請不到空緩沖區被阻塞。
24.在生產消費者問題中,如果將兩個wait 操作即wait(full)和wait(mutex)互換位置,
或者將signal(mutex)與signal(full)互換位置,結果如何?
答:將wait(full)和wait(mutex)互換位置後,可能引起死鎖。考慮系統中緩沖區全滿時,
若一生產者進程先執行了wait(mutex)操作並獲得成功,則當再執行wait(empty)操作時,
它將因失敗而進入阻塞狀態,它期待消費者進程執行signal(empty)來喚醒自己,在此之前,
它不可能執行signal(mutex)操作,從而使試圖通過執行wait(mutex)操作而進入自己的臨
界區的其他生產者和所有消費者進程全部進入阻塞狀態,這樣容易引起系統死鎖。
若signal(mutex)和signal(full)互換位置後只是影響進程對臨界資源的釋放次序,而
不會引起系統死鎖,因此可以互換位置。
25.我們在為某一臨界資源設置一把鎖W,當W=1時表示關鎖,當W=0時表示鎖已打開。
試寫出開鎖和關鎖的原語,並利用他們實現互斥。
答:整型信號量:lock(W): while W=1 do no-op
W:=1;
unlock(W): W:=0;
記錄型信號量:lock(W): W:=W+1;
if(W>1) then block(W, L)
unlock(W): W:=W-1;
if(W>0) then wakeup(W, L)
例子:
Var W:semaphore:=0;
begin
repeat
lock(W);
critical section
unlock(W);
remainder section
until false;
end
26.試修改下面生產者-消費者問題解法中的錯誤:
答: procer:
begin
repeat
…
procer an item in nextp;
wait(mutex);
wait(full); /* 應為wait(empty),而且還應該在wait(mutex)的前面 */
buffer(in):=nextp;
/* 緩沖池數組游標應前移: in:=(in+1) mod n; */
signal(mutex);
/* signal(full); */
until false;
end
consumer:
begin
repeat
wait(mutex);
wait(empty); /* 應為wait(full),而且還應該在wait(mutex)的前面 */
nextc:=buffer(out);
out:=out+1; /* 考慮循環,應改為: out:=(out+1) mod n; */
signal(mutex);/* signal(empty); */
consumer item in nextc;
until false;
end
27.試利用記錄型信號量寫出一個不會出現死鎖的哲學家進餐問題的演算法.
答:Var chopstick:array[0,…,4] of semaphore;
所有信號量均被初始化為1,第i 位哲學家的活動可描述為:
Repeat
Wait(chopstick[i]);
Wait(. chopstick[(i+1) mod 5]);
…
Ea.t ;
…
Signal(chopstick[i]);
Signal(chopstick[(i+1) mod 5])
Ea.t ;
…
Think;
Until false;
28.在測量控制系統中的數據採集任務,把所採集的數據送一單緩沖區;計算任務從該單
緩沖中取出數據進行計算.試寫出利用信號量機制實現兩者共享單緩沖的同步演算法。
答:
a. Var mutex, empty, full: semaphore:=1, 1, 0;
gather:
begin
repeat
……
gather data in nextp;
wait(empty);
wait(mutex);
buffer:=nextp;
signal(mutex);
signal(full);
until false;
end
compute:
begin
repeat
……
wait(full);
wait(mutex);
nextc:=buffer;
signal(mutex);
signal(empty);
compute data in nextc;
until false;
end
b. Var empty, full: semaphore:=1, 0;
gather:
begin
repeat
……
gather data in nextp;
wait(empty);
buffer:=nextp;
signal(full);
until false;
end
compute:
begin
repeat
……
wait(full);
nextc:=buffer;
signal(empty);
compute data in nextc;
until false;
end
29.畫圖說明管程由哪幾部分組成,為什麼要引入條件變數?
答:管程由四部分組成:①管程的名稱;②局部於管程內部的共享數據結構說明;③對該數
據結構進行操作的一組過程;④對局部於管程內部的共享數據設置初始值的語句;
當一個進程調用了管程,在管程中時被阻塞或掛起,直到阻塞或掛起的原因解除,而在此期
間,如果該進程不釋放管程,則其它進程無法進入管程,被迫長時間地等待。為了解決這個
問題,引入了條件變數condition。
30.如何利用管程來解決生產者與消費者問題?
答:首先建立一個管程,命名為ProclucerConsumer,包括兩個過程:
(1)Put(item)過程。生產者利用該過程將自己生產的產品放到緩沖池,用整型變
量count 表示在緩沖池中已有的產品數目,當count≥n 時,表示緩沖池已滿,生產者須
等待。
(2)get(item)過程。消費者利用該過程從緩沖池中取出一個產品,當count≤0
時,表示緩沖池中已無可取的產品,消費者應等待。
PC 管程可描述如下:
type procer-consumer =monitor
Var in,out,count:integer;
buffer:array[0,…,n-1]of item;
notfull,notempty:condition;
procere entry dot(item)
begin
if count>=n then not full.wait;
buffer(in):=nextp;
in:=(in+1)mod n;
count:=count+1;
if notempty.queue then notempty.signal;
end
procere entry get(item)
begin
if count<=0 then not full.wait;
nextc:=buffer(out);
out:=(out+1)mod n;
count:=count-1;
if notfull.quene then notfull.signal;
end
begin in:=out:=0;
count:=0
end
在利用管程解決生產者一消費者問題時,其中的生產者和消費者可描述為:
procer: begin
pepeat
proce an inem in nestp
PC.put(item);
until false;
end
consumer: begin
repeat
PC.get(item);
consume the item in enxtc;
until false;
end
31.什麼是AND信號量?試利用AND信號量寫出生產者一消費者問題的解法。
答:為解決並行帶來的死鎖問題,在wait 操作中引入AND 條件,其基本思想是將進
程在整個運行過程中所需要的所有臨界資源,一次性地全部分配給進程,用完後一次性釋放。
解決生產者-消費者問題可描述如下:
var mutex,empty,full: semaphore:=1,n,0;
buffer: array[0,...,n-1] of item;
in,out: integer:=0,0;
begin
parbegin
procer: begin
repeat
…
proce an item in nextp;
…
wait(empty);
wait(s1,s2,s3,...,sn); //s1,s2,...,sn為執行生產者進程除empty 外其餘的條件
wait(mutex);
buffer(in):=nextp;
in:=(in+1) mod n;
signal(mutex);
signal(full);
signal(s1,s2,s3,...,sn);
until false;
end
consumer: begin
repeat
wait(full);
wait(k1,k2,k3,...,kn); //k1,k2,...,kn 為執行消費者進程除full 外其餘的條件
wait(mutex);
nextc:=buffer(out);
out:=(out+1) mod n;
signal(mutex);
signal(empty);
signal(k1,k2,k3,...,kn);
consume the item in nextc;
until false;
end
parend
end
32.什麼是信號量集?試利用信號量集寫出讀者一寫者問題的解法。
答:對AND信號量加以擴充,形成的信號量集合的讀寫機制。
解法:Var RN integer;
L,mx: semaphore:=RN,1;
begin
parbegin
reader:begin
repeat
Swait(L,1,1);
Swait(mx,1,1);
…
perform read operation;
…
Ssignal(L,1);
until false
end
writer:begin
repeat
Swait(mx,1,1;L,RN,0);
perform write operation;
Ssignal(mx,1);
until false
end
parend
end
33.試比較進程間的低級與高級通信工具。
答:用戶用低級通信工具實現進程通信很不方便,效率低,通信對用戶不透明,所有操作都
必須由程序員來實現,而高級通信工具彌補了這些缺陷,用戶直接利用操作系統提供的一組
通信命令,高效地傳送大量的數據。
34.當前有哪幾種高級通信機制?
答:共享存儲器系統、消息傳遞系統以及管道通信系統。
35.消息隊列通信機制有哪幾方面的功能?
答:(1)構成消息(2)發送消息(3)接收梢息(4)互斥與同步。
36.為什麼要在OS 中引入線程?
答:在操作系統中引入線程,則是為了減少程序在並發執行時所付出的時空開銷,使OS具
有更好的並發性,提高CPU的利用率。進程是分配資源的基本單位,而線程則是系統調度的
基本單位。
37.試說明線程具有哪些屬性?
答:(1)輕型實體(2)獨立調度和分派的基本單位(3)可並發執行(4)共享進程資源。
38. 試從調度性,並發性,擁有資源及系統開銷方面對進程和線程進行比較。
答:
(1)調度性。線程在OS 中作為調度和分派的基本單位,進程只作為資源擁有的基本單位。
(2)並發性。進程可以並發執行,一個進程的多個線程也可並發執行。
(3)擁有資源。進程始終是擁有資源的基本單位,線程只擁有運行時必不可少的資源,本
身基本不擁有系統資源,但可以訪問隸屬進程的資源。
(4)系統開銷。操作系統在創建、撤消和切換進程時付出的開銷顯著大於線程。
39. 為了在多線程OS 中實現進程之間的同步與通信,通常提供了哪幾種同步機制?
答:同步功能可以控製程序流並訪問共享數據,從而並發執行多個線程。共有四種同步模型:
互斥鎖、讀寫鎖、條件變數和信號。
40.用於實現線程同步的私用信號量和公用信號量之間有何差別?
答:
(1)私用信號量。當某線程需利用信號量實現同一進程中各線程之間的同步時,可調用創
建信號量的命令來創建一個私用信號量,其數據結構存放在應用程序的地址空間中。
(2)公用信號量。公用信號量是為實現不同進程間或不同進程中各線程之間的同步而設置
的。其數據結構是存放在受保護的系統存儲區中,由OS為它分配空間並進行管理。
41.何謂用戶級線程和內核支持線程?
答:
(1)用戶級線程:僅存在於用戶空間中的線程,無須內核支持。這種線程的創建、撤銷、
線程間的同步與通信等功能,都無需利用系統調用實現。用戶級線程的切換通常發生在一個
應用進程的諸多線程之間,同樣無需內核支持。
(2)內核支持線程:在內核支持下運行的線程。無論是用戶進程中的線程,還是系統線程
中的線 程,其創建、撤銷和切換等都是依靠內核,在內核空間中實現的。在內核空間里還
為每個內核支持線程設置了線程式控制制塊,內核根據該控制塊感知某線程的存在並實施控制。
42.試說明用戶級線程的實現方法。
答:用戶級線程是在用戶空間中的實現的,運行在「運行時系統」與「內核控制線程」的中
間系統上。運行時系統用於管理和控制線程的函數的集合。內核控制線程或輕型進程LWP
可通過系統調用獲得內核提供服務,利用LWP進程作為中間系統。
43.試說明內核支持線程的實現方法。
答:系統在創建新進程時,分配一個任務數據區PTDA,其中包括若干個線程式控制制塊TCB
空間。創建一個線程分配一個TCB,有關信息寫入TCB,為之分配必要的資源。當PTDA
中的TCB 用完,而進程又有新線程時,只要所創建的線程數目未超過系統允許值,系統可
在為之分配新的TCB;在撤銷一個線程時,也應回收線程的所有資源和TCB。