1. 程式人生 > >連續分配方式之(單一連續/固定分割槽分配)

連續分配方式之(單一連續/固定分割槽分配)

1、連續分配方式

連續分配方式:為一個使用者程式分配一個連續的記憶體空間

連續分配方式進一步分為:單一連續分配固定分割槽分配動態分割槽分配以及動態重定位分割槽分配

2、單一連續分配

最簡單的一種儲存管理方式,但只能用於單使用者、單任務的作業系統中。

採用這種儲存管理方式時,可把記憶體分為系統區使用者區兩部分,系統區僅提供給OS使用,通常是放在記憶體的低址部分;

使用者區是指除系統區以外的全部記憶體空間,提供給使用者使用。

在早期的單使用者、單任務作業系統中,有不少都配置了儲存器保護機構,用於防止使用者程式對作業系統的破壞。但在近年來常見的單使用者作業系統中,

都未採取儲存器保護措施。一方面可以節省硬體,另一方面因為這是可行的。

在單使用者環境下,機器由一使用者獨佔,不可能存在其他使用者干擾的問題,這時可能出現的破壞行為也只是使用者程式自己去破壞作業系統,其後果並不

嚴重,只是會影響該使用者程式的執行,且作業系統也很容易通過系統的再次啟動而重新裝入記憶體。

3、固定分割槽分配

---- 固定分割槽分配是最簡單的一種可執行多道程式的儲存管理方式。這是將記憶體使用者空間劃分為若干個固定大小(不是相等大小)的區域,在每個分割槽

中只裝入一道作業,這樣,把使用者空間劃分為幾個分割槽,便允許有幾道作業併發執行。

---- 當有一空閒分割槽時,便可以再從外存後備作業佇列選擇一個適當大小的作業裝入該分割槽,當該作業結束時,又可再從後備作業佇列中找出另一

作業調入該分割槽。

1)劃分分割槽的方法

可用下述兩種方法將記憶體的使用者空間劃分為若干個固定大小的分割槽:

---- 分割槽大小相等,即所有的記憶體分割槽大小相等。

缺點是缺乏靈活性,即當程式太小時,會造成記憶體空間的浪費;當程式太大時,一個分割槽又不足以裝入該程式,致使該程式無法執行。

儘管如此,這種劃分方式仍被用於利用一臺計算機去控制多個相同物件的場合,因為這些物件所需的記憶體空間是大小相等的。

例如,爐溫群控系統,就是利用一臺計算機去控制多臺相同的冶煉爐。

---- 分割槽大小不等。為了克服分割槽大小相等而缺乏靈活性的這個缺點,可把記憶體區劃分成含有多個較小的分割槽、適量的中等分割槽及少量的大

分割槽。

這樣,便可根據程式的大小為之分配適當的分割槽。

2)記憶體分配

為了便於記憶體分配,通常將分割槽按大小進行排隊,併為之建立一張分割槽使用表,其中各表項包括每個分割槽的起始地址大小狀態(是否已分配)。

當有一使用者程式要裝入時,由記憶體分配程式檢索該表,從中找出一個能滿足要求的、尚未分配的分割槽,將之分配給該程式,然後將該表項中的狀態

置為“已分配”。若未找到大小足夠的分割槽,則拒絕為該使用者程式分配記憶體。由於每個分割槽的大小固定,必然會造成儲存空間的浪費。

下圖是固定分割槽分配示例的分割槽分配表:

 

如上圖所示,有四個固定分割槽,分割槽大小分別是20KB,40KB,100KB,200KB,起始地址分別是100KB,120KB,160KB,260KB。

假設現在有3個作業,作業A(18KB),作業B(37KB),作業C(200KB),根據作業的大小為其選擇合適的分割槽。

---- 作業A是18KB,可以選擇分割槽1是20KB,會產生2KB的內部碎片;(已分配)

---- 作業B是37KB,可以選擇分割槽2是40KB,會產生3KB的內部碎片;(已分配)

---- 作業C是200KB,選擇分割槽4是200KB,無碎片產生。(已分配)

三個作業已分配完畢,留下的分割槽3仍為空閒分割槽,沒有分配。(未分配)

每個分割槽都對應上、下界兩個暫存器用於記憶體越界保護,CPU訪問每個儲存器地址時應滿足:

