操作系统
2021-08-28 16:02:08 0 举报
AI智能生成
操作系统知识总结
作者其他创作
大纲/内容
os作为用户和硬件之间的接口
os作为硬件的总的管理者
os作为对计算机资源的抽象
操作系统的作用
用户独占全机
人工进行输出输出
人工操作系统的方式
增加了缓冲的方式
提高了IO的速度
减小了cpu的空闲时间
脱机输入输出的方式
操作系统发展的过程
连续一批作业处理的方式
IO完成之后才会继续运行CPU效率低下
单道的方式处理系统
多道将不需要的首先放在外存上等带队列之后进行调入
多道程序的资源利用率高,系统的吞吐量比较大
但是平均处理的周期比较长,并且没有交互能力
多道处理系统的方式
分时系统会有多个共享主机
可以顺畅的进行人机交互
及时接收,及时处理的方式
分时系统
实时系统,在操作系统的内部一定时间及时的做出响应
实时系统的方式
操作系统的分类
在一段时间内多个任务轮流执行
并发
多个任务进行并行运算
并行
并发与并行
对于一些临界资源,同一时间只能有一个设备进行访问
如果没有并发也就么有共享的过程,对于一个资源,可以多个设备同时进行访问叫做共享
互斥与共享
一般有一定的顺序,进行任务的顺序管理
同步
异步是随机的不可预知性,在不一定的时候系统就给你塞回来
异步
同步与异步
在时间上进行复用,同一时间多个任务并发进行处理
时分复用
虚拟内存技术,使得内存进行对换增加利用率
空分复用
主要是在逻辑上,进行的改进
虚拟
操作系统中资源分配的最小的单位
进程
操作系统的特点
pcb
进程控制
进程间同步顺序解决问题
进程同步
进程调度算法
进程调度
进程通信的方式
进程通信
处理机的管理工程
主要是处理程序分配的空间的利用率
进行动态的分配过程,动态进行增长,也可以进行移动
和静态分配的过程,从一开始近分配好的
任务是内存的分配
各个用户都在自己所在的内存区域进行运行
也不允许内存进入了操作系统
内存的保护
由逻辑地址映射道物理地址上的关系
由页表和段表来进行实现
地址的映射
由缺页请求申请的过程
还有页面进行置换的过程
内存地址的扩充
储存器的管理功能
在io和内存中间设置了缓冲区来完成速度不匹配的过程
增大了系统的吞吐量
进行缓冲的管理
先查系统设备表
然后找这个设备专有的表
需要设备的控制器
寻找IO通道一次性完成
设备的分配是在根据用户的IO进行分配
进行设备的分配
只要是软件与硬件之间的转化
1.检查指令是否有问题
2.查询设备是否有问题
3.发出io指令让设备进行操作
4.完成用户的中断请求和处理程序
5.进行io通道的申请操作
利用设备的驱动程序
进行设备资源的处理
设备管理的功能
分配在内存与外存之间的请求过程
记录文件的储存区域,对文件资源进行分配和回收功能
文件储存区的功能
线性查询,索引直接找名然后进入下一个物理块
在下一层物理块继续寻找,直到找到文件的位置
建立一个目录,建立查询机构
目录文件进行管理
在外存中导入,可以进行读取导内存中去
或者区往外写入写入进内存
文件的读写管理
防止外存中被非法的破坏进行输入与输出的保护
文件的保护管理
文件的读写和保护过程
文件管理的功能
操作系统的主要功能
微内核只要实现基础的少部分功能
主要进行进线的调度和切换的过程,进程同步等功能也在其中
主要进行进程与线程管理
只有低级的页表组织,页面置换等深层算法不用实现
进行低级的储存器管理
只做简单的处理中断过程调用从中断处理程序
解决陷入问题
中断程序和陷入之间的管理
多次切换可能会影响效率,但是减小切换意味着增加内核部分容量
不足之处:需要进行多次的上下文切换
微内核的实现
操作系统的引论
顺序性
封闭性
可重现性
顺序
不可重现性
间断性
不封闭性
并发执行
进程的顺序与并发执行
进程有PCB进程控制块
进程实体代码段
进程相关数据段
进程是资源分配的最小单位
正在运行的进程就是再运行态
运行态
创建好进程分配好时间片再就绪队列里面排队,等待处理机的调度
时间片用完又变成就绪态了
就绪态
有IO申请,变成阻塞态
阻塞态
进程的三种状态
插入到进程有序的队列中去
创建状态,申请一个空白的进程控制块PCB
准备回收进程控制块,和相关资源
终止状态,再完成任务之后进程结束准备退出
进程的创建状态和终止状态
处理机将活跃的进程挂起,挂起到静止就绪状态,只有将静止挂起激活成为活动就绪才有可能执行
静止就绪
进程被阻塞成为活动阻塞,当IO完成之后还有可能变成就绪态的,但是可能长时间不唤醒,变成了激活状态,所以要将其挂起,变成静止阻塞状态
静止阻塞
互斥临近区
向系统申请资源失败
等待IO
等待操作完成
等待数据到达
等待新的事件发生
等待某个新操作发生
进程阻塞的几种状态,阻塞时一种主动性的行为
wake与signal
进程的阻塞与唤醒
挂起是由活动就绪到静止就绪
或者从活动阻塞变成静止阻塞
激活就是从静止到活动的状态
block与babocast
进程的挂起与激活
进程的五种状态
PCB分配之后系统就会认为进程创建了,系统会给它提供各种服务等
作为进程独立运行的基本单位
PCB可以再中断运行的时候,进行cpu运行信息的保存,再中断完成之后进行恢复
PCB可以实现进程中的间断运行
在内外存,中数据部分和代码段中的指针,是不是有页表
中间有IO设备的登记,文件描述符表的登记
可以实现进程管理的功能
内部包含了进程的调度算法,例如进程中的优先级,完成进程同步的工作
可以实现进程调度
有消息队列,和信号量的区域,可以有指向他们的指针
实现进程通信
PCB进程控制块
线性的顺序方式
链表的方式,就绪的,运行的,阻塞的
索引的方式,线性储存但是索引表是单独拿出来的
PCB组织的方式
间接影响的关系,进程之间无直接同步的关系,可能为对临界区的访问
直接影响的关系,再任务执行的时候要采用一定的顺序
进程同步的基本关系
一段时间只允许一个进程进入访问的区域
如果临界区是空闲无人访问的让进
空闲让进
如果是有其他资源进入访问的时候,就进行了等待
忙则等待
不能一直进行等待,等待只能在有限的时间内
有限等待
如果要等待资源,释放处理机,不能进入忙等的状态
让权等待
原则
临界资源与临界区
资源小于0进程忙等
申请资源wait--
进程中的资源取消忙等
释放资源signal++
整型信号量
资源小于0进程阻塞
如果数量小于0唤醒阻塞队列中的进程
记录型信号量
只有全部都大于0的时候申请才会成功,否则申请失败
申请成功,就全部--
一次性的做两个操作,申请两个资源
and型信号量
有三个量在大于t的时候同时申请和释放d个资源
信号量集的机制
信号量
一组共享的数据结构和一组对共享数据的操作而组成
同一时间只有一个进程进入管程,剩余的在阻塞队列中等待
管程
wait(empty)
wait(mutex)
进行存操作
signal(mutex)
signal(full)
生产者顺序不能调换
wait(full)
进行读操作
signal(empty)
消费者
进行操作
生产者
signal(mutex,empty)
生产者与消费者
连写两个wait(i)
wait(i+1)
就餐
signal(i+1)
siganl(i)
wait(i的筷子,i+1的筷子)
进行就餐
siganl(i+1的筷子,i的筷子)
哲学家就餐问题
wait(rmutex)
if readcount==0 wait(wamutex)
readcount++
signal(rmutex)
获取wait(rmutex)
readcount--
if(readcount==0)signal(wmutex)
读者
wait(wmutex)
写操作
signal(wmutex)
写者
记录型信号量,无限制的读写问题两个锁一个读锁一个写锁reaccount获取有几个读者
可以拆分成两句,是把写都给关闭了
wait(L,1,1,S,1,0)
signal(L,1)
大于RN的时候可以随便申请小于Rn就没发申请了直接关上了
信号集,需要设定读者的数量L上限为RN个
读者与写者问题
经典的同步问题
多个进程在进程内读写,作为一块共享区域,可能可以实现共享数据的更改
共享储存区
两个进程之间进行管道的通信
管道
每个进程有自己的消息队列,或者是用共享信箱的方式
消息传递系统
基于文件socket
基于网络型的socket
本地socket
进程间通信的类型
可能有发送阻塞,接收阻塞
发送不阻塞,接收阻塞
发送不阻塞,接收也不阻塞
send receive
PCB中消息队列的信号量
消息队列的头指针
消息队列的互斥量
获得mutex,写入,释放mutex
后面还有一个signal提示消息到来
发送的原语
wait(接收消息到来)
获取,释放
copybuffer到text中,释放buffer
接收端的原语
消息队列
直接通信的过程
信箱一对一,一对多,多对多等不同种类的信箱
间接通信的过程
进程通信实现的方式
进程间通信
线程实现调度最小的基本单位
独立运行分配
可并发执行
有共享的资源
线程的特点
tcb
tid
寄存器,堆和栈
pwd程序状态字,下一条指令的位置
线程内的储存
调度的基本单位,运行的基本单位
线程具有更高的并发性
进程是资源分配的最小单位,线程在其基础上进行资源分配
独立性,进程之间相互独立,同一个进程中的线程会有共享数据
进程系统开销较大,线程系统开销较小
进程与线程区别与比较
执行状态
就绪状态
阻塞状态
线程的状态
在用户区内,才用轮转时间片来说用户级线程多个对应同一个时间片
用户型线程
在内核区内,是由内核支持的,线程内核中会在内核态进行切换
内核型线程
可以是一对一的,一对多的,多对多的线程资源
交互的线程
线程实现
线程
进程描述与控制
主要长成调度,将作业调入内存,为他们创建进程给予处理
高级调度
主要是进程调度,采用什么样的算法进行调度
中级调度
低级的调度,是调入调出内存,提高资源利用率和吞吐量
低级调度
处理机作为调度的层次
批处理系统是为了完成服务
在多道系统给,是cpu在各个进程中完成切换
要求响应快具有一定的实时性
要求有很高的实时性
实时系统
对于不同的系统有不同的目标
调度的目标都是提高处理机的利用率和系统上的吞吐量
将作业调入内存,先来先服务算法-未能考虑短作业的情况
短作业优先-未能考虑长作业的情况
优先级调度算法-根据不同的优先级进行作业的调度
高响应比的算法-用等待时间+要求服务的事件除以要求服务的时间,响应比越高约可能调度上
作业调度
为了获得最大得cpu使用量得吞吐度-后续继续介绍
进程调度的算法
不同调度层次的算法
保存cpu得信息
按照算法读取进程
把处理权分配给进程
进程调度得信息
pcb保存上下文
进行调度算法计算
进程压入-处理
返回中断位置
进程得处理机制
由抢占得方式和非抢占得方式
时间片轮转得方式
优先级队列,一个优先级等级得时间片
多级队列得方式,没执行完做去到下一级给时间片
对于临界资源得互相占用和抢夺造成了死锁
资源互斥
占有和等待
不可抢夺
环路等待
产生死锁得条件
实现预防得方式,破环产生得条件
预防死锁
避免时动态检测-银行家算法
避免死锁
死锁检测环路等待图
检测死锁
解除死锁-进行环路得拆解
解除死锁
处理死锁方法
释放资源,才能申请或者从一开始就把所有得资源申请
破环占有和等待
规定可以按照优先级进行抢夺
破环不可抢夺
将设备按照一定得顺序申请和释放
破环环路等待
先分配-在判断时否会进入不安全得状态
如果进入不安全状态,就不会提供
采用银行家算法
拿下一条线,如果资源都能慢慢解除下来得话就可以
画资源分配图
检测和解除
死锁概述
处理机调度与死锁
处理机
cpu
少量得临时信息
寄存器
内存区域临界主要区域得
高速缓存
主要内存区
主存
与磁盘进行对换到
磁盘缓存
外部得储存介质
硬盘
可移动硬盘U盘
可移动介质
储存器得多级启动模式
绝对地址装入
静态重定位连接,逻辑地址不等于物理地址,这时候就分配内存了
可重定位得装
动态链接
运行时重定位
程序得装入
单道进行分区-只装入一部分
单一连续分配得方法
将内存固定划分为很多长度分,每个程序进去找
固定内存分配得方法
将剩余内存做成一个双向链表,指针位是剩余大小
动态内存分配得方法
连续性的内存分配
第一次进行查找合适就进行分配
首次适应算法
循环找最适应得算法
循环首次适应得算法
每次都要最合适得切割
最好分配得算法
每次都拿最大得切割
最坏分配的算法
基于顺序搜索得分区分配算法
都是按分区大小分得链表或者索引
基于索引搜索得分区分配算法
1.紧凑算法
2.动态重定位
基于动态可重定位得算法
回收和前后进行合并
回收连续内存
见下方得
离散型得内存分配
装入程序时得内存分配
就绪态换入,阻塞得换出
整体进程对换
缺页得置换回来
页面置换对换
多道程序下的对换技术将要使用得换入,将不使用得换出
对换
逻辑页面,物理上得物理块
两级页号和页内偏移
地址机构
分段得管理方法
在内存中,有页号和物理块号,外加控制器,是页表长度和页表地址
可以判断页号是否大于长度,大于长度会造成越界中断
页表
快表,是在高速缓存中之间有页号和物理地址得,每次查询由于局部性原理都会更新,先找快表,两次进入内存
可以有两级页表或者多级页表,只是页表是连续分布得,但是不会减少内存,减少内存可能会在虚拟内存中使用
分页式得内存分区分配方式
可以有信息保护,动态增长等,也是两次进入内存
地址是段号,加段内地址
内部有控制寄存器内部是段表长和段地址
段表是有段号,有段长还有段内首地址
分段得地址变换方式
首先先查段表长度,如果段号大于段表长度就越界
之后区查段表看段长,如果段长小于段内偏移就第二次越界
两次越界得查询方法
分页是用户不可见得,分段式程序设计大多是可见得
分页地址式一维的主要是,只有页号和页内偏移
分段式二维的有段号,还有段内偏移
由于是用户设计的是可重用的,实现了对数据的保护和多次利用
分段和分页区别
分段式内存分区分配
地址的结构是段号,页号,页内偏移量,可能需要三次访问内存
段表中有段号,页表的长度,页表的地址
页表中有页号,和物理块地址
相加页内偏移成为三维的数据结构
段页是三位的
段页式分区分配
离散得内存分区分配方式
储存器管理
替换头文件和宏
预定义与宏替换
生成汇编文件.o
编译
生成二进制文件
汇编
动态库,使用时查找
静态库,在编译时就已经加入运行速度快
I头文件路径-ll库文件名称-L库文件的路径
链接动态库,静态库生成可执行程序
链接
gcc编译制作
编译操作指令
原目标:依赖项
makefile
将一个新的文件描述符,赋值与旧的相等
如果开启就关闭,如果没开启就直接开启赋值
dup/dup2
进行文件阻塞,非阻塞设置
fcntl
打开读写关闭
opdir,readdir,closedir
文件和目录操作
pid>0父进程
pid==0子进程
创建子进程回收子进程
wait回收一个
waitpid回收指定进程或者-1全部子进程
回收进程阻塞等待
fork,wait,waitpid
执行之后无法返回原来的进程部分
代码段何数据部分进行了替换
execl族
父进程还活着,子进程已经死了,但是父进程没有完成对子进程的回收
可以杀死父进程,利用init进程进行回收
僵尸进程
子进程,还没有退出,父进程就已经死了
init进程自动进行回收
孤儿进程
僵尸进程,孤儿进程
pid
文件fd表
cpu的状态,处理机的上下文
进程的调度的方式
未决信号集和阻塞信号集
内核态的基本信息
pcb进程控制块
经过输入输出缓冲区
进程间通信必须经过内核区
父进程关闭读端
子进程关闭写端
默认两个端口的时阻塞的
pipe
两个进程轮流进行读行为和写行为
fifo交换数据,在fifo中的数据映射成一个文件
命名管道fifio
mmap的权限应该,小于open文件的权限
创建一个文件,mmap映射成一个内存区域
共享内存区mmap
先屏蔽signchid,最后注册完之后使用一个信号循环进行回收
注册信号处理函数sigaction
信号,信号量
socket本地套接字
cirl+c
signint
子进程回收需要
signchid
不能屏蔽
signkill
signal
kill加信号代表数字
kill
产生信号或者定时器
about/raise/alarm
未决信号集,时为确定的信号,先在阻塞中加以判断,如果阻塞就不变
如果不阻塞,使用中断处理函数进行处理
未决信号集,与阻塞信号集
注册handel函数和参数回调函数,当信号产生时进行处理
信号捕捉函数signaction
信号
不受终端控制,不受用户组控制的进程
守护进程
父进程fork子进程
父进程死去,子进程发起会话
改变工作目录
关闭相应的文件描述符
创建步骤
创建多线程
pthread——create
多线程回收
join
外部设置detach分离属性,或者set设置属性
多线程的创建与回收
守护进程与线程
pthread_mutex
condition
互斥量,条件变量
pthread_wlock
读写锁
thread_condition_wait
thread_condition_signal
线程同步
Linux系统编程
图形化的窗口
字符型的字符串
shell进行批处理
命令行窗口
用户接口
子主题
用户态与内核态
一般命令时用户态之间的
特权命令使用了系统调用
一般命令与特权命令
运行于调度在不同的状态下
如果是高优先级的时候可能被阻塞返回别的调用中去
嵌套调用可能使用六层
是内核与用户之间的转换
先运行用户函数,进行中断,
系统调用入口表,进入系统调用状态
进行系统处理
复原处理cpu状态,回到子进程中的状态
系统调用的实现
进程控制类型
文件操作的类型
系统调用的类型
系统调用
用户
标准程序
系统库函数
自动调用系统调用
中断机制进行中断
操作系统的接口api
文件的逻辑结构
文件的物理结构
文件的结构
按顺序放置的对于定长和不定长不太方便管理
顺序文件
按照索引放置的,索引文件指向文件的位置,可以有多个字段,多个索引表
索引文件
放置是按照顺序文件的地址放置的,但是索引是单独的,指向一段顺序的坐标位置
有点像mysql的b+树索引
顺序索引文件
文件的结构分类
字符设备文件,块设备文件,链接文件,socket文件,目录文件,普通文件,pipe文件
文件的类型
目录线性的有先找主文件夹
找到主文件夹下的块索引,然后找到块
块下找下一级的索引的位置
找到块之后进行文件的查找
使用线性的目录方法
o1直接进行查找
使用hash之间查找的方法
文件目录的管理
只是建一个软的快捷方式,在使用的时候返回系统调用,系统回调区寻找所给的地址
软链接
直接两个链接指向磁盘的两个文件,只用当引用计数为零的时候文件才算是真的没有了
硬链接
文件的链接
存储看文件的相关信息,磁盘上的物理位置,索引中的逻辑位置等
文件控制块
文件管理
用户层的软件
设备无关性的软件
设备驱动的软件
中断程序
IO系统的层次
IO设备时硬件控制的,在系统调用时需要进行转化,通过IO控制器进行转化
直接IO的设备
终端的设备
IO设备的类型
进行命令的设别
转化命令
地址的识别
缓冲区的实现
错误处理,检查差错控制
IO控制器的作用
CPU与IO控制器之间的接口
内部的IO逻辑转化
IO控制器与硬件之间的接口
IO控制器的实现
IO设备与IO设备控制器
IO通道是cpu调用的设备程序可以简单的进行读写
子通道连接着IO设备控制器
轮询进行cpu传输
IO通道可以简单的分成字节多路的通道
进行一个数组的传递,一段时间内,只能有一段的数组进行传递
数组选择的通道
多段数组象字节多路的方式一样,进行传递,一次传递多路数组
数组多路的通道
有一个通道只能和指定的控制器相连,可以用互相连接的方式,使多个通道和多个控制器相连接
瓶颈问题
IO通道
在中断执行的过程中-有更高优先级的来就进行中断
有嵌套中断的过程
在屏蔽的过程中,使用屏蔽中断信号当中断处理完成时才加入中断
屏蔽中断的过程
IO或外部程序进行中断过程
中断
陷入进行陷入程序的处理
cpu自身的中断问题
陷入
对于不同的中断,有不同的中断处理程序
中断向量表
中断先进行用户态和内核态的转变
保存处理机现场到中断栈
进行中断处理
恢复中断的过程
恢复到原来的中断程序或者时嵌套中断
完成可能驱动设备向软件进行报告
中断的处理过程
中断机构与中断响应
io与控制器之间的通信
检查IO状态
响应IO指令
处理中断请求
设备驱动程序的功能
控制参数的转化
进行服务的校验
检查设备的状态
传输数据
启动IO设备
设备的运行过程
轮询,发出io请求cpu忙等待,等待结束后才能回来
经过IO-CPU-内存的读写操作
CPU不能干别的一次只能传输一个块
可轮询的IO方式
中断在发出IO请求的时候Cup可以干别的
一次一个块,但是在等待io结束的时间里cpu可以干别的
中断的IO方式
在发出申请的时候异步给DMA进行一次一个块的读写
在后面io设备好的之间进行返回,推给主程序
IO直接给内存了
缺点时一次只能进行一个连续数据块的读写
DMA异步方式
创建多个通道,可以进行多个数据块的编写
对多多个数据块直接发出IO命令
通道控制器,记录操作自动读写直到把操作都做完为止
IO通道的方式
对IO的控制方式
设备驱动程序
将独立的物理设备名转化成逻辑上的设备名
设计与设备的共有接口
进行缓冲区的分配
实现差错控制
进行设备的分配与释放
在设备层面上提供无关的设备物理块
与设备无关主要功能
在这儿找固定DCT设备
在系统上的全部设备进行记录
物理设备名查询的系统设备表SDT
记录每个设备的使用个数
设备的控制表DCT
记录设备控制器的表
分配设备控制器表COCT
记录通道的分配表
分配通道表CHCT
系统上的设备结构
现在SDT的系统设备表上查找DCT
在DCT开始查找所连接的控制器的情况
控制器拿到之后查询io通道
设备分配的流程
在设备设备中查找找到物理设备,还同时找到,所属的物理设备的驱动程序的入口
可以多个用户使用一个LUT表,这样容易产生冲突
也可以一个用户使用一个LUT表
从逻辑设备表到物理设备表的实现LUT
与设备无关的软件
只有在小部分在用户层面有假脱机系统和一些库函数提供接口
使用守护进程,不受终端控制的打印机程序
打印机的守护进程,然后再假脱机文件不同的进程不断写入假脱机文件中,打印机进程不断执行
用户层面的io软件
解决IO速度与cpu处理机速度不匹配的问题
减少cpu的中断次数,一次性的录入多个数据
解决数据之间粒度不匹配的问题,在缓冲区预留区域
引入缓冲区的目的
单端输入-单端输出
单缓冲区
可以同时读写一段输入一段输出
双缓冲区
当前cpu正在处理的
下一个应该插入的
下一个应该读取的
采用两个指针或者三个指针
可能有同步问题
环形缓冲区
取下一个空白的,读取加入输出队列
从内存中读取
cpu进入缓冲池读取,处理完加入空白块
读取处理
拿出一个缓冲区,开始写写完加入输出队列中去
从cpu写入
输出到内存中,加入空白块之中
写完写到内存中去
四个缓冲区
空白缓冲队列
输入缓冲队列
输出缓冲队列
三个缓冲队列
缓冲池
缓冲区的分类
缓冲区管理
IO处理
一次性的装入,驻留在内存中
常规内存器
是分段装入的,时常进行对换的方式,而且是虚拟的从逻辑上增加内存的过程
虚拟内存器
是从逻辑上进行扩大的,运用把程序分段装入,并在内存中多次进行对换来实现的
虚拟内存的定义
常规内存器与虚拟内存器
程序的执行中总是从局部中开始的
程序从一个方面调用到另一个方面
程序中有许多的循环结构
说明在一段时间内,程序都是在一个部分进行执行的(时间,空间)
对数组的处理
局部性原理
是由分页请求系统和分段请求系统来实现完成的
在请求调入少部分页的,然后再进行页面置换而进行的
定义
主要在页表上加了状态位,访问字段,修改字段,外存地址
请求分页的页表
再调页面时缺少页面了,产生了缺页中断
产生一个中断信号
缺页中断和处理机中断的不同,普通的是在处理这条结束后再去处理中断请求
缺页中断时发现页面不再立马进行处理,而且可能会产生多次缺页中断,要不断的对缺页中断进行处理,对他们进行保存
进行中断的中断机构
大于页标号时越界的
判断是否页号大于页表号
快表由直接就有地址了
先查看块表
页表中查看地址
再查看页表
如果在的话就取出来
判断是否页在内存中
是满的就会页面置换
不在的时候,查看是否页是否时满的
页面置换算法换出一页或者多页
启动io线程硬件支持
修改页表和块表
进行地址变换的机构
硬件支持
固定的分配一定的页数,每次换入可变的一部分的页面,总页面固定
固定分配与可变配置的方式
进程的页面的数量时可变的,可以从全局中加入内存,也可以在别的进程中抢夺内存
可变分配与全局配置的方式
这个不影响其他进程,并不会使全局中的任意一页
上面时从全局中进行内存块的分配的
可变分配与局部配置的方式
在缺页时要调页装入内存
不太合理的平均分配
平均分配的算法
直接按比例进行分配
按比例分配的算法
确保高优先级不会缺页
按照优先级进行分配
物理块的分配算法
预测调入的页数,进行预测调入页面的操作,一次调入多页
预定调入的策略
请求每次进行页面调入,每次调入一个页面
请求调入页面的策略
何时进行页面调度
当系统对换区有足够的空间,可以使用对换区去调入一页
从对换区调入
对换去没有足够的页面-从文件区选择一个页面调入
从文件去调入
对于没由使用过的使在文件区调入的,使用过的就在对换区调入
UNIX的方式调入
从何处进行页面调度
页面调入的策略
当页面未在内存中的时候,状态为使0,就发生缺页中断
中断保存处理及的状态,然后启动中断处理程序
页面是否,已满,已满采用页面置换算法
标志为修改
换入之后进行
修改进入页表和快表中
页面调入的过程
请求调页的方式
页面置换的方法
软件支持
分页请求系统
在请求调入少部分段的,然后再进行段置换而进行的
请求分段的段表
请求调段的方式
段面置换的方法
分段请求系统
虚拟内存器的实现方法
一段时间内申请页面失败的除以总和
页面大小,页面约小缺页率可能越高
进程所分配的物理块数目,数目越多,进程的缺页率越小
页面置换算法-页面置换算法的好坏页严重的影响了其表现
程序的固有属性-受否是连续的装入的-局部化约高越能程序的缺页率越低
缺页的几个影响因素
缺页率
未来最远,或者不会被使用的进行页面置换
主要是理论上的最佳页面算法
最佳页面置换算法
不太合理,最先进入的最后出去
先进先出的页面算法
向后位运算一步
可以是位运算
将取出的取出来压入,栈底的就是LRU
双向链表的栈
最久未使用的换出去
一段时间最少使用算法
最久未使用的LRU算法
在页表中查看访问位,如果访问位是0的话就换回去
一直循环出去
简单的clock的置换
先查修改位,修改位是0并且访问位是0的话就直接移除
然后是访问位是0修改位是1的页面,flush到内存中然后进行淘汰
在这个过程中将访问位为1的全部恢复为0
如果不行循环从新来
有修改位和访问位
改进的clock置换
clock置换算法
程序在缺页率很高的情况下会经常的对页面进行换入换出,会出现抖动的情况,实际cpu的运行效率很低
工作集-在程序运行的时间内所有页面的集合就是工作集
最大程度的减小了缺页的范围
防止其他进程在取走物理块
采用局部配置的策略
算法加入到处理机中
让平均缺页时间和平均缺页服务时间相等
调节缺页率L==S
减少多道程序的数目
选择暂停一些程序
预防抖动的方法
程序抖动与工作集的概念
页面的置换算法--虚拟内存的实现过程之一
操作系统
0 条评论
下一页