仿真軟件技術 課件 第7章 進程管理:程序存儲和執(zhí)行_第1頁
仿真軟件技術 課件 第7章 進程管理:程序存儲和執(zhí)行_第2頁
仿真軟件技術 課件 第7章 進程管理:程序存儲和執(zhí)行_第3頁
仿真軟件技術 課件 第7章 進程管理:程序存儲和執(zhí)行_第4頁
仿真軟件技術 課件 第7章 進程管理:程序存儲和執(zhí)行_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

課前回顧問題定義可行性研究需求分析總體設計詳細設計編碼實現(xiàn)綜合測試使用維護定義時期開發(fā)時期維護時期系統(tǒng)分析員程序員測試人員維護人員問題引導程序是以什么形式存在于計算機?程序運行時被裝入到什么部件上?程序在計算機上是如何被執(zhí)行的?仿真軟件技術第7章進程管理SimulationSoftwareTechnology第7.1節(jié)程序存儲和執(zhí)行第7.1節(jié)程序存儲和執(zhí)行7.1.1存儲管理器7.1.2程序內存空間劃分7.1.3程序編譯執(zhí)行過程本講內容第7.1節(jié)程序存儲和執(zhí)行①了解存儲器的層次結構②掌握程序在內存中的存放位置③掌握程序編譯執(zhí)行過程

③本講目標

第7.1節(jié)程序存儲和執(zhí)行7.1.1存儲管理器7.1.2程序內存空間劃分7.1.3程序編譯執(zhí)行過程本講內容7.1.1存儲管理器L0-寄存器L5-磁盤速度價格遞增L4-主存容量遞增L1L2L3高速緩存存儲器是一個不同容量、成本和訪問時間的存儲設備的層次結構存儲器的層次結構7.1.1存儲管理器存儲器的層次結構在最高層(L0層),是少量的快速CPU寄存器,一般只能存儲幾百字節(jié)的信息L1、L2、L3層是一個或多個小型或中型的基于SRAM的高速緩存存儲器,用于傳遞數(shù)據(jù)L4層是一個大的基于DRAM的主存,負責和磁盤交互,可以說,主存是磁盤的高速緩存。L5層是慢速但容量很大的本地磁盤L5-磁盤L4-主存L1L2L3L0-寄存器高速緩存7.1.1存儲管理器高速緩存處理器從寄存器文件中讀數(shù)據(jù)比主存中快近100倍,而磁盤讀取的開銷要比從主存中讀取大1000萬倍!磁盤寄存器主存>>數(shù)據(jù)讀取速度磁盤寄存器主存高速緩存插入高速緩存提高計算機性能!7.1.1存儲管理器存儲管理器的功能用戶:使用戶減少甚至擺脫對存儲器使用的管理資源:提高內存的利用率,實現(xiàn)資源共享內存分配地址轉換存儲擴充存儲保護7.1.1存儲管理器存儲管理器的功能內存分配根據(jù)各用戶程序的需要以及內存空間的實際大小,按照一定的策略劃分內存,以便分配給各程序使用,并在結束時回收該程序占用的內存。①分配結構:確定內存的管理方式及其所需的數(shù)據(jù)結構。②放置策略:確定待調入內存的程序和數(shù)據(jù)在內存中的位置。③交換策略:決定了需要將哪些進程的映像調出。④調入策略:決定外存交換區(qū)的進程映像何時、如何調入內存。⑤回收策略:確定回收時機并按一定方式重組為可分配空間。

7.1.1存儲管理器存儲管理器的功能地址轉換將用戶使用的邏輯地址轉換成內存中的物理地址,也稱重定位。①邏輯地址:用戶程序經過匯編或編譯后形成的目標代碼中出現(xiàn)的地址,首地址為0,其余指令中的地址都相對于首地址編址。②邏輯地址空間:邏輯地址構成的空間。③物理地址:內存中各存儲單元的編號。④物理地址空間:物理地址構成的空間。