---- 訪問地址大於等於下界暫存器的內容,小於等於上界暫存器的內容,否則會產生地址越界錯誤,終止作業的執行。

以上三個作業的記憶體分配情況如下:

---- 固定分割槽分配的優缺點如下:

優點:可用於多道程式系統最簡單的儲存分配,無外部碎片。

缺點:不能實現多程序共享一個主存區,所以儲存空間利用率低,有內部碎片。

相關推薦

連續分配方式單一連續/固定分割槽分配

1、連續分配方式 連續分配方式:為一個使用者程式分配一個連續的記憶體空間。 連續分配方式進一步分為:單一連續分配、固定分割槽分配、動態分割槽分配以及動態重定位分割槽分配。 2、單一連續分配 最簡單的一種儲存管理方式,但只能用於單使用者、單任務的作業系統中。 採用這種儲存管理

連續分配方式 --單一連續/固定分割槽

1、連續分配方式 連續分配方式:為一個使用者程式分配一個連續的記憶體空間。 連續分配方式進一步分為:單一連續分配、固定分割槽分配、動態分割槽分配以及動態重定位分割槽分配。 2、單一連續分配 最簡單的一種儲存管理方式,但只能用於單使用者、單任務的作業系統中。 採用這種儲存管理

找出數字n的所有連續正整數列連續正整數列的和為n從m開始

//找出數字n的所有連續正整數列(即連續正整數列的和為n)從m開始 (C#) 例如:18的正整數列為: 5 6 7 因為 18 = 5+6+7;也可以 18 = 3+4+5+6; 程式碼如下:         static void Main(stri

系統間通訊方式ActiveMQ的使用效能優化冰火兩重天5十六

7、ActiveMQ的持久訊息儲存方案 前文已經講過,當ActiveMQ接收到PERSISTENT Message訊息後就需要藉助持久化方案來完成PERSISTENT Message的儲存。這個介質可以是磁碟檔案系統、可以是ActiveMQ的內建資料庫,還可以是某種外部提供的關係型資料庫。本節筆者將向讀

系統間通訊方式ActiveMQ的叢集方案介紹結束十八

3、ActiveMQ熱備方案 ActiveMQ熱備方案,主要保證ActiveMQ的高可用性。這種方案並不像上節中我們主要討論的ActiveMQ高效能方案那樣,同時有多個節點都處於工作狀態,也就是說這種方案並不提高ActiveMQ叢集的效能;而是從叢集中的多個節點選擇一個,讓其處於工作狀態,叢集中其它節點

系統間通訊方式Kafka的實際使用場景和使用方案二十三

5、場景應用——電商平臺:瀏覽記錄收集功能 事件/日誌收集系統是大中型軟體不得不面對的話題。目前第三方業務系統對 事件/日誌收集系統 的整合思路主要有兩大類:侵入式收集方案和非侵入式收集方案。侵入式收集方案,是指任何需要使用事件/日誌收集系統的第三方系統,都需要做有針對的編碼工作,這個編碼工作或

系統間通訊方式RPC的基本概念

1、概述 經過了詳細的資訊格式、網路IO模型的講解,並且通過JAVA RMI的講解進行了預熱。從這篇文章開始我們將進入這個系列博文的另一個重點知識體系的講解:RPC。在後續的幾篇文章中,我們首先講解RPC的基本概念,一個具體的RPC實現會有哪些基本要素構成,然後我們詳細介紹一款典型的RPC框架:Apac

系統間通訊方式JavaRMI初步使用詳解

1、概述 在概述了資料描述格式的基本知識、IO通訊模型的基本知識後。我們終於可以進入這個系列博文的重點:系統間通訊管理。在這個章節我將通過對RMI的詳細介紹,引出一個重要的系統間通訊的管理規範RPC,並且繼續討論一些RPC的實現;再通過分析PRC的技術特點,引出另一種系統間通訊的管理規範ESB,並介紹E

MongoDB聚合單一用途的聚合方法

con ron 數據 列表 訂單 == 參數 for fun 轉自:http://blog.csdn.net/congcong68/article/details/51419231 聚合指各種可以處理批量記錄並返回計算結果的操作,並MongoDB提供了豐富的聚合操作,M

