當前位置:首頁 » 存儲配置 » 操作系統課程設計存儲管理

操作系統課程設計存儲管理

發布時間: 2023-03-23 20:03:15

⑴ 高分急求操作系統課程設計:存儲管理---動態分區分配演算法的模擬

我有存儲管理---動態分區分配演算法的模擬 這個課程設計

⑵ 操作系統中的分區存儲管理和分頁存儲管理的優點和缺點各是什麼

一、分區存儲管理

1、固定分區:

優點:易於實現、開銷小

缺點:存在內部碎片(分區內未被利用空間)、分區總數固定,限制了並發執行的程序數量。

2、動態創建分區:按照程序申請要求分配。

優點: 沒有內部碎片

缺點:有外部碎片(難以利用的小空閑分區)

二、頁式存儲管理

優點: 沒有外部碎片,最後一頁可能有內碎片但不大; 程序不必連續存放;便於改變程序佔用空間大小。

缺點: 程序仍需要全部裝入內存。

⑶ *操作系統的存儲管理的主要內容是什麼

這是我收集的你看全嗎問題一:⑴ 存儲管理的實質是什麼?(對內存的管理,主要對內存中用戶區進行管理)⑵ 多道程序中,為方便用戶和充分利用內存以提高內存利用率,內存管理的任務是什麼?(內存空間的分配和回收、內存空間的共享、存儲保護、地址映射、內存擴充)。⑶ 如何實現存儲保護?
答:在多道程序系統中,內存中既有操作系統,又有許多用戶程序。為使系統正常運行,避免內存中各程序相互干擾,必須對內存中的程序和數據進行保護。
1、防止地址越界
對進程所產生的地址必須加以檢查,發生越界時產生中斷,由操作系統進行相應處理。
2、防止操作越權
對屬於自己區域的信息,可讀可寫;
對公共區域中允許共享的信息或獲得授權可使用的信息,可讀而不可修改;
對未獲授權使用的信息,不可讀、不可寫。
存儲保護一般以硬體保護機制為主,軟體為輔,因為完全用軟體實現系統開銷太大,速度成倍降低。當發生越界或非法操作時,硬體產生中斷,進入操作系統處理(4) 物理存儲器分幾類?(內存、外存、緩存)⑸ 虛存儲器的含義是什麼?(兩層含義)
答:虛存儲器有兩層含義,一是指用戶程序的邏輯地址構成的地址空間;二是指當內存容量不滿足用戶要求時,採用一種將內存空間與外存空間有機地結合在一起,利用內外存自動調度的方法構成一個大的存儲器,從而給用戶程序提供更大的訪問空間。⑹ 什麼叫物理地址?什麼叫邏輯地址?什麼叫地址映射?地址映射分哪幾類?(靜態、動態)
答:物理地址是內存中各存儲單元的編號,即存儲單元的真實地址,它是可識別、可定址並實際存在的。
用戶程序經過編譯或匯編形成的目標代碼,通常採用相對地址形式,其首地址為零,其餘指令中的地址都是相對首地址而定。這個相對地址就稱為邏輯地址或虛擬地址。邏輯地址不是內存中的物理地址,不能根據邏輯地址到內存中存取信息。
為了保證CPU執行程序指令時能正確訪問存儲單元,需要將用戶程序中的邏輯地址轉運行時可由機器直接定址的物理地址,這一過程稱為地址映射或地址重定位。
地址映射可分為兩類:
1、靜態地址映射2、動態地址映射問題二:⑴ 怎樣對內存進行分區?(靜態、動態;等長、不等長)
答:對內存空間的劃分是可以靜態的,也可以動態的;可以是等長的,也可以不等長。
靜態劃分是指系統運行之前就將內存空間劃分成若干區域,通常,分配給進程的內存可能比進程實際所需的區域長。
動態劃分是在系統運行過程中才劃分內存空間。這樣,系統可按進程所需要的存儲空間大小為其分配恰好滿足要求的一個或多個區域。
等長分區是將存儲空間劃分為若干個長度相同的區域。
不等長分區則是將存儲空間劃分若干個長度不同的區域。⑵ 根據分區情況,從如何實現進程的內存分配?
答:1、靜態等長分區的分配
2、動態異長分區的分配⑶ 什麼叫碎片?(零散的小空閑區) 怎樣解決碎片問題?(緊湊技術)
答:所謂碎片是指內存中出現的一些零散的小空閑區域。
解決碎片的方法是移動所有佔用區域,使所有的空閑區合並成一片連續區域。這一過程稱為緊湊,這一技術就是緊湊技術。。問題三:⑴ 存儲管理方案有哪些?(分區管理、頁式管理、段式管理、段頁式管理、虛擬存儲管理)⑵ 分區管理的基本思想是什麼?主要缺點是什麼?
基本思想:將內存劃分成若干連續的區域,稱為分區,每個分區裝入一個運行作業。
主要缺點:不能充分利用內存,也不能實現對內存的擴充。⑶ 什麼是固定分區?什麼是可變分區?各有什麼優缺點?
答:固定分區:系統將內存劃分為若干固定的分區,當作業申請內存時,系統為其選擇一個適當的分區,並裝入內存運行。由於分區大小是事先固定的,因而可容納作業的大小受到限制,而且當用戶作業的地址空間小於分區的存儲空間時,浪費了一些存儲空間。
可變分區:是指在作業裝入內存時建立分區,使分區的大小正好與作業要求的存儲空間相等。引入可變分區方法,使內存分配有較大的靈活性,也提高了內存利用率。但是可變分區會引起碎片的產生。⑷ 分區管理可以採用的內存分配策略是什麼?
首先適應演算法、最佳適應演算法、最壞適應演算法。⑸ 為實現地址映射和存儲保護,系統為用戶程序提供了哪些寄存器?
基址寄存器、限長寄存器;上界寄存器、下界寄存器。問題四:⑴ 試述頁式存儲管理的基本原理
① 內存劃分。
② 邏輯地址空間劃分。
③ 頁面大小。
④ 內存分配。⑵ 試述頁式存儲管理的實現方法
① 建立頁表。② 建立空閑頁面表。
③ 硬體支持。④ 地址映射過程。⑶ 為了提高存取速度,可以使用快表技術。試述這一技術是如何實現的?
答:快表技術是在地址映射機構中增加一個小容量的聯想寄存器(相聯存儲器),它由高速寄存器組成,成為一張快表,快表用來存放當前訪問最頻繁的少數活動頁的頁號。
在快表中,除了邏輯頁號、物理頁號對應外,還增加了幾位。特徵位表示該行是否為空,用0表示空,用1表示有內容;訪問位表示該頁是否被訪問過,用0表示未訪問,1表示已訪問,這是為了淘汰那些用得很少甚至不用的頁面而設置的。
快表只存放當前進程最活躍的少數幾頁,隨著進程的推進,快表內容動態更新。當用戶程序需要存取數據時,根據該數據所在邏輯頁號在快表中找出對應的物理頁號,然後拼接頁內地址,以形成物理地址;如果在快表中沒有相應的邏輯頁號,則地址映射仍然通過內存中的頁表進行,得到物理頁號後須將該物理頁號填到快表的空閑單元中。有無空閑單元,則根據淘汰演算法淘汰某一行,再填入新得到的頁號。實際上查找快表和查找內存頁表是並行進行的,一旦發現快表中有與所查頁號一致的邏輯頁號就停止查找內存頁表。問題五:⑴ 試述段頁式存儲管理的基本思想
答:段頁式存儲管理的基本思想是:
1、用頁式方法來分配和管理內存空間,即把內存劃分成若干大小相等的頁面;
2、用段式方法對用戶程序按照其內在的邏輯關系劃分成若干段;
3、再按照劃分內存頁面的大小,把每一段劃分成若干大小相等的頁面;
4、用戶程序的邏輯地址由三部分組成,形式如下:
段號頁號頁內地址
5、內存是以頁為基本單位分配給每個用戶程序的,在邏輯上相鄰的頁面內存不一定相鄰。⑵ 如何實現段頁式存儲管理
答:1、建立段表2、建立頁表3、建立內存空閑頁面表4、硬體支持5、地址映射過程問題六:⑴ 虛擬存儲技術的基本思想
答:虛擬存儲技術的基本思想是利用大容量的外存來擴充內存,產生一個比有限的實際內存空間大得多的、邏輯的虛擬內存空間,以便能夠有效地支持多道程序系統的實現和大型作業運行的需要,從而增強系統的處理能力。⑵ 虛擬存儲技術的理論基礎(局部性原理)
答:程序局部性原理:虛擬存儲管理的效率與程序局部性程序有很大關系。根據統計,進程運行時,在一段時間內,其程序的執行往往呈現出高度的局限性,包括時間局部性和空間局部性。
1、時間局部性:是指若一條指令被執行,則在不久,它可能再被執行。
2、空間局部性:是指一旦一個存儲單元被訪問,那它附近的單元也將很快被訪問。⑶ 虛擬存儲管理的基本原理
答:虛擬存儲的基本原理是:當進程要求運行時,不是將它的全部信息裝入內存,而將將其一部分先裝入內存,另一部分暫時留在外存。進程在運行過程中,要使用的信息不在內存時,發生中斷,由操作系統將它們調入內存,以保證進程的正常運行。⑷ 虛擬存儲管理的分類
答:虛擬存儲管理分為:虛擬頁式、虛擬段式和虛擬段頁式。⑸ 以虛擬頁式存儲管理為例介紹虛擬存儲管理的實現過程
答:虛擬頁式存儲管理的基本思想是,在進程開始執行之前,不是裝全部頁面,而是只裝一個(甚至0個)頁面,然後根據進程執行的需要,動態地裝入其它頁面。
1、頁表 2、缺頁中斷處理3、頁面淘汰⑹ 在虛存中,頁面在內存與外存中頻繁地調試,系統效率急劇下降,稱為顛簸。試說明產生顛簸的原因。通過什麼方式可以防止顛簸的發生?
答:顛簸是由缺頁率高而引起的。
系統規定缺頁率的上界和下界。當運行進程缺頁率高於上界時,表明所分給它的物理頁面數過少,應當增加;反之,當運行進行缺頁率低於下界時,表明所分給它的物理頁面數過多,可以減少。這樣,根據缺頁率反饋可動態調整物理頁面的分配,以防止顛簸的發生。