7.1.1存儲管理器存儲管理器的功能存儲保護保證每道程序在各自的存儲區(qū)域內操作,互不干擾防止地址越界防止操作越界程序A20k25k下界寄存器上界寄存器20k5k基址寄存器限長寄存器020k25k256k-1R——讀保護(不可讀)W——寫保護(不可寫)E——執(zhí)行保護(不可執(zhí)行)7.1.1存儲管理器存儲管理器的功能內存擴充利用虛擬存儲管理對內存進行邏輯上的擴充基本思想:采用軟件手段,在硬件的配合下,將部分外存空間虛擬為內存空間,并將內存和外存有機結合起來,得到一個容量相當于外存、速度接近于內存、價格十分便宜的虛擬存儲系統(tǒng),實現(xiàn)用戶對內存的超容量需求。關于存儲管理功能,下列正確的論述是用戶能設計用內存物理地址直接訪問內存的程序內存分配最基本的任務是為每道程序分配內存,其追求的目標是提高存儲空間的利用率虛擬存儲器是在物理上擴充內存容量ABC提交單選題2分第7.1節(jié)程序存儲和執(zhí)行6.1.1存儲器層次結構7.1.2程序內存空間劃分7.1.3程序編譯執(zhí)行過程本講內容7.1.2程序內存空間劃分程序的主要處理步驟庫函數(shù)內存裝入程序鏈接程序裝入模塊源代碼目標模塊編譯程序目標模塊目標模塊第三步第二步第一步7.1.2程序內存空間劃分只讀的代碼和數(shù)據(jù)讀/寫數(shù)據(jù)運行時堆共享庫的存儲器映射區(qū)域內核虛擬存儲器用戶棧高地址低地址內存空間劃分每一個程序被加載到內存運行時,操作系統(tǒng)都會為其分配虛擬地址空間,它為每個進程提供了一個獨占使用內存的假象,這樣做既能緩解內存緊張,還保護了每個進程的地址空間不被破壞,統(tǒng)一的地址空間也方便存儲器管理。每個進程所能訪問的最大的虛擬地址空間是由CPU的位數(shù)決定的。比如32位的CPU決定了虛擬地址空間的大小為0到232-1,即0x00000000-0xffffffff,共4GB的虛擬內存空間。7.1.2程序內存空間劃分只讀區(qū).text代碼段包含程序的可執(zhí)行代碼。.init段包含程序的初始化代碼,操作系統(tǒng)在裝載程序時可以將這兩個段合并成一個段進行映射,以節(jié)省內存空間。.rodata只讀數(shù)據(jù)段,存放如字符串常量、虛函數(shù)表等。7.1.2程序內存空間劃分讀寫區(qū).bss段為未初始化數(shù)據(jù)段,通常用來存放程序中未初始化的全局變量和static變量。.data段也稱為數(shù)據(jù)段,用于存儲初始化的全局變量和static變量。7.1.2程序內存空間劃分堆堆堆是用于動態(tài)內存分配的區(qū)域,由開發(fā)人員手動申請,手動釋放堆的大小并不固定,可動態(tài)增長或縮小堆的地址空間向上增加,保存的數(shù)據(jù)越多,堆的地址就越高用于保存程序運行時動態(tài)申請的內存空間,由開發(fā)人員調用malloc或new函數(shù)手動申請。堆的地址空間“向上增加”,即當堆上保存的數(shù)據(jù)越多,堆的地址就越高。堆的內存分配屬于動態(tài)分配,一般運行時才知道分配的內存大小,并且堆可分配存活于函數(shù)之外的內存,在未顯示調用free或delete釋放時,其生命周期為進程的生命周期。如何循環(huán)通過new生成對象,沒有對應的delete操作,會導致什么問題?7.1.2程序內存空間劃分映射區(qū)域映射區(qū)域創(chuàng)建匿名映射對象動態(tài)鏈接庫的加載存儲共享文件...映射區(qū)域能將磁盤文件的數(shù)據(jù)映射到內存,用戶通過修改內存可以就能修改磁盤文件7.1.2程序內存空間劃分棧棧保存函數(shù)的局部變量、參數(shù)、返回值、函數(shù)返回地址等信息。由系統(tǒng)進行內存的管理編譯器用棧實現(xiàn)函數(shù)調用,和堆一樣,在程序執(zhí)行期間動態(tài)的擴展和收縮。用于保存函數(shù)的局部變量,參數(shù)、返回值、函數(shù)返回地址以及調用者環(huán)境信息等。由系統(tǒng)進行內存的管理,在函數(shù)完成執(zhí)行后,系統(tǒng)自行釋放棧區(qū)內存,不需要用戶管理整個程序。7.1.2程序內存空間劃分內核空間內核空間不允許程序之間調用相應的,當程序執(zhí)行自己的代碼時,稱進程處于用戶態(tài)存儲操作系統(tǒng)和驅動程序內核代碼定義的函數(shù)必須由內核執(zhí)行,此時稱進程處于內核態(tài)7.1.2程序內存空間劃分變量存儲位置7.1.2程序內存空間劃分示例#include

<iostream>constdoublepi=3.14;class

Circle{ private: doubleradius;//半徑

static

Circle*circle; public: Circle(doubler):radius(r){}//構造函數(shù) //獲取半徑的方法

double

getRadius()const{returnradius;} //計算面積的方法

double

getArea()const{return

pi*radius*radius;}};第7.1節(jié)程序存儲和執(zhí)行6.1.1存儲器層次結構7.1.2程序內存空間劃分7.1.3程序編譯執(zhí)行過程本講內容7.1.3程序編譯執(zhí)行過程編譯執(zhí)行預處理器根據(jù)以#開頭的命令,修改原始的C程序。01將.s文件翻譯成機器語言指令,并打包成可重定位目標程序將預處理器修改了的文件翻譯成以.s結尾的文本文件合并包含其它函數(shù)的文件到程序中,并得到可執(zhí)行文件預處理器02編譯器03匯編器04鏈接器編譯執(zhí)行四個階段(以hello程序為例)7.1.3程序編譯執(zhí)行過程計算機系統(tǒng)的硬件組成7.1.3程序編譯執(zhí)行過程程序在硬件上的加載過程硬盤CPU主存鍵盤I/O橋在shell程序中,從鍵盤輸入“./hello”ALU:算術/邏輯單元PC:程序計數(shù)器ALU總線接口寄存器PC數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論