




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、操作系統(tǒng)原理實(shí)驗(yàn)安全性 輸入/輸出管理 調(diào)度 存儲(chǔ)器管理進(jìn)程描述與控制 并發(fā)性 文件管理 聯(lián)網(wǎng) 操作系統(tǒng)的各個(gè)主題 粗線表示從設(shè)計(jì)和實(shí)現(xiàn)的角度考慮關(guān)系非常緊密實(shí)驗(yàn)4 并發(fā)與調(diào)度通過對事件和互斥體對象以及對文件和文件映射對象的了解,來加深對操作系統(tǒng)進(jìn)程同步、線程同步的理解;通過Linux并發(fā)程序的調(diào)試,學(xué)習(xí)操作系統(tǒng)并發(fā)程序的工作方式實(shí)驗(yàn)4.1 Windows 2000 線程同步實(shí)驗(yàn)4.2 Windows 2000 線程間的通訊實(shí)驗(yàn)4.3 Linux 并發(fā)程序設(shè)計(jì)實(shí)驗(yàn)估計(jì)時(shí)間:120分鐘,難度系數(shù):44.1 Windows 2000 線程同步 Windows 2000提供的常用對象可分成三類:核心
2、應(yīng)用效勞、線程同步和線程間通訊。其中,開發(fā)人員可以使用線程同步對象來協(xié)調(diào)線程和進(jìn)程的工作,以使其共享信息并執(zhí)行任務(wù)。此類對象包括互鎖數(shù)據(jù)臨界段事件互斥體信號背景知識多線程編程中關(guān)鍵的一步是保護(hù)所有的共享資源,工具主要有互鎖函數(shù)、臨界段和互斥體等;另一個(gè)實(shí)質(zhì)性局部是協(xié)調(diào)線程使其完成應(yīng)用程序的任務(wù),為此,可利用內(nèi)核中的事件對象和信號在進(jìn)程內(nèi)或進(jìn)程間實(shí)現(xiàn)線程同步的最方便的方法是使用事件對象,這一組內(nèi)核對象允許一個(gè)線程對其受信狀態(tài)進(jìn)行直接控制背景知識而互斥體那么是另一個(gè)可命名且平安的內(nèi)核對象,其主要目的是引導(dǎo)對共享資源的訪問。擁有單一訪問資源的線程創(chuàng)立互斥體,所有想要訪問該資源的線程應(yīng)該在實(shí)際執(zhí)行操作
3、之前獲得互斥體,而在訪問結(jié)束時(shí)立即釋放互斥體,以允許下一個(gè)等待線程獲得互斥體,然后接著進(jìn)行下去與事件對象類似,互斥體容易創(chuàng)立、翻開、使用并去除。利用CreateMutex() API可創(chuàng)立互斥體,創(chuàng)立時(shí)還可以指定一個(gè)初始的擁有權(quán)標(biāo)志,通過使用這個(gè)標(biāo)志,只有當(dāng)線程完成了資源的所有的初始化工作時(shí),才允許創(chuàng)立線程釋放互斥體背景知識為了獲得互斥體,首先,想要訪問調(diào)用的線程可使用OpenMutex() API來獲得指向?qū)ο蟮木浔?;然后,線程將這個(gè)句柄提供給一個(gè)等待函數(shù)。當(dāng)內(nèi)核將互斥體對象發(fā)送給等待線程時(shí),就說明該線程獲得了互斥體的擁有權(quán)。當(dāng)線程獲得擁有權(quán)時(shí),線程控制了對共享資源的訪問必須設(shè)法盡快地放棄互
4、斥體。放棄共享資源時(shí)需要在該對象上調(diào)用ReleaseMute() API。然后系統(tǒng)負(fù)責(zé)將互斥體擁有權(quán)傳遞給下一個(gè)等待著的線程 (由到達(dá)時(shí)間決定順序) 背景知識在本實(shí)驗(yàn)中,通過對事件和互斥體對象的了解,來加深對Windows 2000線程同步的理解?;貞浵到y(tǒng)進(jìn)程、線程的有關(guān)概念,加深對Windows 2000線程的理解了解事件和互斥體對象通過分析實(shí)驗(yàn)程序,了解管理事件對象的API了解在進(jìn)程中如何使用事件對象了解在進(jìn)程中如何使用互斥體對象了解父進(jìn)程創(chuàng)立子進(jìn)程的程序設(shè)計(jì)方法實(shí)驗(yàn)?zāi)康脑陂_始本實(shí)驗(yàn)之前,請回憶教科書的相關(guān)內(nèi)容需要做以下準(zhǔn)備一臺運(yùn)行Windows 2000 Professional操作系統(tǒng)
5、的計(jì)算機(jī)計(jì)算機(jī)中需安裝專業(yè)版或企業(yè)版工具/準(zhǔn)備工作事件對象互斥體對象 實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)估計(jì)時(shí)間:120分鐘,難度系數(shù):54.2 Windows 2000 線程間的通訊Windows 2000提供的線程間通訊類內(nèi)核對象允許同一進(jìn)程或跨進(jìn)程的線程之間互相發(fā)送信息,包括文件、文件映射、郵件位和命名管道等,其中最常用的是文件和文件映射。這類對象允許一個(gè)線程很容易地向同一進(jìn)程或其他進(jìn)程中的另一線程發(fā)送信息背景知識文件對象文件對象是人們所熟悉的永久存儲(chǔ)的傳統(tǒng)元素。將一個(gè)文件看作是內(nèi)核對象可使開發(fā)人員獲得比標(biāo)準(zhǔn)C+ 文件操作更為強(qiáng)大的功能內(nèi)核允許開發(fā)人員在系統(tǒng)設(shè)備或網(wǎng)絡(luò)上創(chuàng)立代表永久存儲(chǔ)數(shù)據(jù)塊的文件對象。
6、這些文件對象是對永久存儲(chǔ)數(shù)據(jù)的低級訪問者;用C+ 運(yùn)行庫或其他方法翻開的所有文件最終都要變成對CreateFile() API的調(diào)用CreateFile() 函數(shù)分配一個(gè)內(nèi)核對象來代表一個(gè)永久的文件。當(dāng)在磁盤上創(chuàng)立一個(gè)新文件或當(dāng)翻開一個(gè)已經(jīng)存在的文件時(shí),就調(diào)用這個(gè)API背景知識創(chuàng)立調(diào)用比創(chuàng)立事件、互斥體或信號量要復(fù)雜。首先必須在lpFilename中指定對象名,并且要指向文件系統(tǒng)中所訪問的位置。接著必須用dwDesiredAccess參數(shù)提供所需的訪問級別由創(chuàng)立函數(shù)要求的共享模式參數(shù)dwShareMode可以指定當(dāng)另一進(jìn)程企圖同時(shí)訪問數(shù)據(jù)時(shí)會(huì)發(fā)生什么。與所有其他第一級內(nèi)核對象一樣,可以利用lp
7、SecurityAttributes參數(shù)指定所創(chuàng)立對象的平安性。接著,要通過dwCreationDisposition參數(shù)告訴創(chuàng)立函數(shù),如果數(shù)據(jù)在指定的永久存儲(chǔ)介質(zhì)中存在或不存在時(shí)的行為背景知識可以使用dwFlagsAndAttributes參數(shù)來指定文件的屬性 (如只讀) ,并確定對數(shù)據(jù)所執(zhí)行的讀寫操作的行為。最后一個(gè)參數(shù)hTemplateFile可指定另一個(gè)文件對象作為模板,以便為新創(chuàng)立的文件復(fù)制屬性或擴(kuò)展屬性Windows 2000系統(tǒng)中包括許多文件對象的工具函數(shù)API通??梢允褂肦eadFile() 和WriteFile() API在永久存儲(chǔ)和應(yīng)用程序間通過文件對象來移動(dòng)數(shù)據(jù)。因?yàn)閯?chuàng)立
8、調(diào)用將對象的大多數(shù)復(fù)雜性封裝起來了,這兩個(gè)函數(shù)只是簡單地利用指向要交換數(shù)據(jù)的文件對象的句柄 (即指向內(nèi)存內(nèi)的數(shù)據(jù)緩存區(qū)的指針) ,然后計(jì)數(shù)移動(dòng)數(shù)據(jù)的字節(jié)數(shù)。除此之外,這兩個(gè)函數(shù)還執(zhí)行重疊式的輸入和輸出,由于不會(huì)“堵塞主線程,可用來傳送大量的數(shù)據(jù)背景知識CreateFile() 方法除了可訪問標(biāo)準(zhǔn)的永久文件外,還可訪問控制臺輸入和輸出,以及從命名的管道來的數(shù)據(jù)GetFileType() API指明要處理的關(guān)鍵文件句柄的結(jié)構(gòu)。除此之外,內(nèi)核還提供了GetFileInformationByHandle() 和GetFileSize() 、GetFileTime() API用于獲得關(guān)鍵數(shù)據(jù)的詳細(xì)情況。
9、其他用于在文件中改變數(shù)據(jù)的工具函數(shù)包括LockFile() 、SetFilePointer() 和SetEndOfFile() API除了這些基于句柄的API之外,內(nèi)核還提供了大量的工具,用于按文件名對文件直接操作。文件對象用完之后,應(yīng)該用CloseHandle() API加以去除背景知識文件映射對象比使用ReadFile() 和WriteFile() API通過文件對象來讀取和寫入數(shù)據(jù)更為簡單的是,Windows 2000還提供了一種在文件中處理數(shù)據(jù)的方法,名為內(nèi)存映射文件,也稱為文件映射。文件映射對象是在虛擬內(nèi)存中分配的永久或臨時(shí)文件對象區(qū)域 (如果可能的話,可大到整個(gè)文件) ,可將其看作
10、是二進(jìn)制的數(shù)據(jù)塊。使用這類對象,可獲得直接在內(nèi)存中訪問文件內(nèi)容的能力文件映射對象提供了強(qiáng)大的掃描文件中數(shù)據(jù)的能力,而不必移動(dòng)文件指針。對于多線程的讀寫操作來說,這一點(diǎn)特別有用,因?yàn)槊總€(gè)線程都可能想要把讀取指針移動(dòng)到不同的位置去為了防止這種情況,就需要使用某種線程同步機(jī)制保護(hù)文件背景知識在CreateFileMapping() API中,一個(gè)新的文件映射對象需要有一個(gè)永久的文件對象 (由CreateFile() 所創(chuàng)立) 。該函數(shù)使用標(biāo)準(zhǔn)的平安性和命名參數(shù),還有用于允許操作 (如只讀) 的保護(hù)標(biāo)志以及映射的最大容量。隨后可根據(jù)來自O(shè)penFileMapping() API的其他線程或進(jìn)程使用該映
11、射這與事件和互斥體的翻開進(jìn)程是非常類似的內(nèi)存映射文件對象的另一個(gè)強(qiáng)大的應(yīng)用是可請求系統(tǒng)創(chuàng)立一個(gè)運(yùn)行映射的臨時(shí)文件。該臨時(shí)文件提供一個(gè)臨時(shí)的區(qū)域,用于線程或進(jìn)程互相發(fā)送大量數(shù)據(jù),而不必創(chuàng)立或保護(hù)磁盤上的文件。利用向創(chuàng)立函數(shù)中發(fā)送INVALID_HANDLE_VALUE來代替真正的文件句柄,就可創(chuàng)立這一臨時(shí)的內(nèi)存映射文件;指令內(nèi)核使用系統(tǒng)頁式文件來建立支持映射的最大容量的臨時(shí)數(shù)據(jù)區(qū)背景知識為了利用文件映射對象,進(jìn)程必須將對文件的查看映射到它的內(nèi)存空間中。也就是說,應(yīng)該將文件映射對象想象為進(jìn)程的第一步,在這一步中,當(dāng)查看實(shí)際上允許訪問的數(shù)據(jù)時(shí),附加有共享數(shù)據(jù)的平安性和命名方式。為了獲得指向內(nèi)存區(qū)域的
12、指針需要調(diào)用MapViewOfFile() API,此調(diào)用使用文件映射對象的句柄作為其主要參數(shù)。此外還有所需的訪問等級 (如讀-寫) 和開始查看時(shí)文件內(nèi)的偏移和要查看的容量。該函數(shù)返回一個(gè)指向進(jìn)程內(nèi)的內(nèi)存的指針,此指針可有多種編程方面的應(yīng)用 (但不能超過訪問權(quán)限)當(dāng)結(jié)束文件映射查看時(shí),必須用接受到的指針調(diào)用UnmapViewOfFlie() API,然后再根據(jù)映射對象調(diào)用CloseHandle() API,從而將其去除背景知識在本實(shí)驗(yàn)中,通過對文件和文件映射對象的了解,來加深對Windows 2000線程同步的理解回憶系統(tǒng)進(jìn)程、線程的有關(guān)概念,加深對Windows 2000線程間通訊的理解了解
13、文件和文件映射對象通過分析實(shí)驗(yàn)程序,了解線程如何通過文件對象發(fā)送數(shù)據(jù)了解在進(jìn)程中如何使用文件對象通過分析實(shí)驗(yàn)程序,了解線程如何通過文件映射對象發(fā)送數(shù)據(jù)了解在進(jìn)程中如何使用文件映射對象實(shí)驗(yàn)?zāi)康脑陂_始本實(shí)驗(yàn)之前,請回憶教科書的相關(guān)內(nèi)容您需要做以下準(zhǔn)備:一臺運(yùn)行Windows 2000 Professional 操作系統(tǒng)的計(jì)算機(jī)計(jì)算機(jī)中需安裝專業(yè)版或企業(yè)版 工具/準(zhǔn)備工作 文件對象 文件映射對象實(shí)驗(yàn)內(nèi)容與步驟實(shí)驗(yàn)估計(jì)時(shí)間:90分鐘,難度系數(shù):44.3 Linux 并發(fā)程序設(shè)計(jì)管道是Linux中最常用的進(jìn)程間通信IPC機(jī)制。利用管道時(shí),一個(gè)進(jìn)程的輸出可成為另外一個(gè)進(jìn)程的輸入。當(dāng)輸入輸出的數(shù)據(jù)量特別大時(shí),這種IPC機(jī)制非常有用。可以想象,如果沒有管道機(jī)制,而必須利用文件傳遞大量數(shù)據(jù)時(shí),會(huì)造成許多空間和時(shí)間上的浪費(fèi)在Linux中,通過將兩個(gè)file結(jié)構(gòu)指向同一個(gè)臨時(shí)的索引節(jié)點(diǎn),而兩個(gè)索引節(jié)點(diǎn)又指向同一個(gè)物理頁而實(shí)現(xiàn)管道背景知識通過在Linux進(jìn)程之間進(jìn)行的通信實(shí)例來學(xué)習(xí)并發(fā)程序設(shè)計(jì)的方法通過Linux進(jìn)程通信的程序設(shè)計(jì)與實(shí)現(xiàn),進(jìn)一步熟悉操作系統(tǒng)的進(jìn)程概念,理解Linux進(jìn)程管理概念通過閱讀和分析Linux實(shí)驗(yàn)程序,學(xué)習(xí)Linux程序設(shè)計(jì)、調(diào)試和運(yùn)行的方法實(shí)驗(yàn)?zāi)康?/p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《A day in the park》作業(yè)設(shè)計(jì)方案
- 個(gè)人消防責(zé)任書
- 協(xié)議合同和加盟合同范本
- 醫(yī)療器材加工合同范本
- 中藥炮制工中級習(xí)題庫+參考答案
- 生物制藥復(fù)習(xí)題+答案
- 農(nóng)藝工中級模考試題(含答案)
- 接觸網(wǎng)中級工測試題
- 七律長征 教案教學(xué)設(shè)計(jì)
- 危廢傭金合同范本
- 《起重機(jī)械安全評估規(guī)范》編制說明(征求意見稿)
- 廣州小學(xué)英語單詞分類識記表-注音版
- 人教版PEP五年級數(shù)學(xué)下冊教案(全冊 完整)
- 窗簾工程方案
- 2024年醫(yī)學(xué)高級職稱-全科醫(yī)學(xué)(醫(yī)學(xué)高級)筆試歷年真題薈萃含答案
- 國防動(dòng)員建設(shè)總體規(guī)劃方案
- 教案檢查總結(jié)及整改措施
- 商品流通學(xué)課件
- 第2課《美麗的“缺牙巴”》課件
- 2024年青島版數(shù)學(xué)五年級下冊第一單元、第二單元測試題及答案(各一套)
- 胃癌術(shù)后化療后護(hù)理查房
評論
0/150
提交評論