缺页中断处理过程

合集下载

简述中断的流程

简述中断的流程

中断的流程引言中断是计算机系统中一种重要的机制,用于处理硬件设备请求、异常情况和优先级较高的任务。

在任何计算机系统中,中断都起到极其关键的作用。

本文将详细探讨中断的流程。

中断的定义和分类中断是指计算机在执行某个任务的过程中,临时停止当前正在运行的程序,转而去执行另一段程序(中断服务程序),处理发生的事件。

中断可以分为硬件中断和软件中断两种类型。

硬件中断硬件中断是由外部设备的请求引起的中断,常见的硬件中断包括定时器中断、外部设备中断(如键盘、鼠标等)和异常中断(如除零错误、缺页错误等)。

软件中断软件中断是由程序员在程序中主动发出的中断请求,通过软件指令触发,实现用户与硬件的交互。

例如,在操作系统中,通过系统调用可以触发软件中断。

中断的流程中断的触发中断的触发是由硬件设备或软件指令生成的,当满足中断触发条件时,中断信号将被发送给中断控制器。

中断控制器收到中断信号后,会进行中断的响应。

它首先会保存当前的程序状态,包括程序指针、寄存器的值等,并将程序控制权转移给中断服务程序。

中断服务程序的执行中断服务程序是一个与中断相关的程序段,用于处理特定的中断事件。

它会根据中断类型进行相应的处理操作,如读取设备数据、更新系统状态等。

初始化中断服务程序中断服务程序在执行之前,需要进行初始化工作。

这包括保存当前状态、设置中断服务程序的入口地址等。

中断服务程序的执行过程中断服务程序一般分为两个阶段:前半部分和后半部分。

前半部分中断服务程序的前半部分主要是进行必要的初始化工作,以及保存当前的程序状态。

此阶段的目标是尽快地使中断事件得到响应,保证硬件设备的正常工作。

后半部分中断服务程序的后半部分是真正的中断处理过程,它会根据中断类型进行具体的处理操作。

处理完毕后,中断服务程序将恢复中断之前的状态,包括恢复寄存器的值、恢复程序的执行等。

中断服务程序的完成与返回中断服务程序的完成意味着中断处理的终结。

在完成之前,中断服务程序需要恢复中断之前的状态,并将程序控制权返回给被中断的程序或操作系统。

缺页中断算法实验报告

缺页中断算法实验报告

一、实验目的1. 理解缺页中断的概念及其在操作系统中的作用。

2. 掌握常见的页面置换算法,如先进先出(FIFO)、最近最少使用(LRU)等。

3. 通过模拟实验,验证不同页面置换算法对缺页中断次数的影响。

4. 深入了解页式虚拟存储管理中地址转换的过程。

二、实验环境1. 操作系统:Windows 102. 编程语言:C/C++3. 实验工具:Visual Studio三、实验内容1. 模拟缺页中断的产生2. 实现不同的页面置换算法3. 分析页面置换算法对缺页中断次数的影响4. 模拟地址转换过程四、实验步骤1. 模拟缺页中断的产生(1)定义一个模拟指令序列,包含多个页面号。

(2)创建一个模拟的页表,用于记录每个页面是否在内存中。

(3)根据指令序列,遍历页表,判断访问的页面是否在内存中。

(4)如果页面不在内存中,则产生缺页中断。

2. 实现不同的页面置换算法(1)先进先出(FIFO)算法:- 定义一个队列,用于存储内存中的页面号。

- 当发生缺页中断时,将新页面号入队,同时判断队列长度是否超过内存块数。

- 如果队列长度超过内存块数,则将队首元素出队,模拟页面置换过程。

(2)最近最少使用(LRU)算法:- 定义一个链表,用于存储内存中的页面号。

- 当发生缺页中断时,将新页面号插入链表尾部。

- 如果链表长度超过内存块数,则从链表头部删除元素,模拟页面置换过程。