springboot原始碼bean的遞迴註冊

在prepareContext中,用loader呼叫load方法,loader是 BeanDefinitionLoader,在BeanDefinitionLoader的構造方法中,會例項化一個AnnotatedBeanDefinitionReader,在reader的構造方法中,有一個靜態方法register

c語言中記憶體的動態分配與釋放多維動態陣列構建

一. 靜態陣列與動態陣列    靜態陣列比較常見,陣列長度預先定義好,在整個程式中,一旦給定大小後就無法再改變長度,靜態陣列自己自動負責釋放佔用的記憶體。    動態陣列長度可以隨程式的需要而重新指定大小。動態陣列由記憶體分配函式(malloc)從堆(heap

SpringMVC框架11.3 引數繫結

引數繫結 一、繫結簡單型別引數:整型、字串、float/double、日期、布林(eg:Controller中方法 public String editItemsSubmit(String name,Float price)) (eg:4.2 editItems.jsp 中 name

Spring2 2.1 Spring AOP 開發

在Spring AOP程式設計中: 如果加入容器中的目標物件有實現介面,用 JDK代理; 如果目標物件沒有實現介面,用 Cglib代理; 手動實現 AOP程式設計: AOP面向切面程式設計: AOP業務程式碼與關注點程式碼分離; 關注點: 重複的程式碼(方法)叫關注點; 切面:

CentOS搭建SVN伺服器,並通過Apache HTTP方式訪問轉載至上品物語

摘要:本文主要講述了在centos 6.5環境下搭建svn伺服器,可通過svn:\\IP方式訪問。同時由於部分公司內網埠限制,並不能訪問外網的svn伺服器,所以特地結合了apache伺服器,使得可以通過http方式http://IP方式訪問svn伺服器。 環境準備:

activemq的幾種基本通訊方式總結點對點-釋出訂閱

簡介      在前面一篇文章裡討論過幾種應用系統整合的方式,發現實際上面向訊息佇列的整合方案算是一個總體比較合理的選擇。這裡,我們先針對具體的一個訊息佇列Activemq的基本通訊方式進行探討。activemq是JMS訊息通訊規範的一個實現。總的來說,訊息規範裡面定義最常見的幾種訊息通訊模式主要有

JMeter壓力測試案例大全 http測試和socket測試

目錄 1.jmeter安裝 2.資料庫的壓力測試 3. ftp伺服器的壓力測試 4. sftp的壓力測試(缺) 5.http請求的壓力測試 6. socket的壓力測試 7.郵件伺服器測試 7.1基於命令列 7.2基於介面 8.元件介紹 9.1執行緒組 9.2控制器 9

個人專案-一MVP+RxJava2+Retrofit2+RxBus+Glide

很早之前就想寫一個個人專案練練手,但是由於工作的關係,一直沒有真正的開動(其實就是懶)。 好吧,反正最近這幾個星期稍微比較清閒,趁著這個機會,在空餘時間擼了一個個人專案。 一之 簡介 “一之”是一款資訊類App,主要實現的內容如下: 主頁(知

【C++】動態記憶體分配詳解new/new[]和delete/delete[]

一、為什麼需要動態記憶體分配? 在C++程式中,所有記憶體需求都是在程式執行之前通過定義所需的變數來確定的。 但是可能存在程式的記憶體需求只能在執行時確定的情況。 例如,當需要的記憶體取決於使用者輸入。 在這些情況下,程式需要動態分配記憶體,C ++語言將運算子new和de

獲取iPhone手機 UDID的方式--一網打盡無論有無MAC電腦

一、 通過iTunes方式 1.1 手機連線電腦,開啟iTunes軟體,點選序列號字母處 1.2 顯示出UDID,然後點選滑鼠右鍵拷貝即可 二、通過iTools方式 2.1 前往[iTools蘋果官網](http://www.ito

Android專案中遇到的坑Android圓角圓形圖 二

接著上一篇的問題來研究研究: **問題來了:效果是有了,但有發現麼?我設定的scaleType只有fitxy 是有效果的,其他的都沒有效果了。設定為其他的scaleType都變成matrix那種效果了,也就是圖片預設從控制元件的左上角開始擺放。** 我們