⑷ 操作系統-04-操作系統的存儲管理和設備管理

早期的計算機由於結構較為簡單,存儲容量小,並不需要過多的的存儲管理。

隨著計算機和程序越來越復雜,使得存儲管理成為必要。

單一連續分配是最簡單的內存分配方式

只能在單用戶、單進程的操作系統中使用

固定分區分配是支持多道程序的最簡單存儲分配方式

內存空間被劃分為若干固定大小的區域

每個分區只提供給一個程序使用,互不幹擾

根據進程實際需要,動態分配內存空間

不需要新建空閑鏈表節點

只需要把空閑區的容量增大為包括回收區的容量即可

將回收區和空閑區合並

新的空閑區使用原來回收區的地址

將兩個空閑區和中間的回收區合並

新的空閑區使用空閑區1的地址

為回收區創建新的空閑節點

將該節點插入到相應的空閑區鏈表中

上面的部分主要是從物理的角度講解內存管理,這部分主要是講解操作系統是怎麼管理進程的內存空間。

字塊 是相對於物理設備的定義, 頁面 是相對邏輯空間的定義。

頁式存儲管理主要是將進程邏輯空間等分成若干大小的頁面,相應的把物理內存空間分成與頁面大小的物理塊,以頁面為單位把進程空間裝進物理內存中分散的物理塊。