3. 分析页面置换算法对缺页中断次数的影响(1)定义一个变量,用于记录缺页中断次数。

(2)遍历模拟指令序列,根据不同的页面置换算法处理缺页中断。

(3)统计不同算法下的缺页中断次数,并进行比较。

4. 模拟地址转换过程(1)根据指令中的逻辑地址,计算页号和偏移量。

(2)根据页号,查找页表,判断页面是否在内存中。

(3)如果页面在内存中,则根据偏移量计算物理地址。

(4)如果页面不在内存中,则产生缺页中断。

五、实验结果与分析1. 模拟缺页中断的产生通过模拟指令序列,成功产生了缺页中断。

中断和中断处理流程

中断和中断处理流程

中断和中断处理流程转⾃:1. 中断概念中断是指由于接收到来⾃外围硬件(相对于中央处理器和内存)的异步信号或来⾃软件的同步信号,⽽进⾏相应的硬件/软件处理。

发出这样的信号称为进⾏中断请求(interrupt request,IRQ)。

硬件中断导致处理器通过⼀个上下⽂切换(context switch)来保存执⾏状态(以程序计数器和程序状态字等寄存器信息为主);软件中断则通常作为CPU指令集中的⼀个指令,以可编程的⽅式直接指⽰这种上下⽂切换,并将处理导向⼀段中断处理代码。

中断在计算机多任务处理,尤其是实时系统中尤为有⽤。

这样的系统,包括运⾏于其上的操作系统,也被称为“中断驱动的”(interrupt-driven)。

中断是⼀种使CPU中⽌正在执⾏的程序⽽转去处理特殊事件的操作,这些引起中断的事件称为中断源,它们可能是来⾃外设的输⼊输出请求,也可能是计算机的⼀些异常事故或其它内部原因。

中断:在运⾏⼀个程序的过程中,断续地以“插⼊”⽅式执⾏⼀些完成特定处理功能的程序段,这种处理⽅式称为中断。

2. 中断的作⽤并⾏操作硬件故障报警与处理⽀持多道程序并发运⾏,提⾼计算机系统的运⾏效率⽀持实时处理功能3. 术语按中断源进⾏分类:发出中断请求的设备称为中断源。

按中断源的不同,中断可分为1. 内中断:即程序运⾏错误引起的中断2. 外中断:即由外部设备、接⼝卡引起的中断3. 软件中断:由写在程序中的语句引起的中断程序的执⾏,称为软件中断允许/禁⽌(开/关)中断: CPU通过指令限制某些设备发出中断请求,称为屏蔽中断。

从CPU要不要接收中断即能不能限制某些中断发⽣的⾓度,中断可分为1. 可屏蔽中断:可被CPU通过指令限制某些设备发出中断请求的中断,那是不是意味着进中断时disable整个中断,其实disable的都是可屏蔽中断?2. 不可屏蔽中断:不允许屏蔽的中断如电源掉电中断允许触发器:在CPU内部设置⼀个中断允许触发器,只有该触发器置“1”,才允许中断;置“0”,不允许中断。

简述缺页中断处理过程

简述缺页中断处理过程

简述缺页中断处理过程摘要:一、缺页中断的定义与作用二、缺页中断的处理过程1.页表查找2.缺页中断向量表查找3.页框号查找4.页面分配5.页面置换6.更新页表和缺页中断向量表三、缺页中断处理的意义正文:计算机系统中,内存分为系统区与用户区。

系统区主要包括操作系统、系统调用等,用户区则是为用户程序分配的内存空间。

在实际运行过程中,程序往往需要访问内存中尚未分配的页面,这时就会发生缺页中断。

缺页中断处理过程是操作系统中至关重要的一环,它保证了系统能够高效、安全地管理内存资源。

缺页中断的处理过程可以分为以下几个步骤:1.页表查找:当程序需要访问一个内存页面时,首先会在页表中查找该页面的信息。

