




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、操作系統(tǒng)原理實驗安全性 輸入/輸出管理 調(diào)度 存儲器管理進程描述與控制 并發(fā)性 文件管理 聯(lián)網(wǎ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ù):44.1 Windows 2000 線程同步 Windows 2000提供的常用對象可分成三類:核心
2、應用效勞、線程同步和線程間通訊。其中,開發(fā)人員可以使用線程同步對象來協(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ā)送給等待線程時,就說明該線程獲得了互斥體的擁有權。當線程獲得擁有權時,線程控制了對共享資源的訪問必須設法盡快地放棄互
4、斥體。放棄共享資源時需要在該對象上調(diào)用ReleaseMute() API。然后系統(tǒng)負責將互斥體擁有權傳遞給下一個等待著的線程 (由到達時間決定順序) 背景知識在本實驗中,通過對事件和互斥體對象的了解,來加深對Windows 2000線程同步的理解?;貞浵到y(tǒng)進程、線程的有關概念,加深對Windows 2000線程的理解了解事件和互斥體對象通過分析實驗程序,了解管理事件對象的API了解在進程中如何使用事件對象了解在進程中如何使用互斥體對象了解父進程創(chuàng)立子進程的程序設計方法實驗目的在開始本實驗之前,請回憶教科書的相關內(nèi)容需要做以下準備一臺運行Windows 2000 Professional操作系統(tǒng)
5、的計算機計算機中需安裝專業(yè)版或企業(yè)版工具/準備工作事件對象互斥體對象 實驗內(nèi)容與步驟實驗估計時間:120分鐘,難度系數(shù):54.2 Windows 2000 線程間的通訊Windows 2000提供的線程間通訊類內(nèi)核對象允許同一進程或跨進程的線程之間互相發(fā)送信息,包括文件、文件映射、郵件位和命名管道等,其中最常用的是文件和文件映射。這類對象允許一個線程很容易地向同一進程或其他進程中的另一線程發(fā)送信息背景知識文件對象文件對象是人們所熟悉的永久存儲的傳統(tǒng)元素。將一個文件看作是內(nèi)核對象可使開發(fā)人員獲得比標準C+ 文件操作更為強大的功能內(nèi)核允許開發(fā)人員在系統(tǒng)設備或網(wǎng)絡上創(chuàng)立代表永久存儲數(shù)據(jù)塊的文件對象。
6、這些文件對象是對永久存儲數(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ā)生什么。與所有其他第一級內(nèi)核對象一樣,可以利用lp
7、SecurityAttributes參數(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在永久存儲和應用程序間通過文件對象來移動數(shù)據(jù)。因為創(chuàng)立
8、調(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() 、GetFileTime() API用于獲得關鍵數(shù)據(jù)的詳細情況。
9、其他用于在文件中改變數(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)存中分配的永久或臨時文件對象區(qū)域 (如果可能的話,可大到整個文件) ,可將其看作
10、是二進制的數(shù)據(jù)塊。使用這類對象,可獲得直接在內(nèi)存中訪問文件內(nèi)容的能力文件映射對象提供了強大的掃描文件中數(shù)據(jù)的能力,而不必移動文件指針。對于多線程的讀寫操作來說,這一點特別有用,因為每個線程都可能想要把讀取指針移動到不同的位置去為了防止這種情況,就需要使用某種線程同步機制保護文件背景知識在CreateFileMapping() API中,一個新的文件映射對象需要有一個永久的文件對象 (由CreateFile() 所創(chuàng)立) 。該函數(shù)使用標準的平安性和命名參數(shù),還有用于允許操作 (如只讀) 的保護標志以及映射的最大容量。隨后可根據(jù)來自OpenFileMapping() API的其他線程或進程使用該映
11、射這與事件和互斥體的翻開進程是非常類似的內(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)存空間中。也就是說,應該將文件映射對象想象為進程的第一步,在這一步中,當查看實際上允許訪問的數(shù)據(jù)時,附加有共享數(shù)據(jù)的平安性和命名方式。為了獲得指向內(nèi)存區(qū)域的
12、指針需要調(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線程同步的理解回憶系統(tǒng)進程、線程的有關概念,加深對Windows 2000線程間通訊的理解了解
13、文件和文件映射對象通過分析實驗程序,了解線程如何通過文件對象發(fā)送數(shù)據(jù)了解在進程中如何使用文件對象通過分析實驗程序,了解線程如何通過文件映射對象發(fā)送數(shù)據(jù)了解在進程中如何使用文件映射對象實驗目的在開始本實驗之前,請回憶教科書的相關內(nèi)容您需要做以下準備:一臺運行Windows 2000 Professional 操作系統(tǒng)的計算機計算機中需安裝專業(yè)版或企業(yè)版 工具/準備工作 文件對象 文件映射對象實驗內(nèi)容與步驟實驗估計時間:90分鐘,難度系數(shù):44.3 Linux 并發(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)試和運行的方法實驗目的
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年CTD剖面儀項目建議書
- 環(huán)境治理工程行業(yè)跨境出海戰(zhàn)略研究報告
- 武術套路與散打錦標賽企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 消費電子產(chǎn)品設計行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 建筑聲學模擬軟件行業(yè)跨境出海戰(zhàn)略研究報告
- 枸杞多糖能量補充飲企業(yè)制定與實施新質(zhì)生產(chǎn)力戰(zhàn)略研究報告
- 電子競技俱樂部行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報告
- 高性能導熱油定制行業(yè)跨境出海戰(zhàn)略研究報告
- 對統(tǒng)編版高中語文教材中幾個知識性問題的探析
- 2025屆高考作文備考訓練:破思維之繭綻自由之花
- 護理倫理學(第二版)高職PPT完整全套教學課件
- 重組基因導入受體細胞的流程操作
- 如何愉快的背單詞
- 中國環(huán)境標志
- 《急性上消化道出血教學查房》“課程思政”教學設計案例
- 火場供水-課件
- 吉林省主要地區(qū)風玫瑰圖
- 談人才流失的原因和對策分析-上海W有限公司為例
- EIM Book 1 Unit 8 Were going on holiday單元檢測試題
- 降低陰式分娩產(chǎn)后出血發(fā)生率-PDCA
- 給水泵及其前置泵檢修工藝規(guī)程
評論
0/150
提交評論