頁面大小應該適中,過大難以分配,過小內存碎片過多,通常是512B~8K。

頁表 記錄進程邏輯空間於物理空間的映射

在頁式存儲管理, 頁地址 = 頁號 + 頁內偏移

現代計算機系統中,可以支持非常大的邏輯 地址空間(2 32~2 64),這樣,頁表就 變得非常大,要佔用非常大的內存空間,如, 具有32位邏輯地址空間的分頁系統,規定頁 面大小為4KB,則在每個進程頁表中的頁表 項可達1M(2^20)個,如果每個頁表項佔用 1Byte,故每個進程僅僅頁表就要佔用1MB 的內存空間。

為了解決這個問題,引入了多級頁表。

多級頁表有一個根頁表,每一個字塊指向了內存中的一片空間,這塊空間存儲的是二級頁表。以此類推,最後一級頁表指向的字塊才是進程實際使用的內存。通過這種分級機制,大大減少了進程中頁表數佔用的空間。

段式存儲管理將進程邏輯空間劃分成若干段(非等分),段的長度由連續邏輯的長度決定。

例如一個程序有主函數MAIN、子程序段X、子函數Y等,這個時候會根據每一個函數的邏輯長度來分配邏輯空間。

頁表由 頁號 和 基址 組成,但在段式存儲管理中由於每一段的長度是不固定的,段表由 段號 、 基址 以及 段長 組成。