页表是操作系统用来记录物理内存页框与虚拟内存页面对应关系的数据结构。

如果页表中不存在该页面的信息,说明该页面尚未分配,这时就会产生缺页中断。

2.缺页中断向量表查找:当发生缺页中断后,处理器会查找缺页中断向量表以确定缺页中断的处理函数。

缺页中断向量表中存放着处理缺页中断的函数地址,处理器根据该地址调用相应的处理函数。

3.页框号查找:缺页中断处理函数根据页表中的页面对应关系,在内存中查找对应的物理页框号。

物理页框号是内存中一个连续的内存区域,用于存储程序需要的数据或指令。

4.页面分配:找到物理页框号后,缺页中断处理函数会为程序分配一个页面。

分配方式包括从空闲页面池中取出一个空闲页面、将一个已分配的页面从内存中移除并将其放入空闲页面池等。

5.页面置换:在分配页面后,程序需要将新分配的页面写入内存。

这时,可能会遇到内存中的页面已满,需要进行页面置换。

页面置换算法有多种,如最近最少使用(LRU)算法、时钟算法等,它们的主要目的是将长时间未使用的页面置换出去,为新分配的页面腾出空间。

6.更新页表和缺页中断向量表:页面分配和置换完成后,缺页中断处理函数需要更新页表和缺页中断向量表。

更新完成后,程序可以继续执行。

总之,缺页中断处理过程是操作系统在内存管理方面的重要机制。

页式虚拟存储地址变换.

页式虚拟存储地址变换.

页式虚拟存储管理中地址转换和缺页中断的模拟
实验目的:
1.深入了解页式虚拟存储管理技术如何实现地址转换。

2.进一步认识页式虚拟存储管理中如何处理缺页中断。

实验要求:
编写程序模拟实现页式虚拟存储管理中的地址转换过程以及缺
页中断的处理过程。

实验指导:
1.请求分页中硬件地址变换过程。

(1)
自己设计一个主存分配表。

(2)对逻辑地址进行划分为页号和页内地址
(3)越界检查,若越界直接中断退出程序的执行。

(不越界情况下)检索页表分2种情况:其一,若该页在内存,则找到其对应的物理块号;合并块号和块内地址形成物理地址。

进行输出。

(4)其二,若该页不再内存,产生缺页中断,调用缺页中断子
程序执行缺页中断处理过程。

中断返回后重新执行被中断的指令。

2.采用某一种页面置换算法实现分页管理的缺页调度。

(1)当硬件发出缺页中断后转操作系统处理缺页中断。

查看主存分块表看有无可用空闲块。

若有则为进程分配一块。

若无空闲块,当采用一种页面置换算法(例如FIFO形成队列),其头部放在变量K 中淘汰最先进入主存的一页,若该页修改过,好要重新写回磁盘。

然后再把当前要访问的页装入该内存块,并修改页表和存储分块表。

数组P中各个元素为作业已在主存的页号。

假定作业最多可分配m块。

当淘汰一页时,总是淘汰P[K]所指页。

之后调整数组P:
P[K]=要装入的页;
K=(K+1)mod m;
流程图如下:。

第11讲虚拟存储:缺页中断

第11讲虚拟存储:缺页中断

