版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第22章 進(jìn)程、線程與并行計(jì)算 進(jìn)程、線程與并行計(jì)算進(jìn)程是正在運(yùn)行的程序,線程是輕量級的進(jìn)程。多任務(wù)的并發(fā)執(zhí)行會用到多線程 (multithreading),而CPU的多核(mult-core)化又將原來只在巨型機(jī)和計(jì)算機(jī)集群中才使 用的并行計(jì)算帶入普通PC應(yīng)用的多核程序設(shè)計(jì)中。本章先介紹進(jìn)程與線程的概念和編程,再給出并行計(jì)算的基本概念和內(nèi)容。下一章討論 基于多核CPU的并行計(jì)算的若干具體編程接口和方法。22.1進(jìn)程與線程進(jìn)程(proc
2、ess)是執(zhí)行中的程序,線程(thread)是一種輕量級的進(jìn)程。22.1.1 22.1.1進(jìn)程與多任務(wù) 進(jìn)程與多任務(wù)現(xiàn)代的操作系統(tǒng)都是多任務(wù)(multitask)的,即可同時(shí)運(yùn)行多個程序。進(jìn)程(process) 是位于內(nèi)存中正被CPU運(yùn)行的可執(zhí)行程序?qū)嵗?,參見圖22-1???J進(jìn)程運(yùn)內(nèi)存中)-可執(zhí)行文件(盤上)圖22-1程序與進(jìn)程目前的主流計(jì)算機(jī)采用的都是馮?諾依曼(John von Neumann)體系結(jié)構(gòu) 存儲程序 計(jì)算模型。程序(
3、program)是在內(nèi)存中順序存儲并以線性模式在CPU中串行執(zhí)行的指令序 列。對于傳統(tǒng)的單核CPU計(jì)算機(jī),多任務(wù)操作系統(tǒng)的實(shí)現(xiàn)是通過CPU分時(shí)(time-sharing) 和程序并發(fā)(concurrency)完成的。即在一個時(shí)間段內(nèi),操作系統(tǒng)將CPU分配給不同的程 序,雖然每一時(shí)刻只有一個程序在CPU中運(yùn)行,但是由于CPU的速度非常快,在很短的時(shí) 間段中可在多個進(jìn)程間進(jìn)行多次切換,所以用戶的感覺就像多個程序在同時(shí)執(zhí)行,我們稱之 為多任務(wù)
4、的并發(fā)。22.1.2 22.1.2進(jìn)程與線程 進(jìn)程與線程程序一般包括代碼段、數(shù)據(jù)段和堆棧,對具有GUI (Graphical User Interfaces,圖形用 戶界面)的程序還包含資源段。進(jìn)程process )是應(yīng)用程序的執(zhí)行實(shí)例,即正在被執(zhí)行的程 序。每個進(jìn)程都有自己的虛擬地址空間,并擁有操作系統(tǒng)分配給它的一組資源,包括堆棧、 寄存器狀態(tài)等。22.2.1 22.2.1創(chuàng)建、管理和終止進(jìn)程 創(chuàng)建、管理和終止進(jìn)程由于MFC中并沒有提
5、供處理進(jìn)程的類,所以我們需要直接使用Windows的API函數(shù)來 創(chuàng)建、管理和終止進(jìn)程。1 .創(chuàng)建進(jìn)程下面的CreateProcess函數(shù)用于在當(dāng)前進(jìn)程中創(chuàng)建一個新進(jìn)程(和其主線程),以運(yùn)行指 定(路徑/文件名或命令行)的應(yīng)用程序:BOOLCreateProces CreateProces( //成功返回非0,失敗返回0 (可用GetLastError函數(shù)返回出錯代碼) LPCTSTR lpApplicationName, //可執(zhí)行文
6、件的全路徑或文件名,有命令行時(shí)可為NULL LPTSTR lpCommandLine, //命令行參數(shù)字符串,有可應(yīng)用名時(shí)可為NULL LPSECURITY_ATTRIBUTES lpProcessAttributes, // 進(jìn)程的安全屬性,NULL 表默認(rèn)安全 LPSECURITY_ATTRIBUTES lpThreadAttributes, // 主線程的安全屬性,NULL 表默認(rèn)安全 BOOL bInheritHandles,
7、//子進(jìn)程是否繼承新進(jìn)程的句柄DWORD dwCreationFlags, //創(chuàng)建標(biāo)志,用于設(shè)置進(jìn)程的創(chuàng)建狀態(tài)和優(yōu)先級別,可為0 LPVOID lpEnvironment, //環(huán)境變量,為NULL時(shí)同當(dāng)前進(jìn)程的LPCTSTR lpCurrentDirectory, //進(jìn)程運(yùn)行的當(dāng)前目錄,為NULL時(shí)同當(dāng)前進(jìn)程的 LPSTARTUPINFO lpStartupInfo, //指向設(shè)置進(jìn)程主窗口或控制條的各種屬性的結(jié)構(gòu)指針 LPPRO
8、CESS_INFORMATION lpProcessInformation // 指向返回進(jìn)程信息的結(jié)構(gòu)指針);其中,啟動信息結(jié)構(gòu)STARTUPINFO和進(jìn)程信息結(jié)構(gòu)PROCESS_INFORMATION的定義分 別為:typedef struct _STARTUPINFO {DWORD cb; //結(jié)構(gòu)的長度(字節(jié)數(shù))LPTSTR lpReserved; // 保留,必須為 NULLLPTSTR IpDesktop; //桌面-窗口站
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- visual c++利用多線程模擬并行計(jì)算
- 基于Java多線程的有限元并行計(jì)算的研究.pdf
- 基于多線程技術(shù)的有限元并行計(jì)算方法研究.pdf
- matlab并行計(jì)算簡介
- mpi并行計(jì)算實(shí)驗(yàn)手冊
- 并行計(jì)算工作站
- 安全算法并行計(jì)算研究與實(shí)現(xiàn).pdf
- 并行計(jì)算監(jiān)管系統(tǒng)的研究與實(shí)現(xiàn).pdf
- 并行計(jì)算及并行程序的推導(dǎo).pdf
- 基于龍芯的并行計(jì)算設(shè)計(jì)與實(shí)現(xiàn).pdf
- 數(shù)據(jù)并行計(jì)算仿真的研究與實(shí)現(xiàn).pdf
- 并行計(jì)算監(jiān)管系統(tǒng)的研究與實(shí)現(xiàn)(1)
- 遙感影像并行計(jì)算策略研究.pdf
- FDTD的網(wǎng)絡(luò)并行計(jì)算研究.pdf
- 關(guān)于并行計(jì)算的排序問題.pdf
- 面向Skeleton的并行計(jì)算體系.pdf
- 并行計(jì)算(中科大講義)
- 并行計(jì)算在計(jì)算機(jī)博弈中的研究與應(yīng)用
- 并行計(jì)算中的通信問題-研究與實(shí)踐.pdf
- 基于MapReduce的并行計(jì)算框架研究與優(yōu)化.pdf
評論
0/150
提交評論