版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統(tǒng)原理實驗,操作系統(tǒng)的各個主題 粗線表示從設計和實現(xiàn) 的角度考慮關系非常緊密,實驗4 并發(fā)與調(diào)度,通過對事件和互斥體對象以及對文件和文件映射對象的了解,來加深對操作系統(tǒng)進程同步、線程同步的理解;通過Linux并發(fā)程序的調(diào)試,學習操作系統(tǒng)并發(fā)程序的工作方式 實驗4.1 Windows 2000 線程同步 實驗4.2 Windows 2000 線程間的通訊 實驗4.3 Linux 并發(fā)程序設計,實驗估計時間:120分鐘,難度系數(shù):4,4.1 Windows 2000 線程同步,Windows 2000提供的常用對象可分成三類:核心應用服務、線程同步和線程間通訊。其中,開發(fā)人員可以使用線程同步
2、對象來協(xié)調(diào)線程和進程的工作,以使其共享信息并執(zhí)行任務。此類對象包括 互鎖數(shù)據(jù) 臨界段 事件 互斥體 信號,背景知識,多線程編程中關鍵的一步是保護所有的共享資源,工具主要有互鎖函數(shù)、臨界段和互斥體等;另一個實質(zhì)性部分是協(xié)調(diào)線程使其完成應用程序的任務,為此,可利用內(nèi)核中的事件對象和信號 在進程內(nèi)或進程間實現(xiàn)線程同步的最方便的方法是使用事件對象,這一組內(nèi)核對象允許一個線程對其受信狀態(tài)進行直接控制,背景知識,而互斥體則是另一個可命名且安全的內(nèi)核對象,其主要目的是引導對共享資源的訪問。擁有單一訪問資源的線程創(chuàng)建互斥體,所有想要訪問該資源的線程應該在實際執(zhí)行操作之前獲得互斥體,而在訪問結束時立即釋放互斥體
3、,以允許下一個等待線程獲得互斥體,然后接著進行下去 與事件對象類似,互斥體容易創(chuàng)建、打開、使用并清除。利用CreateMutex() API可創(chuàng)建互斥體,創(chuàng)建時還可以指定一個初始的擁有權標志,通過使用這個標志,只有當線程完成了資源的所有的初始化工作時,才允許創(chuàng)建線程釋放互斥體,背景知識,為了獲得互斥體,首先,想要訪問調(diào)用的線程可使用OpenMutex() API來獲得指向對象的句柄;然后,線程將這個句柄提供給一個等待函數(shù)。當內(nèi)核將互斥體對象發(fā)送給等待線程時,就表明該線程獲得了互斥體的擁有權。當線程獲得擁有權時,線程控制了對共享資源的訪問必須設法盡快地放棄互斥體。放棄共享資源時需要在該對象上調(diào)用
4、ReleaseMute() API。然后系統(tǒng)負責將互斥體擁有權傳遞給下一個等待著的線程 (由到達時間決定順序),背景知識,在本實驗中,通過對事件和互斥體對象的了解,來加深對Windows 2000線程同步的理解。 回顧系統(tǒng)進程、線程的有關概念,加深對Windows 2000線程的理解 了解事件和互斥體對象 通過分析實驗程序,了解管理事件對象的API 了解在進程中如何使用事件對象 了解在進程中如何使用互斥體對象 了解父進程創(chuàng)建子進程的程序設計方法,實驗目的,在開始本實驗之前,請回顧教科書的相關內(nèi)容 需要做以下準備 一臺運行Windows 2000 Professional操作系統(tǒng)的計算機 計算機
5、中需安裝Visual C+ 6.0專業(yè)版或企業(yè)版,工具/準備工作,事件對象 互斥體對象,實驗內(nèi)容與步驟,實驗估計時間:120分鐘,難度系數(shù):5,4.2 Windows 2000 線程間的通訊,Windows 2000提供的線程間通訊類內(nèi)核對象允許同一進程或跨進程的線程之間互相發(fā)送信息,包括文件、文件映射、郵件位和命名管道等,其中最常用的是文件和文件映射。這類對象允許一個線程很容易地向同一進程或其他進程中的另一線程發(fā)送信息,背景知識,文件對象 文件對象是人們所熟悉的永久存儲的傳統(tǒng)元素。將一個文件看作是內(nèi)核對象可使開發(fā)人員獲得比標準C+ 文件操作更為強大的功能 內(nèi)核允許開發(fā)人員在系統(tǒng)設備或網(wǎng)絡上創(chuàng)
6、建代表永久存儲數(shù)據(jù)塊的文件對象。這些文件對象是對永久存儲數(shù)據(jù)的低級訪問者;用C+ 運行庫或其他方法打開的所有文件最終都要變成對CreateFile() API的調(diào)用 CreateFile() 函數(shù)分配一個內(nèi)核對象來代表一個永久的文件。當在磁盤上創(chuàng)建一個新文件或當打開一個已經(jīng)存在的文件時,就調(diào)用這個API,背景知識,創(chuàng)建調(diào)用比創(chuàng)建事件、互斥體或信號量要復雜。首先必須在lpFilename中指定對象名,并且要指向文件系統(tǒng)中所訪問的位置。接著必須用dwDesiredAccess參數(shù)提供所需的訪問級別 由創(chuàng)建函數(shù)要求的共享模式參數(shù)dwShareMode可以指定當另一進程企圖同時訪問數(shù)據(jù)時會發(fā)生什么。與
7、所有其他第一級內(nèi)核對象一樣,可以利用lpSecurityAttributes參數(shù)指定所創(chuàng)建對象的安全性。接著,要通過dwCreationDisposition參數(shù)告訴創(chuàng)建函數(shù),如果數(shù)據(jù)在指定的永久存儲介質(zhì)中存在或不存在時的行為,背景知識,可以使用dwFlagsAndAttributes參數(shù)來指定文件的屬性 (如只讀) ,并確定對數(shù)據(jù)所執(zhí)行的讀寫操作的行為。最后一個參數(shù)hTemplateFile可指定另一個文件對象作為模板,以便為新創(chuàng)建的文件復制屬性或擴展屬性 Windows 2000系統(tǒng)中包括許多文件對象的工具函數(shù)API 通??梢允褂肦eadFile() 和WriteFile() API在永久
8、存儲和應用程序間通過文件對象來移動數(shù)據(jù)。因為創(chuàng)建調(diào)用將對象的大多數(shù)復雜性封裝起來了,這兩個函數(shù)只是簡單地利用指向要交換數(shù)據(jù)的文件對象的句柄 (即指向內(nèi)存內(nèi)的數(shù)據(jù)緩存區(qū)的指針) ,然后計數(shù)移動數(shù)據(jù)的字節(jié)數(shù)。除此之外,這兩個函數(shù)還執(zhí)行重疊式的輸入和輸出,由于不會“堵塞”主線程,可用來傳送大量的數(shù)據(jù),背景知識,CreateFile() 方法除了可訪問標準的永久文件外,還可訪問控制臺輸入和輸出,以及從命名的管道來的數(shù)據(jù) GetFileType() API指明要處理的關鍵文件句柄的結構。除此之外,內(nèi)核還提供了GetFileInformationByHandle() 和GetFileSize() 、Get
9、FileTime() API用于獲得關鍵數(shù)據(jù)的詳細情況。其他用于在文件中改變數(shù)據(jù)的工具函數(shù)包括LockFile() 、SetFilePointer() 和SetEndOfFile() API 除了這些基于句柄的API之外,內(nèi)核還提供了大量的工具,用于按文件名對文件直接操作。文件對象用完之后,應該用CloseHandle() API加以清除,背景知識,文件映射對象 比使用ReadFile() 和WriteFile() API通過文件對象來讀取和寫入數(shù)據(jù)更為簡單的是,Windows 2000還提供了一種在文件中處理數(shù)據(jù)的方法,名為內(nèi)存映射文件,也稱為文件映射。文件映射對象是在虛擬內(nèi)存中分配的永久或
10、臨時文件對象區(qū)域 (如果可能的話,可大到整個文件) ,可將其看作是二進制的數(shù)據(jù)塊。使用這類對象,可獲得直接在內(nèi)存中訪問文件內(nèi)容的能力 文件映射對象提供了強大的掃描文件中數(shù)據(jù)的能力,而不必移動文件指針。對于多線程的讀寫操作來說,這一點特別有用,因為每個線程都可能想要把讀取指針移動到不同的位置去為了防止這種情況,就需要使用某種線程同步機制保護文件,背景知識,在CreateFileMapping() API中,一個新的文件映射對象需要有一個永久的文件對象 (由CreateFile() 所創(chuàng)建) 。該函數(shù)使用標準的安全性和命名參數(shù),還有用于允許操作 (如只讀) 的保護標志以及映射的最大容量。隨后可根據(jù)
11、來自OpenFileMapping() API的其他線程或進程使用該映射這與事件和互斥體的打開進程是非常類似的 內(nèi)存映射文件對象的另一個強大的應用是可請求系統(tǒng)創(chuàng)建一個運行映射的臨時文件。該臨時文件提供一個臨時的區(qū)域,用于線程或進程互相發(fā)送大量數(shù)據(jù),而不必創(chuàng)建或保護磁盤上的文件。利用向創(chuàng)建函數(shù)中發(fā)送INVALID_HANDLE_VALUE來代替真正的文件句柄,就可創(chuàng)建這一臨時的內(nèi)存映射文件;指令內(nèi)核使用系統(tǒng)頁式文件來建立支持映射的最大容量的臨時數(shù)據(jù)區(qū),背景知識,為了利用文件映射對象,進程必須將對文件的查看映射到它的內(nèi)存空間中。也就是說,應該將文件映射對象想象為進程的第一步,在這一步中,當查看實際
12、上允許訪問的數(shù)據(jù)時,附加有共享數(shù)據(jù)的安全性和命名方式。為了獲得指向內(nèi)存區(qū)域的指針需要調(diào)用MapViewOfFile() API,此調(diào)用使用文件映射對象的句柄作為其主要參數(shù)。此外還有所需的訪問等級 (如讀-寫) 和開始查看時文件內(nèi)的偏移和要查看的容量。該函數(shù)返回一個指向進程內(nèi)的內(nèi)存的指針,此指針可有多種編程方面的應用 (但不能超過訪問權限) 當結束文件映射查看時,必須用接受到的指針調(diào)用UnmapViewOfFlie() API,然后再根據(jù)映射對象調(diào)用CloseHandle() API,從而將其清除,背景知識,在本實驗中,通過對文件和文件映射對象的了解,來加深對Windows 2000線程同步的理
13、解 回顧系統(tǒng)進程、線程的有關概念,加深對Windows 2000線程間通訊的理解 了解文件和文件映射對象 通過分析實驗程序,了解線程如何通過文件對象發(fā)送數(shù)據(jù) 了解在進程中如何使用文件對象 通過分析實驗程序,了解線程如何通過文件映射對象發(fā)送數(shù)據(jù) 了解在進程中如何使用文件映射對象,實驗目的,在開始本實驗之前,請回顧教科書的相關內(nèi)容 您需要做以下準備: 一臺運行Windows 2000 Professional 操作系統(tǒng)的計算機 計算機中需安裝Visual C+ 6.0專業(yè)版或企業(yè)版,工具/準備工作,文件對象 文件映射對象,實驗內(nèi)容與步驟,實驗估計時間:90分鐘,難度系數(shù):4,4.3 Linux 并
14、發(fā)程序設計,管道是Linux中最常用的進程間通信IPC機制。利用管道時,一個進程的輸出可成為另外一個進程的輸入。當輸入輸出的數(shù)據(jù)量特別大時,這種IPC機制非常有用。可以想象,如果沒有管道機制,而必須利用文件傳遞大量數(shù)據(jù)時,會造成許多空間和時間上的浪費 在Linux中,通過將兩個file結構指向同一個臨時的索引節(jié)點,而兩個索引節(jié)點又指向同一個物理頁而實現(xiàn)管道,背景知識,通過在Linux進程之間進行的通信實例來學習并發(fā)程序設計的方法 通過Linux進程通信的程序設計與實現(xiàn),進一步熟悉操作系統(tǒng)的進程概念,理解Linux進程管理概念 通過閱讀和分析Linux實驗程序,學習Linux程序設計、調(diào)試和運行的方法,實驗目的,在開始本實驗之前,請回顧教科書的相關內(nèi)容 需要準備一臺運行Li
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 飛機雷達安裝工安全文化考核試卷含答案
- 高嶺土加工工班組協(xié)作知識考核試卷含答案
- 注聚工安全培訓知識考核試卷含答案
- 溫差電致冷器件制造工安全行為測試考核試卷含答案
- 毛皮加工工安全強化水平考核試卷含答案
- 拖拉機駕駛員安全專項水平考核試卷含答案
- 列車員安全宣傳能力考核試卷含答案
- 2024年邯鄲學院輔導員考試筆試真題匯編附答案
- 氣體分餾裝置操作工安全防護競賽考核試卷含答案
- 危險廢物處理工發(fā)展趨勢水平考核試卷含答案
- 【讀后續(xù)寫】2021年11月稽陽聯(lián)考讀后續(xù)寫講評:Saving the Daisies 名師課件-陳星可
- 教育培訓班項目可行性研究報告
- GB/T 43829-2024農(nóng)村糞污集中處理設施建設與管理規(guī)范
- 人參健康食品營銷策劃
- 萬科物業(yè)服務指南房屋和設施維修管理
- 2024年人參項目營銷策劃方案
- 工會職工大會制度實施細則范本
- ups拆除施工方案
- 抗體偶聯(lián)藥物(ADC)專題分析報告
- GB/T 21196.4-2007紡織品馬丁代爾法織物耐磨性的測定第4部分:外觀變化的評定
- 四川省宜賓市第一中學高一化學上學期期末試題含解析
評論
0/150
提交評論