寄存器 高速缓存
内存 磁盘
100 秒
磁带
容量 <1 KB 1 MB 64-512 MB 5-50 GB 20-100 GB
操作系统的存储抽象
■ 操作系统对存储的抽象:地址空间
P1
0
P2
0
0
P3
0
内核
0
m
缓存 MM 硬件U
232-1 232-1 232-1 232-1
M>>m
虚拟存储需求
■ 计算机系统时常出现内存空间不够用
虚拟存储的基本概念■思路ຫໍສະໝຸດ 将不常用的部分内存块暂存到外存
■ 原理: 装载程序时
只将当前指令执行需要的部分页面或段装入内存
指令执行中需要的指令或数据不在内存(称为缺页或缺段)时
处理器通知操作系统将相应的页面或段调入内存
操作系统将内存中暂时不用的页面或段保存到外存
■ 实现方式
虚拟页式存储 虚拟段式存储
虚拟存储的基本特征
覆盖技术示例
程序调用结构:190K
内存总共:110K
A 20K
B
C
50K
30K
A BC
D
E
30K
20K
F
40K
DE
F
另一种调用方法: (100K)
— A占一个分区:20K — B、E和F共用一个分区:50K
— C和D共用一个分区:30K
程序X的常驻区 A(20K)
覆盖区0 (50K)
覆盖区1 (40K)
虚拟存储概念
■ 虚拟存储的需求背景 ■ 覆盖技术 ■ 交换技术 ■ 局部性原理 ■ 虚拟存储概念 ■ 虚拟页式存储 ■ 缺页异常
缺页异常(缺页中断)的处理流程

缺页中断及页面置换算法

缺页中断及页面置换算法

缺页中断及页⾯置换算法1. 缺页中断 在请求分页系统中,可以通过查询页表中的状态位来确定所要访问的页⾯是否存在于内存中。

每当所要访问的页⾯不在内存时,会产⽣⼀次缺页中断,此时操作系统会根据页表中的外存地址在外存中找到所缺的⼀页,将其调⼊内存。

缺页本⾝是⼀种中断,与⼀般的中断⼀样,需要经过4个处理步骤: 1. 保护CPU现场 2. 分析中断原因 3. 转⼊缺页中断处理程序进⾏处理 4. 恢复CPU现场,继续执⾏ 但是缺页中断时由于所要访问的页⾯不存在与内存时,有硬件所产⽣的⼀种特殊的中断,因此,与⼀般的中断存在区别: 1. 在指令执⾏期间产⽣和处理缺页中断信号 2. ⼀条指令在执⾏期间,可能产⽣多次缺页中断 3. 缺页中断返回时,执⾏产⽣中断的那⼀条指令,⽽⼀般的中断返回时,执⾏下⼀条指令2. 页⾯置换算法 进程运⾏过程中,如果发⽣缺页中断,⽽此时内存中有没有空闲的物理块是,为了能够把所缺的页⾯装⼊内存,系统必须从内存中选择⼀页调出到磁盘的对换区。

但此时应该把那个页⾯换出,则需要根据⼀定的页⾯置换算法(Page Replacement Algorithm)来确定。

2.1 最佳置换(Optimal, OPT)2.1.1 基本思想 置换以后不再被访问,或者在将来最迟才回被访问的页⾯,缺页中断率最低。

但是该算法需要依据以后各业的使⽤情况,⽽当⼀个进程还未运⾏完成是,很难估计哪⼀个页⾯是以后不再使⽤或在最长时间以后才会⽤到的页⾯。

所以该算法是不能实现的。

但该算法仍然有意义,作为很亮其他算法优劣的⼀个标准。

2.1.2 算例 采⽤固定分配局部置换的策略,嘉定系统为某进程在内存中分配了3个物理块,页⾯访问顺序为2、3、2、1、5、2、4、5、3、2、5、2。

假定系统未采⽤预调页策略,即未事先调⼊任何页⾯。

进程运⾏时,⼀次将2、3、1三个页⾯调⼊内存,发⽣3次缺页中断。

当第⼀次访问页⾯5时,产⽣第4次缺页中断,根据OPT算法,淘汰页⾯1,因为它在以后不会在使⽤了;第5次缺页中断时,淘汰页⾯2,因为它在5、3、2三个页⾯中,是在将来最迟才会被页⾯访问的页⾯。

用先进先出(FIFO)页面调度算法处理缺页中断

用先进先出(FIFO)页面调度算法处理缺页中断

