赞
踩
操作系统实验导航
实验一:银行家算法 https://blog.csdn.net/weixin_46291251/article/details/115384510
实验二:多级队列调度和多级反馈队列调度算法 https://blog.csdn.net/weixin_46291251/article/details/115530582
实验三:动态分区式内存管理 https://blog.csdn.net/weixin_46291251/article/details/115772341
实验四:Linux下多进程通信 https://blog.csdn.net/weixin_46291251/article/details/116274665
实验五:进程通信的三种方式 https://blog.csdn.net/weixin_46291251/article/details/116301250
实验六:Linux文件系统实验 https://blog.csdn.net/weixin_46291251/article/details/116423798
实验七:自制简单U盘引导程序 https://blog.csdn.net/weixin_46291251/article/details/116427629
实验八:磁盘调度算法 https://blog.csdn.net/weixin_46291251/article/details/116431907
实验九:请求分页系统中的置换算法 https://blog.csdn.net/weixin_46291251/article/details/116443021
学习笔记:操作系统复习笔记 https://blog.csdn.net/weixin_46291251/article/details/117086851
文章是在有道云上面写的,搬过还没来得及改格式,原文链接
_by Cheney
一:绪论
二:操作系统的结构和硬件支持
►处理机状态:
►中断:
三:操作系统的用户接口
►作业:
►系统调用:
四:进程及进程管理:★★★
►并发处理:
►进程:
► 线程
►进程互斥和同步
互斥:
同步
锁和上锁、开锁操作
►典型问题:★★
►进程通信
五:资源分配与调度
►资源管理概述
►死锁:
六:处理机调度
►作业调度
►进程调度
七:主存管理:★★★
►分区存储管理
►页式管理概述
►段式及段页式存储管理(了解)
八:输入∕输出管理
►设备管理:
►缓冲技术
►设备分配
SPOOLING系统
►I/O控制
九:文件系统:
►文件组织的结构:
►磁盘调度算法
十:一些题目
►虚拟存储技术不能与( 分区管理 )配合使用原因
►进程有不同的定义,比较典型的定义有:
►简述程序与进程
►简述进程与线程
►中断处理的流程
►何为死锁?产生条件?如何避免\处理?
►用信号量(P、V操作)实现进程互斥与同步
题:多进程推进次序问题:
题:共享缓冲区的合作进程的同步
题:生产者——消费者问题:
►银行家算法避免死锁求安全序列
►作业调度算法求周转时间
►分区存储(放置算法)求内存序列
►页面调度(淘汰算法)求缺页中断次数
►Linux文件系统相关计算
►磁盘读取文件时间计算
►其它:
一:绪论
二:操作系统的结构和硬件支持
三:操作系统的用户接口
►作业:
计算机系统按指定步骤对初始数据进行处理并得到计算结果的加工工作
作业处理步骤:
a.编辑:
b.编译:
c.连接:
i.静态连接
ii.动态链接
d.运行:
关于连接
a.静态连接:编译后,生成一个可重定位的目标模块,并产生内部符号表和外部调用表,供连接程序 (Link)使用
缺点:将所需的外部函数链接到目标文件中形成 为一个可执行文件。若多个应用程序都调用了同一个库中的外部函数,那么,应用程序的目标文件中都包含了这个外部函数对应的代码。
b.动态链接 :在应用程序中需要调用外部函数的地方记录要使用的外部函数名和引用入口号, 形成函数调用链表,需要DLL (动态链接库)
当 Windows的装载程序将应用程序和DLL装入主存后,装载程序会遍历函数调用链表,将DLL中函数在主存的入口 (段:偏移)填入链表中的每个结点
►系统调用:
四:进程及进程管理:★★★
►并发处理:
顺序程序的特点:
顺序性:处理机的操作严格按照程序所规定的顺序
封闭性:程序一旦开始执行,其计算结果不受外界因素的影响
可再现性:程序执行的结果与它的执行速度无关(即与时间无关),而只与初始条件有关
并发的含义:若干个程序段同时在系统中运行,这些程序段的执行在时间上是重叠的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重叠是很小的一部分,也称这几个程序段是并发执行的
并发程序的特点:
失去程序的封闭性和可再现性
►进程:
定义:一个程序在给定活动空间和初始环境下,在一个处理机上的执行过程
进程与程序的区别:★★
程序是静态的概念;进程是动态的概念
进程是一个独立运行的活动单位
进程是竞争系统资源的基本单位
一个程序可以对应多个进程;一个进程至少包含一个程序。
注意:一个程序可以对应多个进程,一个进程也可以对应多个程序。
状态:运行、等待、就绪★★
任一时刻处于就绪的进程最多是 n-1 个,最少是 0 个。
进程的组成:
a.PCB(进程控制块)
b.程序段(可为其他进程共享)
c.数据段
► 线程
概述:
►进程互斥和同步
互斥:
同步
锁和上锁、开锁操作
信号量和P、V操作
►典型问题:★★
见文章最后一部分
►进程通信
类型:
1、共享存储器系统
基于共享数据结构的通信方式:
共享内存方式:
2、消息传递系统
直接通信:(消息缓冲通信)
间接通信:(信箱通信)
3、管道通信 (共享文件方式)
管道,是指用于连接一个读进程和一个写进程的文件
写进程以字符流的形式将大量数据送入管道(FIFO)
具体实现:
五:资源分配与调度
►资源管理概述
►死锁:
概念:在两个或多个并发进程中,如果每个进程持有某种资源而又都等待着别的进程释放它或它们现在保持着的资源,否则就不能向前推进。此时,称这一组进程产生了死锁。
产生原因:
系统资源不足
进程推进顺序非法
产生死锁的必要条件★
a.互斥条件(资源独占):资源是非共享的,即为临界资源
b.不剥夺条件:
c.部分分配(保持申请):等待一新资源的同时,进程继续占用已分配到的资源
d.环路条件(循环等待):存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中下一个进程所请求
死锁 VS 饥饿:★
死锁 系统资源不足 至少两个进程 全部进程处于等待状态 都是由于竞争资源而引起的 可以检测
饥饿 资源分配不平衡引起 可能只有一个 忙等(运行或就绪态)的进程也可能被饿死 无法检测
解决死锁问题的策略
a.死锁预防(静态)
破坏环路等待
b.死锁避免(动态)
i.有序资源分配方法
ii.银行家算法
c.死锁恢复
剥夺资源
银行家算法:
见文章最后
同步机制的应用:(Linux)
a.原子操作:要不全部执行,要不全部不执行,是最小的执行单位
b.互斥锁(mutex):某一进程正在访问某一存储区域时,就不允许其他进程来读出或者修改存储区的内容
c.自旋锁(spin_lock):与互斥锁类似,区别在于,对于互斥锁而言,如果资源已经被占用,其它的资源申请进程只能进入sleep状态。但是自旋锁不会引起调用者sleep,如果自旋锁已经被别的执行单元保持,调用者就一直循环在等待该自旋锁的保持者是否释放该锁。
d.信号量(semaphore):信号量的本质也是一个计数器,用来记录对某个资源(如共享内存)的存取状况。用来协调不同进程间的数据对象,最主要的应用是共享内存方式的进程间通信。
e.读写锁(rw_lock):写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者
六:处理机调度
►作业调度
—— 宏观调度(决定辅存上的程序何时变为进程)
作业的状态:(后备、执行、完成)
执行状态又分为:运行、就绪、等待。
必考:状态变迁图★★
注意:作业调度选中一个作业并把它装入主存,就为该作业创建一个进程,这个进程的初始状态为就绪状态
周转时间:一个作业提交给计算机系统到该作业的结果返回给用户所需要的时间(等待+运行)。
带权周转时间:一个作业的周转时间与其运行时间的比值 (了解)
常用的作业调度算法 :
i.先来先服务调度算法(FCFS)
ii.短作业优先调度算法
iii.响应比高者优先(响应比=响应时间/执行时间 =1+作业等待时间/执行时间)
►进程调度
—— 微观调度(决定主存上的进程何时获得处理机)
调度策略:
优先调度
先来先服务
调度的方式:剥夺式、非剥夺方式
进程调度算法:
a.进程优先数调度算法
i.静态优先数:(确定标准:要用的资源、估计运行时间、类型)
ii.动态优先数:(确定方法:使用CPU超过一定数值时,降低优先数;I/O操作后,增加优先数;等待时间超过一定数值时,提高优先数)
b.循环轮转(时间片轮转)调度算法
i.简单循环轮转
ii.可变时间片轮转调度
iii.多重时间片循环调度
c.处理机多级调度
调度用的进程状态变迁图:
注意与作业变迁图的区别与联系:整个进程调度只是作业调度的一步
七:主存管理:★★★
主存共享方式
a.大小不等的区域:(分区、段式存储管理)
b.大小相等的区域:(页式存储管理)
c.二者结合(段页式存储管理)
C程序的内存分布:
代码段 (Text segment):可共享、只读
初始化数据段 (Initialized data segment):全局、静态变量
未初始化数据段 (Uninitialized data segment):
堆区 (Heap):malloc的来源
栈区 (Stack)):自动变量、每次函数调用时保存的信息上下文环境等
栈与堆是相互毗邻的,并且生长方向相反;当栈指针触及到堆指针位置,意味着栈空间已经被耗尽
地址映射:(将程序地址空间中使用的逻辑地址变换成主存中的物理地址的过程)
a.编写或编译时确定虚、实地址之间的对应关系
b.静态地址映射 :作业装入时确定地址映射关系
(需要软件重定位装入程序、依赖CPU、不灵活)
c.动态地址映射 :程序运行时确定地址映射关系
(需要硬件重定位寄存器、不依赖CPU、灵活快速)
主存分配
a.构造分配用的数据结构
主存资源信息块:等待队列;空闲区队列;主存分配程序;
b.制定策略
总体分配策略 —— 在众多个请求者中选择一个请求者的原则
放置策略 —— 在可用资源中,选择一个空闲区的原则
调入策略 —— 决定信息装入主存的时机
预调策略:预先将信息调入主存
请调策略:当需要信息时,将信息调入主存
淘汰策略 ——在主存中没有可用的空闲区(对某一作业而言)时,决定哪些信息从主存中移走,即确定淘汰已占用的内存区的原则。
c.实施主存分配与回收
主存扩充(虚拟内存)
实现方法: 虚拟存储器
实现虚拟存储器的物质基础
i.有相当容量的辅存
ii.有一定容量的主存
iii.地址变换机构
虚拟存储器的最大容量由计算机的地址结构决定
►分区存储管理
(上机实验)
►页式管理概述
基本概念
页面:程序的地址空间被等分成大小相等的片,称为页面,又称为虚页。
主存块:主存被等分成大小相等的片,称为主存块,又称为实页。
页表:页与内存块之间对应关系的地址变换的机构称为页面映像表,简称页表。
页式地址变换
虚地址结构:页面大小为xkb = 1*2((10+k(1/2))- 1)
虚地址为 M位,页面大小位 Nkb时 虚地址长度为32位,页面大小为4KB时 虚地址长度为16位,页面大小为1KB时
页号P的位数标识了一共有多少页,即页表中有多少个表项
页内位移W的位数表示一页有多大
页式地址变换步骤:
1.CPU给出操作数地址(为2500) ;
2.由分页机构自动地把逻辑地址分为两部分,得到页号p和页内相对位移w (p =2, w =452);
3.根据页表始址寄存器指示的页表始地址,以页号为索引,找到第2页所对应的块号(为7) ;
4.将块号b和页内位移量w拼接在一起,就形成了访问 主存的物理地址 (7*1024+452=7620)
►段式及段页式存储管理(了解)
八:输入∕输出管理
►设备管理:
►缓冲技术
►设备分配
SPOOLING系统
概念: SPOOLING系统提供外围设备同时联机操作的功能。即:将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理I/O设备
实际是一种空间换取时间的技术
实现SPOOLING系统的基础:
a.大容量的辅存空间(辅存上需开辟输入井和输出井)
b.硬件基础(通道装置、中断系统)
c.数据结构(预输入表、缓输出表:描述辅存输入井和输出井的状态变化)
过程:
i.预输入:作业需要数据前,OS已将所需数据预先输入到辅存输入井存放。当作业 (或进程) 需要数据时,可直接从辅存中读入主存
ii.缓输出:作业执行时,将输出数据写入辅存输出井中。当作业 (或进程) 执行完毕 (或需要数据时) ,由操作系统将数据输出。
优点:
提供虚拟设备
外围设备同时联机操作 (将独占设备改造为共享设备)
加快作业处理速度 (提高了I/O的速度)
►I/O控制
主存与外围设备之间的消息传送称为输入输出操作
I/O设备的控制方式分为四类:(按照I/O控制器智能化程度的高低)
循环测试I/O方式(程序I/O)
I/O中断方式
DMA方式(Direct Memory Access,直接存储器访问)
通道方式
输入/输出功能的发展过程★★
1 2 3 4 5 6
处理器直接控制外围设备 增加了控制器或I/O模块。 采用中断 通过DMA直接控制存储器 I/O模块被增强成一个单独的处理器 I/O模块有自己的局部存储器
在简单的微处理器控制设备中比较多见 CPU开始从外部设备接口的具体细节中分离出来。 处理器不再需要花费时间等待执行一个I/O操作,因而效率得到了提高 可以在没有处理器参与的情况下,从主存中移出或者往主存中移入一块数据。仅仅在传送开始和结束时需要用到处理器。 有专门为I/O设计的指令集。中央处理器(CPU)指导I/O处理器在主存中执行一个I/O程序。IO处理器在没有处理器干涉的情况下取指令并执行这些指令 事实上,它本身就是一个计算机。使用体系结构可以控制许多IO设备,并且使需要处理器参与的部分最小。这种结构通常用于控制与交互终端的通信。
I/O子系统的特点:
在应用层为用户提供 I/O应用接口,每个通用设备类型都通过一组标准函数(及接口)来访问,具体的差别被I/O子系统中的内核模块(称为设备驱动程序)所封装,为内核I/O子系统隐藏设备控制器之间的差异。将I/O子系统与硬件分离.
九:文件系统:
►文件组织的结构:
a.逻辑结构(从用户角度看到的文件面貌)(程序员开发/设计的各种格式)
i.流式文件(相关的有序字符的集合,是无结构的)
ii.记录式文件(有结构,在逻辑上总被看成一组连续顺序的记录的集合)(其逻辑记录可以按任意次序存放)
b.物理结构(信息在物理存储器上的存储方式)(由文件系统定义)
i.连续文件(一组分配在磁盘连续区域的物理块组成)
ii.串联文件(按顺序由串联的块组成的,即文件的信息存于若干块物理块中)
iii.索引结构(由数据文件和索引表构成)
索引块:存放文件的索引表的物理块,其块号保存在文件目录项的物理地址中
索引文件的特点:
易于文件的增删
直接读写任意记录
索引表的组织
直接索引
一级间接索引
二级间接索引
文件索引节点
UNIX系统把文件目录项中除了名字以外的信息全部存放到一个数据块上,这种数据块就是文件索引节点(index node),简称 i 节点。在目录项中只有文件的名字和对应 i 节点的编号。
文件所有者 定义对一个文件具有存取权的用户集合,分为文件所有者、用户组所有者
文件类型 分为正规文件、目录文件、字符特殊文件或块特殊文件
文件存取许可权 按文件所有者、文件的用户组所有者及其他用户三个类别对文件施行保护。每类都具有读、写、执行该文件的存取权,并且能分别地设置。
文件联结数目 在文件目录结构中,有多少个文件名指向该文件。减少一个名字时i_ilink 值减1。当其值减为0时,该文件才能真正删除。
存取时间
长度
地址索引表 文件数据的磁盘地址明细表
►文件目录及其结构
►访问权限(10位):
►磁盘调度算法
思想: 优: 缺:
先来先服务算法(FCFS) 按访问请求到达的先后次序服务。 简单,公平 效率不高
最短寻道时间优先算法(SSTF) 优先选择距当前磁头最近的访问请求进行服务 改善了磁盘平均服务时间 造成某些访问请求长期等待得不到服务
扫描算法(电梯算法)(SCAN) 当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。 克服了最短寻道优先的缺点,既考虑了距离,同时又考虑了方向。被Linux所采用
单向扫描调度算法(CSCAN) 1、总是从0号柱面开始向里扫描。2、按照各自所要访问的柱面位置的次序去选择访问者。3、移动臂到达最后一个柱面后,立即带动读写磁头快速返回到0号柱面。4、返回时不为任何的等待访问者服务。5、返回后可再次进行扫描。
十:一些题目
►虚拟存储技术不能与( 分区管理 )配合使用原因
虚拟存储技术的出现,是建立在程序具有局部性的原理上的,虚拟内存只有在非连续存储管理中才存在:页式存储、段式存储、段页式存储。而分区管理,是一种连续存储管理的方案。
下面是关于分区管理的一些知识点:
为了支持多道程序系统和分时系统,支持多个程序并发执行,引入了分区式存储管理。分区式存储管理是把内存分为一些大小相等或不等的分区,操作系统占用其中一个分区,其余的分区由应用程序使用,每个应用程序占用一个或几个分区。分区式存储管理虽然可以支持并发,但难以进行内存分区的共享。
分区式存储管理引人了两个新的问题:内碎片和外碎片。
内碎片是占用分区内未被利用的空间,外碎片是占用分区之间难以利用的空闲分区(通常是小空闲分区)。
为实现分区式存储管理,操作系统应维护的数据结构为分区表或分区链表。表中各表项一般包括每个分区的起始地址、大小及状态(是否已分配)。
分区式存储管理常采用的一项技术就是内存紧缩(compaction)。
►进程有不同的定义,比较典型的定义有:
1.进程是程序的一次执行过程。
2.进程是一个程序及其数据在处理机上顺序执行时所发生的活动
3.进程是有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。
进程的特征;
1.动态(pcb进程控制块是进程存在的唯一的标志):进程是程序的一次执行,它有着创建,活动,暂停,终止等过程,具有一定的生命周期(由pcb决定),是动态的产生,变化和消亡的。动态性是进程最基本的特征。、
2.并发性:指多个进程实体,同存在于内存中,能在一段时间内同时运行,并发性是进程的重要特征,同时也是操作系统的重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,以提高资源利用率。
3.独立性:指进程实体是一个能独立运行,独立获得资源和独立接受调度的基本单位。凡是未建立pcb的程序都不能作为一个独立的单位参与运行。
4.异步性:由于进程的相互制约,使进程具有执行的间断性,即进程按照各自的独立的,不可预知的速度向前推进。异步性会导致执行结果的不可再现性,为此,在操作系统中必须配置相应的进程同步机制。
5.结构性:每个进程都配置一个pcb对其进行描述。从结构上看,进程实体是由程序段,数据段和进程控制块(PCB)三部分组成。
►简述程序与进程
程序 只是一组指令的有序集合, 静态的实体
进程 是程序在某个数据集上的执行, 动态的实体
进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程,可以用进程控制块来唯一地标识每个进程。而这一点正是程序无法做到的,由于程序没有和数据产生直接的联系,既使是执行不同的数据的程序,他们的指令的集合依然是一样的,所以无法唯一地标识出这些运行于不同数据集上的程序。一般来说,一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程(因为它没有执行),也有可能有多个进程与之对应(运行在几个不同的数据集上)。
►简述进程与线程
进程 资源分配的基本单位 进程之间的资源相互独立 一个进程含有一至多个线程 执行开销大创建时间长
线程 任务调度和执行的基本单位 线程之间的资源共享 一个线程归属于一个进程 执行开销小创建时间短
►中断处理的流程
指某个事件 (例如电源掉电、定点加法溢出或 I/O传输结束等) 发生时,系统中止现行程序的运行、引出处理事件程序对该事件进行处理,处理完毕后返回断点,继续执行。
处理流程:中断进入->保护现场->中断处理->恢复现场->中断返回
►何为死锁?产生条件?如何避免\处理?
在两个或多个并发进程中,如果每个进程持有某种资源而又都等待着别的进程释放它或它们现在保持着的资源,否则就不能向前推进。此时,称这一组进程产生了死锁。
产生的必要条件:a.互斥条件(资源独占)b.不剥夺条件:c.部分分配(保持申请)d.环路条件(循环等待)
a.死锁预防(静态)b.死锁避免(动态) i.有序资源分配方法ii.银行家算法c.死锁恢复
►用信号量(P、V操作)实现进程互斥与同步
互斥:
(1)设置互斥量,初值为1
(2)临界区之前 P
(3)临界区之后 V
同步:
(1)设置同步信号量初值为 0
(2)前操作 之后 V
(3)后操作 之前 P
注意:先同步后互斥
题:多进程推进次序问题:
解决方法:
题:共享缓冲区的合作进程的同步
计算进程 a 经过计算,将计算结果送入缓冲区。打印进程 b 把缓冲区中的数据取出打印。
关系:
当 a 进程把计算结果送入缓冲区后, b 进程才能从缓冲区中取出结果去打印,否则必须等待。
当 b 进程把缓冲区中的数据取出打印后,a 进程才能把下一个计算结果数据送入缓冲区中,否则必须等待。
解决方法:
题:生产者——消费者问题:
生产者和消费者在同一时间段内共用同一个存储空间,生产者往存储空间中添加产品,消费者从存储空间中取走产品,当存储空间为空时,消费者阻塞,当存储空间满时,生产者阻塞。生产者和消费者需要互斥的访问存储空间。
解决方法:
►银行家算法避免死锁求安全序列
1.数据结构:
(1)利用资源向量Available[]:其中的每一个元素代表一类可利用的资源数目
(2)最大需求矩阵Max[][]:系统中n个进程中的每一个进程对m类资源的最大需求
(3)分配矩阵Allocation[][]:系统中每一类资源当前已分配给每一进程的资源数。
(4)需求矩阵Need[][]:每一个进程尚需的各类资源数。其中:Need[i,j]=Max[i,j]-Allocation[i,j]
2.算法流程
(1)如果REQUEST [q] [i]<= NEED[q][i],则转(2);否则,出错。
(2)如果REQUEST [q] [i]<= AVAILABLE[i],则转(3);否则,等待。
(3)系统试探分配资源,修改相关数据:
AVAILABLE[i]-=REQUEST[q][i];
ALLOCATION[q][i]+=REQUEST[q][i];
NEED[q][i]-=REQUEST[q][i];
(4)系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。
3.安全性检查算法
(1)设置两个工作向量Work=AVAILABLE;FINISH
(2)从进程集合中找到一个满足下述条件的进程,
FINISH==false;
NEED<=Work;
如找到,执行(3);否则,执行(4)
(3)设进程获得资源,可顺利执行,直至完成,从而释放资源。
Work=Work+ALLOCATION;
Finish=true;
GOTO 2
(4)如所有的进程Finish= true,则表示安全;否则系统不安全。
解题步骤:
1.根据题目信息画表:MAX、Allocation、need三个矩阵。
2.分析题目中的需求(若没有给出就直接用need矩阵的值做判断)
3.每次判断当前请求能否满足的方法:先用请求向量与系统当前资源向量work比较,若大于则可以满足,直接让work加上Allocation矩阵对应的那一行向量(实际意义时是该用户的请求可以满足并且在该进程运行完后归还了其持有的所有资源)
4.实际解题时,读取到一个请求利用3 的方法判断是否可行,若可行则需要接着判断其他用户在该状态下是否可行(安全序列),方法是,判断当前用户后依次判断其他的可以满足 的用户,最后看是否所有用户都能被满足。
注意这里可能某一状态有不止一个的用户,选取哪个用户进入安全序列需要利用回溯的思想,即每次都选取编号小的用户进入,若推到后面不满足了,就返回这个状态并选取下一个可行的用户继续判断,直到寻找到一个安全序列或者没有可行的用户(不安全)为止。
►作业调度算法求周转时间
►分区存储(放置算法)求内存序列
►页面调度(淘汰算法)求缺页中断次数
解题步骤:
首先画表格:横坐标是请求序列,纵坐标是实际物理地址的每一块
然后开始填表
1.最佳算法:每次检查当前请求的页号是否在物理内存中,若在直接处理下一个请求,若不在则在后续队列中找当前在物理内存中的页号,找到第一个相同的请求,记住它距离当前的距离,找到全部的物理内存中的页号对应的距离后,用当前请求置换出物理内存中距离最远的页号(最远代表将来最晚用到),依次重复即可
以上过程中如果表格某一列是空白的(实际上是和前一列相同只不过没填)表示没有缺页中断,否则表示发生缺页中断。
2.LRU算法:大致流程和(1)差不多,只是在置换时每次总是向前查找和物理内存最近一个相同的,然后在所有的距离里面找最大的替换(最大代表最久未使用)
3.FIFO算法:也可用类似上面的方法,不过这里有更简单的算法,写一个队列,每次替换的时候都从队尾插入,淘汰队头即可。(类似于滑动窗口的感觉)
例如:虚页大小为6,实页大小为3,请求序列为01214256
利用LRU算法:
内存|请求 0 1 2 1 4 2 5 6
0 0 0 0 4 4 6
1 1 1 1 5 5
2 2 2 2 2
表中有6列非空,所以发生了缺页中断六次
►Linux文件系统相关计算
linux文件系统:多级索引:在一个Linux的文件系统中可能同时有直接索引,一级文件索引,二级文件索引等
题:
M:磁盘块大小即簇大小
N: 磁盘地址大小即地址项长度
T: 一个磁盘块可以容纳磁盘地址(即一个表项)的数量
S:支持文件的最大尺寸 (长度)
a 、b 、c 、……:直接地址数量、一级地址数量、二级……
求:支持文件的最大尺寸的计算
计算结果:
T = M / N
S = M*(a + bT + cT^2 + d*T^3……)
例如:一个UNIX系统使用4KB磁盘块和8字节磁盘地址。若i节点有10个直接表项、一级二级三级间接块各一个,那么支持的文件尺寸最大多少 ?
T = 4 KB / 8B = 4*2^10 / 8 = 2^9 = 512
S = (10 + T + T^2 +T^3)
►磁盘读取文件时间计算
注意:分开考虑,不需要整体考虑(如寻找扇区时同时也在寻道)。
= 寻道时间 + 旋转时间 + 数据读取时间
寻道时间(径向移动时间)= 跨越磁道数 * 单位用时
旋转时间(切向移动时间)= 跨越扇区数 * 单位时间
数据读取数据(切向读取)= 读取扇区数 * 单位时间(同上)
►其它:
单CPU操作系统进程不能并行只能并发
被作业调度算法选中的作业会被调入主存进入就绪队列
被进程调度算法选中的进程会从就绪队列转为运行状态投入运行
V操作或者有进程释放某种资源可能会使一个或几个进程由阻塞变就绪
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。