在段式存儲管理, 段地址 = 段號 + 段內偏移

分頁可以有效提高內存利用率(雖然說存在頁內碎片)

分段可以更好滿足用戶需求

兩者結合,形成段頁式存儲管理

先將邏輯空間按段式管理分成若干段,再把段內空間按頁式管理等分成若干頁。

在段頁式存儲管理中, 段頁地址 = 段號 + 段內頁號 + 頁內地址

有些進程實際需要的內存很大,超過物理內存的容量。
由於操作系統的多道程序設計,使得每個進程可用物理內存更加稀缺。
不可能無限增加物理內存,物理內存總有不夠的時候,於是便有了虛擬內存的概念。

虛擬內存是操作系統內存管理的關鍵技術,使得多道程序運行和大程序運行成為現實,她通過將進程所使用的內存進行劃分,將部分暫時不使用的內存放置在輔存。

根據局部性原理,程序運行時,無需全部裝入內存,裝載部分即可。如果訪問頁不在內存,則發出缺頁中斷,發起頁面置換。

從用戶層面看,程序擁有很大的空間,即是虛擬內存。

虛擬內存實際是對物理內存的補充,速度接近於內存,成本接近於輔存。

置換演算法一般有先進先出演算法(FIFO)、最不經常使用演算法(LFU)、最近最少使用演算法(LRU)。

從計算機組成原理篇章中,我們可以知道,CPU的高速緩存沒有數據時,需要從主存中載入數據。此時若主存中也沒有數據,則需要從輔存中載入頁面數據。

內存替換策略發生在Cache-主存層次、主存-輔存層次。Cache-主存層次的替換策略主要是為了解決 速度問題 ,

主存-輔存層次則。主要是為了解決 容量問題 。

順序文件是指按順序存放在存儲介質中的文件,例如磁帶的存儲特性使得磁帶文件只能存儲順序文件。

順序文件是所有邏輯文件當中存儲效率最高的。

可變長文件不適合使用順序文件格式存儲,索引文件是為了解決可變長文件存儲而發明的一種文件格式,索引文件需要配合索引表完成存儲的操作。

目錄的層級結構是樹狀的,成為目錄樹。

目錄樹中任何文件或目錄都只有唯一路徑。

對CPU而言,凡是對CPU進行數據輸入的都是輸入設備,凡是CPU進行數據輸出的都是輸出設備。

緩沖區主要是解決CPU與IO設備的速率不匹配的問題,減少CPU處理IO請求的頻率,提高CPU與IO設備之間的並行性。

專用緩沖區只適用於特定的IO進程,當這樣的IO進程比較多時,對內存的消耗也很大,所以操作系統劃出可供多個進程使用的公共緩沖區,稱之為緩沖池。

SPOOLing技術是關於慢速字元設備如何與計算機主機交換信息的一種技術,利用高速共享設備將低速的獨享設備模擬為高速的共享設備,邏輯上,系統為每一個用戶都分配了一台獨立的高速獨享設備,是一種虛擬設備技術。

SPOOLing技術把同步調用低速設備改為非同步調用。在輸入、輸出之間增加了排隊轉儲環節(輸入井、輸出井),SPOOLing負責輸入(出)井與低速設備之間的調度,邏輯上,進程直接與高速設備交互,減少了進程的等待時間。

⑸ 【操作系統】01--存儲器的層次結構

操作系統存儲器,如何對存儲器進行有效的管理,直接影響著存儲器的利用率和系統性能。

1、存儲器的層次結構
2、程序的裝入和鏈接
3、連續分配存儲管理方式
4、分頁存儲管理方式
5、分段存儲管理方式

內部碎片和外部碎片
邏輯地址和物理地址
內存分配策略
分頁的地址變換,頁表的使用
分頁和分段的優缺點

1、存儲的層次結構

這個圖不怎麼看的清,總體是三個部分:存儲器的層次結構、程序的裝入和鏈接、連續分配存儲管理方式