//页面调度算法(FIFO)#include<stdio.h>#define TRUE 1#define FALSE 0#define MAX 7 // 页的最大数#define IN 4 // 在主存中的页数#define count 13 // 指令数量int P[IN]; // 表示已在主存中的页面int k; // 表示P数组中最先进入内存的页的位置typedef struct{int num; // 页号bool pre; // 标志int random; // 主存块号bool revise; // 修改标志int location; // 在磁盘上的位置}Page_Item;Page_Item Page_Record[MAX];// 指令数据结构typedef struct{char oper; // 操作符int Page_Num; // 页号int Unit_Num; // 单元号}Instruction;Instruction IC[count];// 初始化指令和页表void Init(){k=0; // 指向最先进入内存的页// 初始化页表Page_Record[0].num=0;Page_Record[0].pre=TRUE;Page_Record[0].random=5;Page_Record[0].revise=FALSE;Page_Record[0].location=011;Page_Record[1].num=1;Page_Record[1].pre=TRUE;Page_Record[1].random=8;Page_Record[1].revise=FALSE;Page_Record[1].location=012; Page_Record[2].num=2;Page_Record[2].pre=TRUE; Page_Record[2].random=9; Page_Record[2].revise=FALSE; Page_Record[2].location=013;Page_Record[3].num=3;Page_Record[3].pre=TRUE; Page_Record[3].random=1; Page_Record[3].revise=FALSE; Page_Record[3].location=021;Page_Record[4].num=4;Page_Record[4].pre=FALSE; Page_Record[4].random=0; Page_Record[4].revise=FALSE; Page_Record[4].location=022;Page_Record[5].num=5;Page_Record[5].pre=FALSE; Page_Record[5].random=0; Page_Record[5].revise=FALSE; Page_Record[5].location=023;Page_Record[6].num=6;Page_Record[6].pre=FALSE; Page_Record[6].random=0; Page_Record[6].revise=FALSE; Page_Record[6].location=121;// 初始化指令序列IC[0].oper='+';IC[0].Page_Num=0;IC[0].Unit_Num=70;IC[1].oper='+';IC[1].Page_Num=1;IC[1].Unit_Num=50;IC[2].oper='*';IC[2].Page_Num=2;IC[2].Unit_Num=15;IC[3].oper='w';IC[3].Page_Num=3;IC[3].Unit_Num=21;IC[4].oper='r';IC[4].Page_Num=0;IC[4].Unit_Num=56;IC[5].oper='-';IC[5].Page_Num=6;IC[5].Unit_Num=40;IC[6].oper='>';IC[6].Page_Num=4;IC[6].Unit_Num=53;IC[7].oper='+';IC[7].Page_Num=5;IC[7].Unit_Num=23;IC[8].oper='w';IC[8].Page_Num=1;IC[8].Unit_Num=37;IC[9].oper='r';IC[9].Page_Num=2;IC[9].Unit_Num=78;IC[10].oper='+';IC[10].Page_Num=4;IC[10].Unit_Num=1;IC[11].oper='r';IC[11].Page_Num=6;IC[11].Unit_Num=84;IC[12].oper='#';IC[12].Page_Num=0;IC[12].Unit_Num=0;}// 根据FIFO算法替换页,所需要的参数是被调入页的页结构体void replace(Page_Item page){// 被替换的页已经修改了if(TRUE==Page_Record[P[k]].revise){// 修改被调出页的存在标志Page_Record[P[k]].pre=FALSE;// 修改被调出页的修改标志Page_Record[P[k]].revise=FALSE;printf("调出%d页\n",P[k]);}// 将调入页的存在标志修改为TRUEpage.pre=TRUE;// 将被调出页的主存块号赋给调入页的主存块号page.random=Page_Record[P[k]].random;// 将调入页的页号赋给P[k]P[k]=page.num;printf("调入%d页\n",page.num);// 修改k指针k=(k+1)%IN;}// 指令执行过程void excute(){int i=0; // 指向当前正在执行的指令while('#'!=IC[i].oper){printf("执行%c指令,需%d页\n",IC[i].oper,IC[i].Page_Num);// 若正在执行的指令所需的页不在内存中if(FALSE==Page_Record[IC[i].Page_Num].pre){printf("该页不在内存中,请求调入.........\n");// 调用替换函数,调入所需的页replace(Page_Record[IC[i].Page_Num]);}// 修改指令对该页的操作if('+'==IC[i].oper||'*'==IC[i].oper||'-'==IC[i].oper||'>'==IC[i].oper){printf("%c指令修改了%d页\n",IC[i].oper,IC[i].Page_Num);// 修改该页的修改标志Page_Record[IC[i].Page_Num].revise=TRUE;}i++; // 指向下一条指令}for(i=0;i<IN;i++){if(TRUE==Page_Record[P[i]].revise){printf("%d页写回外存!\n",P[i]);}}}void main(){Init();excute();}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

