存储管理——现代操作系统学习笔记

来源:互联网 发布:广告公司源码 编辑:程序博客网 时间:2024/06/04 20:05

前言:操作系统需要对内存创建抽象模型以及管理内存,让程序员更方便的使用内存。

一、无内存抽象


在很久以前,程序员都直接访问物理内存,例如:mov r1,1000。


二、抽象:地址空间


1、概念:程序在内存可能会互相影响,甚至修改操作系统导致程序无法正常运行。所以,系统设计人员必须解决两个问题:保护以及重定位。因此将内存抽象为地址空间,地址空间是一个进程用于寻址内存的一套地址集合,进程与进程之间的地址空间相互独立。


2、基址与界限寄存器:每一个CPU配置一个基址寄存器和一个界限寄存器,每个进程拥有独自的寄存器值。每一个进程访问内存取出指令的时候,CPU把逻辑地址发送给地址总线前会与基址相加,然后检查是否大于界限寄存器的值,如果大于它,会发出错误中断执行。


3、交换技术:将所有进程一直保存在内存中,会极大的浪费内存空间。解决内存超载,最简单的策略是交换技术。将一个进程完整调入内存,使它运行一段时间后放回磁盘,空闲进程主要存储在磁盘上。


a.概念

ABCD表示四个进程,随着进程的运行,进程在磁盘与内存之间交换

固定分配:每个进程需要的内存空间不随时间变化 

动态分配:进程随着时间增长,可能之增长数据段,也有可能数据段和堆栈段一起增长。


b.动态管理

①使用位图的存储管理

这种方法,内存会被划分成规定大小的内存单元,每个单元对应位图的一位。0表示占用,1表示空闲(或者相反)。内存大小一定,位图大小与分配单元成反比。如果,进程的大小不是分配单元的整数倍,那么在最后一个分配单元中会有一定的内存被浪费。

②使用链表的存储管理

维护一个内存段以及空闲段的链表(双链表更好),链表的每个节点包含以下内容:空闲区或进程的指示标志,起始地址,长度以及下一个节点的地址。

实例:

X进程撤销时,它会检查它前后两个节点,决定是以何种方式进行合并。在a中,节点数目不变,但是需要把X进程内存空间的所在节点的P改为H。

分配算法:当按照地址顺序在链表中存放进程和空闲区时,有几种算法从磁盘换入进程。

a.首次适配法

b.下次适配法

c.最佳适配法

d.最差适配法

...

三、虚拟内存技术

前言:程序具有局部性原则,每个程序拥有自己的地址空间,这些空间被分割成多个块,每一块称为一个页或者页面。每一页都有连续的地址,这些页被映射到物理内存。当程序引用到在物理空间的地址时,指令立即执行。如果引用到的地址不在物理空间时,那么由操作系统将缺失的页装入内存。

1、分页(一维线性,通过取模和求整可以得到地址)


a.当程序执行mov reg, 1000时,他把地址为1000的内存单元的内容复制到寄存器中。


b.由程序产生的地址为虚拟地址,他们构成了一个虚拟地址空间。在有虚拟内存的计算机上,这个地址被发送到内存管理单元中(MMU),MMU把虚拟地址映射为物理内存地址。

示例:一台计算机可以产生16位地址,地址范围为0到64k,且这些地址为虚拟地址。然后计算机只有32k的物理内存。因此,可以编写64k的程序,但是磁盘需要足够大的空间保存64k程序的完整副本。


c.虚拟地址空间按照固定大小划分为称为页面的若干单元,物理内存中对应的二单元称为页框(page frame),页面大小与页框大小通常一样大。

d.如果MMU发现该页面没有被映射,那么CPU陷入到操作系统,这个陷阱称为缺页中断。


e.页表

①作为一种简单的实现,虚拟地址到物理地址可以概括如下:虚拟地址被分为虚拟页号和偏移量两部分

②页表相当于一个函数,,参数是虚拟页号,结果是页框号。

③页表项示例


2、分段(二维,必须要基址和偏移量才能得到地址)

a、分段概念

在分段存储管理方式中,作业的地址空间被划分成为多个段。逻辑地址由段名和段内地址组成。

b、段表

系统为每个进程简历一张段映射表,表项记录了该段在内存中的基址和段长度

3、段页式存储管理(三维,段号+段内页号+页内地址)

a、先将用户程序分段,然后把每个段划分成若干页,并为每个段赋名。

b、在这里,段表记录的是页表始址和页表长度·

c、获取一条指令需要三次访问内存

①访问内存中的段表,获得页表始址

②访问内存中的页表,获得物理块号,物理块号与页内地址形成物理地址

③读取内存中的数据

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 微信支付打款认证超时怎么办 微信上买东西钱付款了货没发怎么办 掌上道聚城王者轮回分解错了怎么办 鞋子脱胶了怎么办别傻傻用胶水粘 斗鱼主播积分太低无法收礼物怎么办 信誉积分没有了什么也玩不了怎么办 忘记自己电信卡号的密码怎么办 淘宝卖出去东西的钱被冻结了怎么办 手机店铺搞抽奖活动上当了怎么办 网易云音乐上传作品编辑失败怎么办 手机连了wifi后自动扣费怎么办 店铺被低价拍了一部分商品该怎么办 淘宝买家退货快递单号填错了怎么办 卖家同意退款了买家不退货怎么办 淘宝代购衣服有破损不给退怎么办 网上购飞机票身份证号写错了怎么办 交易猫买家把我号清了怎么办 光大普卡额度4万封顶了怎么办 天天特价通过后价格设置错误怎么办 苏宁易购不小心点了免密支付怎么办 别人知道自己京东的账号密码怎么办 oppo手机刷机要锁屏密码怎么办 在苏宁易购退款成功又收到货怎么办 今日头条转发出现未安装微信怎么办 打开手机后自动弹出广告怎么办去除 朋友圈发广告被腾讯屏蔽了怎么办 新商盟手机订烟登录密码忘了怎么办 手机版战神斯巴达幽灵经常崩怎么办 代购买的东西被海关扣了怎么办 托朋友代购给了钱联系不上人怎么办 签了合同被加盟商骗了怎么办 百度云盘下载时本地空间不足怎么办 百度云盘隐私空间没密码忘了怎么办 华为云空间的帐号密码忘记了怎么办 快递被快递公司弄丢了怎么办 快递到了人不在那个地方了怎么办 微信被骗了1千多怎么办 客户货已经用啦要求退款退货怎么办 网购收到别人退货的东西怎么办 好省输入订单编号查不到订单怎么办 快递没有当面验收后发现损坏怎么办