====================

(1)內存分配——為每個進程分配一定的內存空間
(2)地址映射——把程序中所用的相對地址轉換成內存的物理地址
(3)內存保護——檢查地址的合法性,防止越界訪問
(4)內存擴充——解決「求大於供」的問題,採用虛擬存儲技術

內存分配
內存分配的主要任務是:為每一道程序分配內存空間,使它們「各得其所」;當程序撤消時,則收回它佔用的內存空間。分配時注意提高存儲器的利用率。
地址映射
目標程序所訪問的地址是邏輯地址集合的地址空間,而內存空間是內存中物理地址的集合,在多道程序環境下,這兩者是不一致的,因此,存儲管理必須提供地址映射功能,用於把程序地址空間中的邏輯地址轉換為內存空間中對應的物理地址。
內存保護
內存保護的任務是確保每道程序都在自己的內存空間運行,互不幹擾。保護系統程序區不被用戶侵犯(有意或無意的),不允許用戶程序讀寫不屬於自己地址空間的數據(系統區地址空間,其他用戶程序的地址空間)。
內存擴充
內存擴充的任務是從邏輯上來擴充內存容量,使用戶認為系統所擁有的內存空間遠比其實際的內存空間(硬體RAM)大的多。

【緩存都在其使用的工具之前,目的是為了減少訪問次數】

2.1 主存儲器

主存儲器是計算機系統中的一個主要部件,用於保存進程運行時的程序和數據,CPU的控制部件只能從主存儲器中取得指令和數據,數據能夠從主存儲器中讀取並將他們裝入到寄存器中,或者從寄存器存入到主存儲器,CPU與外圍設備交換的信息一般也依託於主存儲器地址空間。但是,主存儲器的訪問速度遠低於CPU執行指令的速度,於是引入了寄存機和告訴緩沖。

2.2 寄存器

寄存器訪問速度最快,能與CPU協調工作,價格昂貴,容量不大,寄存器用於加速存儲器的訪問速度,如用寄存器存放操作數,或用作地址寄存器加快地址轉換速度等。

2.3 高速緩存

高速緩存容量大於或遠大於寄存器,但小於內存,訪問速度高於主內存器,根據程序局部性原理,將主存中一些經常訪問的信息存放在高速緩存中, 減少訪問主存儲器的次數 ,可大幅度提高程序執行速度。通常,進程的程序和數據存放在主存,每當使用時,被臨時復制到高速緩存中,當CPU訪問一組特定信息時,首先檢查它是否在高速緩存中,如果已存在,則直接取出使用,否則,從主存中讀取信息。有的計算機系統設置了兩級或多級高速緩存,一級緩存速度最高,容量小,二級緩存容量稍大,速度稍慢。

2.4 磁碟緩存

磁碟的IO速度遠低於對主存的訪問速度,因此將頻繁使用的一部分磁碟數據和信息暫時存放在磁碟緩存中, 可減少訪問磁碟的次數, 磁碟緩存本身並不是一種實際存在的存儲介質,它依託於固定磁碟,提供對主存儲器空間的擴充,即利用主存中的存儲空間,來暫存從磁碟中讀出或寫入的信息,主存可以看做是輔存的高速緩存,因為,輔存中的數據必須復制到主存方能使用,反之,數據也必須先存在主存中,才能輸出到輔存。

主存儲器簡稱 主存或內存 , 用於保存程序運行時的指令和數據.

寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和 地址 .

通常, 處理機從指存中讀出數據放入指令寄存器, 這一時間段我們稱之為取指周期; 處理機從數存中讀取數據放入數據寄存器, 再流入運算器, 這一時間段我們稱之為執行周期.

高速緩存和磁碟緩存:

高速緩沖存儲器是介於寄存器和存儲器之間的存儲器, 主要用於備份主存中較常用的數據, 用來減少處理機對主存儲器的訪問次數, 提高運行效率.

磁碟緩存主要用於暫時存放頻繁使用的一部分磁碟數據和信息, 以減少訪問磁碟的次數.

⑹ 操作系統存儲管理實驗

