操作系统(三十五)连续分配管理方式
3.4 連續分配管理方式
? 連續分配管理是指為用戶進程分配的內存空間是連續的一片空間
目錄
3.4 連續分配管理方式
3.4.1 單一連續分配
3.4.2 固定分區分配
3.4.3 動態分區分配
3.4.4 小結
3.4.1 單一連續分配
? 在單一連續分配方式中,內存被分為系統區和用戶區。系統區通常位于內存的低地址部分,用于存放操作系統相關數據;用戶區用于存放用戶進程相關數據。并且內存中只能有一道用戶程序,用戶程序獨占整個用戶區空間。
? 這種存儲方式的優點:實現簡單,沒有外部碎片;缺點:只能為單用戶單任務服務,會存在內部碎片,空間利用率極低。
? 這里我們來引入兩個概念:內存中的外部碎片以及內部碎片。外部碎片:在內存中還沒有分配出去但是由于太小而無法分配給其他進程使用的內存空間;內部碎片:已經分配給明確進程的存儲區域,但由于一些原因未使用的部分。
3.4.2 固定分區分配
? 在出現多道批處理系統之后,為了可以讓內存中裝入多道程序而引入了固定分區分配方式,固定分區分配方式將內存劃分成若干個大小固定的分區,不同分區之間互不干擾,根據劃分的依據不同又可以將固定分區分配分為分區大小相等以及分區大小不等的分配方式。
? 分區大小相等:缺乏靈活性,但是很適合用于用一臺計算機控制多個相同對象的場合(比如:鋼鐵廠有n個相同的煉鋼爐,就可把內存分為n個大小相等的區域存放n個煉鋼爐控制程序) ? 分區大小不等:增加了靈活性,可以滿足不同大小的進程需求。根據常在系統中運行的作業大小情況進行劃分(比如:劃分多個小分區、適量中等分區、少量大分區)? 在進行固定分區分配的時候操作系統會產生一個分區說明表,來實現各個分區的分配與回收。每個表項對應一個分區,通常按分區大小排列。每個表項包括對應分區的大小、起始地址、狀態(是否已分配)。這種方法實現簡單且無外部碎片,但是當用戶程序過大時所有劃分的分區均不滿足,只能采用覆蓋技術實現內存的使用,資源利用率不高,會產生內部碎片。
3.4.3 動態分區分配
??動態分區分配又稱為可變分區分配。這種分配方式不會預先劃分內存分區,而是在進程裝入內存時,根據進程的大小動態地建立分區,并使分區的大小正好適合進程的需要。因此系統分區的大小和數目是可變的。
? 對于動態分配方式,我們會采用空閑分配表或者空閑分配鏈等方式來記錄內存的使用情況。
? 空閑分配表:每個空閑分區對應一個表項。表項中包含分區號、分區大小、分區起始地址等信息。
? 空閑分配鏈:每個分區的起始部分和末尾部分分別設置前向指針和后向指針。起始部分處還可記錄分區大小等信息
? 如何對動態分配方式的內存進行分配和回收呢?動態分區進行分配可能會用到一些算法,下節介紹。動態分區分配方式的回收可以分為以下四種情況:回收區的后面有一個相鄰的空閑分區,那么將兩個相鄰空閑分區合并為一個;回收區的前面有一個相鄰的空閑分區,那么兩個相鄰的空閑分區合并為一個;回收區的前、后各有一個相鄰的空閑分區,三個相鄰的空閑分區合并為一個;回收區的前、后都沒有相鄰的空閑分區,那么就在空閑分配表中多加一個表項。總之,相鄰的空閑分區需要合并。
??動態分區分配沒有內部碎片但是會存在外部碎片,對于外部碎片可以通過“緊湊”技術來解決。
3.4.4 小結
??
總結
以上是生活随笔為你收集整理的操作系统(三十五)连续分配管理方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耗时1周!精选22G超超超适合产品经理的
- 下一篇: 操作系统(三十六)动态分区分配算法