区域,也不知道自己的程序将会被放在内存的什么地方。
. 用户程序的
程序通过链接编辑,产生出相对于“0”计算的地址
逻辑地址空间 0
a 用户
空间,这个地址空间称为是用户程序的“相对地址空
程序的
间”,或“逻辑地址空间”,其地址称为“相对地址”
物理 地址空间
或“逻辑地址”。系统所接受的,就是这种相对于“0”
.编址的这用样户的程程序序。是不可能直接投入运行的,因为程序中 k
LOGO 5
第三章 存储管理 3.1 存储管理综述
正文
主存块号 主存储器
0
0
::
字块0
1
1
::
字块1
标记
Cache
:: ::
字块0 字块1
2
::
字块2
:: ~~ :: ~~
2m-1
::
字块M-1
~~ :: ~~
2c-1
::
字块C-1
M= 2m C = 2c
(1)CACAHE命中:CPU访问的数据或指令已存在于CACHE中。
LOGO 8
第三章 存储管理 3.1 存储管理综述
正文
▪地址定位
就是将进程的逻辑地址变换为内存中的物理地址。 我们需要实现从逻辑地址到物理地址的变换,即实现 从虚地址到实地址的变换。
▪内存扩充 内存“扩充”包含了存储器利用的提高和扩充两方
面的内容。为用户提供比内存物理空间大得多的地址 空间。比较 3.1 存储管理综述
正文
▪内存的保护和共享 内存保护:就是确保多个进程都在各自分配到内 存区域内操作,互不干扰,防止一个进程破坏其他进 程的信息。
内存共享:内存允许同时有多个程序在运行-多 个进程,它们可能调用相同程序段或使用同一数据体, 从而节省内存空间,减少内外存的数据交换,提高系 统的效率
LOGO 9
第三章 存储管理 3.2 固定分区存储管理
正文 • 用户程序的四个处理阶段
1. 编辑阶段
用户
用汇编语言或某高级语言编写程序,是产生用户程 序的编辑阶段,该阶段的结果是得到“源程序”文件。
编辑阶段
2. 翻译阶段
源程序
为了程序的运行,先应使用汇编程序或编译程序对
源程序进行翻译处理,产生出称为“目标程序”的二进
. 正文 例如,假定用户程序A的相对地址空间为0~3KB(0~3071),在程序
中地址为3000的地方,有一条调用子程序(其入口地址为100)的指令:
通过I/O设备访问辅存
远高于前者,一般相差3个 数量级甚至更多(因访问
中涉及到中断、设备驱LO动GO 3
程序以及物理设备的运行)
第三章 存储管理 3.1 存储管理综述
正文
3.1.2 高速缓冲存储器的工作原理
1、高速缓冲存储器 CACHE是一个高速度、小容量的缓冲存储器,存储
CPU最经常访问的指令或数据,一般用SRAM芯片构成, 其全部功能由硬件实现,对程序员是透明的。
翻译阶段
制程序代码,这属于翻译阶段。
3. 链接编辑阶段
把目标程序代码链接装配到一起,
库代码
其他 代码
目标程序 代码
成为一个统一的程序整体。经过链接编辑阶段,
得到用户程序相对于“0”编址的一个完整的二 进制目标程序代码。
链接编辑阶段
4. 装入阶段
装入阶段的任务,是根据内存的使用情况,
为进入内存的程序分配存储区,对程序中的地 址进行调整。
CACHE用于解决 CPU与主存间的速度匹配问题,其 理论依据是程序访问的局部性原理。
LOGO 4
第三章 存储管理 3.1 存储管理综述
正文
为了使主存与cache之间映射,将主存与缓存都分在若 干个块,每个块包含若干个字,并使块的大小相等。
将主存n位地址分为高m位和低b位,缓存地址也分成 高c位和低b位。主存的块数M=2m远大于缓存的块数C=2c 块。
由于缓存的块数远小于主存的块数,一个缓存块不能 唯一、永久地对应一个主存块,每个缓存块需设一个标记, 用来表示当前存放的是哪一个主存块,该标记的内容相当 于主存块的编号(即主存地址的高m位)。
CPU读信息时根据主存地址的低位部分,将主存地址 的高位部分与缓存块的标记进行比较,以判断所读信息是 否在缓存中。
a+k
的地址没有能够反映出它所在存储区的真正存储位置。
物理
逻辑
装入
地址
.2. 地址的重定位
地址
程序被装入到分配给它的内存储区时,必须对每
条指令里所涉及到的逻辑地址进行修改,使它们能够
正确地反映出所在的存储位置。这种把逻辑地址转换成物理地址的过程,称为L地O址GO的 11
“重定位”。
第三章 存储管理 3.2 固定分区存储管理
(2)命中时间:在CACHE命中时的访存时间,它等于CACHE的访问时间。
(3)失效时间:CACHE不命中时因访存而增加的访问时间,它等于对主存的访问
时间和将主存中的数据调入CACHE的时间。
LOGO 6
第三章 存储管理 3.1 存储管理综述
正文
3.1.3 存储管理的功能 ▪内存的分配和回收
当用户提出内存申请时,操作系统按一定策略从表 中选出符合申请者要求的空闲区进行分配,并修改表内 有关项,这称为内存的分配;若某进程执行完毕,需归 还内存空间时,操作系统负责及时收回相关存储空间, 并修改表中有关项,这称为内存的回收。
• 理想中的存储器
– 速度快 – 容量大 – 价格便宜
• 目前无法同 时满足三个 条件
• 多级存储器 结构
LOGO 2
第三章 存储管理 3.1 存储管理综述
正文
寄存器和主存又 叫
“可执行存储器”
可执行 存储器
辅存
计算机对所存信息访问机制 访问所耗时间
进程可在很少的时钟周期使 很少的时钟周期 用一条Load或store指令访 问可执行存储器
第三章 存储管理 3.1 存储管理综述
正文
存储器分类
内存:CPU直接存取,存放正要执行的程序和数据, 访问速度快,价格贵,容量小。
外存:CPU不能直接访问,存放暂时不执行的程序 和数据,访问速度慢,容量大。
存储管理指内存管理
LOGO 1
第三章 存储管理 3.1 存储管理综述
正文
3.1.1 存储器的层次结构
磁盘
可执行程序 代码
装入阶段
程序 地址空间
LOGO 10
第三章 存储管理 3.2 固定分区存储管理
正文
• 3.2.1 地址重定位
.1. 用户程序的两种地址和空间 内存单元的地址称为“绝对地址”或“物理地址”。从任何一个绝对地
.址开始的一段连续的内存空间,被称为“物理地址空间”,或“绝对地址空间内”存 。 在多道程序设计环境下,用户无法事先指定要占用内存的哪个
相关文档
最新文档