#include<stdio.h>#include <dos.h>#include<stdlib.h>#include<conio.h>#include<iostream.h>
#define n 10 /*假定系統允許的最大作業數為n,假定模擬實驗中n值為10*/ #define m 10 /*假定系統允許的空閑區表最大為m,假定模擬實驗中m值為10*/ #define minisize 100 /*空閑分區被分配時,如果分配後剩餘的空間小於minisize,則將該空閑分區全部分配,若大於minisize,則切割分配*/
struct { float address; /*已分配分區起始地址*/ float length; /*已分配分區長度,單位為位元組*/ int flag; /*已分配區表登記欄標志,用"0"表示空欄目*/ }used_table[n]; /*已分配區表*/
struct { float address; /*空閑區起始地址*/ float length; /*空閑區長度,單位為位元組*/ int flag; /*空閑區表登記欄標志,用"0"表示空欄目,用"1"表示未分配*/ }free_table[m]; /*空閑區表*/
void allocate(char J,float xk) /*給J作業,採用最佳分配演算法分配xk大小的空間*/ { int i,k; float ad; k=-1;
for(i=0;i<m;i++) /*尋找空間大於xk的最小空閑區登記項k*/ if(free_table[i].length>=xk&&free_table[i].flag==1) if(k==-1||free_table[i].length<free_table[k].length) k=i; if(k==-1)/*未找到可用空閑區,返回*/ { printf("無可用空閑區\n"); return; }
/*找到可用空閑區,開始分配:若空閑區大小與要求分配的空間差小於minisize大小,則空閑區全部分配;若空閑區大小與要求分配的空間差大於minisize大小,則從空閑區劃出一部分分配*/ if(free_table[k].length-xk<=minisize) { free_table[k].flag=0; ad=free_table[k].address; xk=free_table[k].length; } else { free_table[k].length=free_table[k].length-xk; ad=free_table[k].address+free_table[k].length; } /*修改已分配區表*/ i=0; while(used_table[i].flag!=0&&i<n) /*尋找空表目*/ i++;
if(i>=n) /*無表目可填寫已分配分區*/ { printf("無表目填寫已分分區,錯誤\n");
/*修正空閑區表*/ if(free_table[k].flag==0) /*前面找到的是整個空閑分區*/ free_table[k].flag=1; else {/*前面找到的是某個空閑分區的一部分*/ free_table[k].length=free_table[k].length+xk; return; } } else {/*修改已分配表*/ used_table[i].address=ad; used_table[i].length=xk; used_table[i].flag=J; }
return; }/*主存分配函數結束*/
void reclaim(char J) /*回收作業名為J的作業所佔主存空間*/ { int i,k,j,s,t; float S,L;
/*尋找已分配表中對應登記項*/ s=0; while((used_table[s].flag!=J||used_table[s].flag==0)&&s<n) s++;
if(s>=n)/*在已分配表中找不到名字為J的作業*/ { printf("找不到該作業\n"); return; }
/*修改已分配表*/ used_table[s].flag=0;
/*取得歸還分區的起始地址S和長度L*/ S=used_table[s].address; L=used_table[s].length; j=-1;k=-1;i=0;
/*尋找回收分區的空閑上下鄰,上鄰表目k,下鄰表目j*/ while(i<m&&(j==-1||k==-1)) { if(free_table[i].flag==1) { if(free_table[i].address+free_table[i].length==S)k=i;/*找到上鄰*/ if(free_table[i].address==S+L)j=i;/*找到下鄰*/ } i++; }
if(k!=-1) if(j!=-1) /* 上鄰空閑區,下鄰空閑區,三項合並*/ { free_table[k].length=free_table[j].length+free_table[k].length+L; free_table[j].flag=0; } else /*上鄰空閑區,下鄰非空閑區,與上鄰合並*/ free_table[k].length=free_table[k].length+L; else if(j!=-1) /*上鄰非空閑區,下鄰為空閑區,與下鄰合並*/ { free_table[j].address=S; free_table[j].length=free_table[j].length+L; } else /*上下鄰均為非空閑區,回收區域直接填入*/ { /*在空閑區表中尋找空欄目*/ t=0; while(free_table[t].flag==1&&t<m) t++; if(t>=m)/*空閑區表滿,回收空間失敗,將已分配表復原*/ { printf("主存空閑表沒有空間,回收空間失敗\n"); used_table[s].flag=J; return; } free_table[t].address=S; free_table[t].length=L; free_table[t].flag=1; } return; }/*主存回收函數結束*/
int main( ) { int i,a; float xk; char J;
/*空閑分區表初始化:*/ free_table[0].address=10240; /*起始地址假定為10240*/ free_table[0].length=10240; /*長度假定為10240,即10k*/ free_table[0].flag=1; /*初始空閑區為一個整體空閑區*/ for(i=1;i<m;i++) free_table[i].flag=0; /*其餘空閑分區表項未被使用*/
/*已分配表初始化:*/ for(i=0;i<n;i++) used_table[i].flag=0; /*初始時均未分配*/
while(1) { printf("選擇功能項(0-退出,1-分配主存,2-回收主存,3-顯示主存)\n"); printf("選擇功項(0~3) :");
scanf("%d",&a); switch(a) { case 0: exit(0); /*a=0程序結束*/
case 1: /*a=1分配主存空間*/ printf("輸入作業名J和作業所需長度xk: "); scanf("%*c%c%f",&J,&xk); allocate(J,xk); /*分配主存空間*/ break;
case 2: /*a=2回收主存空間*/ printf("輸入要回收分區的作業名"); scanf("%*c%c",&J); reclaim(J); /*回收主存空間*/ break;
case 3: /*a=3顯示主存情況*/ /*輸出空閑區表和已分配表的內容*/ printf("輸出空閑區表:\n起始地址 分區長度 標志\n"); for(i=0;i<m;i++) printf("%6.0f%9.0f%6d\n",free_table[i].address,free_table[i].length, free_table[i].flag); printf(" 按任意鍵,輸出已分配區表\n"); getch(); printf(" 輸出已分配區表:\n起始地址 分區長度 標志\n"); for(i=0;i<n;i++) if(used_table[i].flag!=0) printf("%6.0f%9.0f%6c\n",used_table[i].address,used_table[i].length, used_table[i].flag); else printf("%6.0f%9.0f%6d\n",used_table[i].address,used_table[i].length, used_table[i].flag); break;
default:printf("沒有該選項\n"); }/*case*/ }/*while*/
return 1;}

⑺ 簡述存儲管理的主要功能

1、定址空間

操作系統讓系統看上去有比實際內存大得多的內存空間。虛擬內存可以是系統中實際物理空間的許多倍。每個進程運行在其獨立的虛擬地址空間中。

這些虛擬空間相互之間都完全隔離開來,所以進程間不會互相影響。同時,硬體虛擬內存機構可以將內存的某些區域設置成不可寫。這樣可以保護代碼與數據不會受惡意程序的干擾。

2、存儲管理內存映射

內存映射技術可以將映象文件和數據文件直接映射到進程的地址空間。在內存映射中,文件的內容被直接連接到進程虛擬地址空間上。

3、存儲管理物理內存分配

內存管理子系統允許系統中每個運行的進程公平地共享系統中的物理內存。

4、存儲管理共享虛擬內存

盡管虛擬內存允許進程有其獨立的虛擬地址空間,但有時也需要在進程之間共享內存。 例如有可能系統中有幾個進程同時運行BASH命令外殼程序。為了避免在每個進程的虛擬內存空間內都存在BASH程序的拷貝,較好的解決辦法是系統物理內存中只存在一份BASH的拷貝並在多個進程間共享。

(7)操作系統課程設計存儲管理擴展閱讀:

相關延伸:存儲管理存儲知識結構

1、系統管理:UNIX/Linux/Windows操作系統管理。

2、開發技術:C/C++,網路編程,多進程/多線程,進程間通信。

3、存儲基礎:磁碟、RAID陣列、文件系統等存儲相關硬體和軟體的安裝、配置、調試。

4、存儲系統:RAID,DAS,SAN,NAS, CAS等。

5、存儲協議:TCP/IP,SCSI,iSCSI,NFS/CIFS等。

6、文件系統:VFS, EXTx/NTFS/FAT32等磁碟文件系統,NFS/CIFS網路文件系統,Lustre/GFS/AFS等分布式文件系統。

7、存儲技術:Deplication,SSD,HSM,Virtualization,Snapshot,Replication,CDP, VTL,Thin Provision等等。

8、存儲架構:掌握不同行業的存儲需求,能夠根據實際需求提出存儲解決方案,並進行存儲系統架構、設計和實現

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:334
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:377
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:611
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:31
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:942
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:802
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:510
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371