操作系统知识

来源:互联网 发布:高通量数据分析是什么 编辑:程序博客网 时间:2024/06/05 06:57

操作系统的基本特征

4个,并发,共享,虚拟,异步,全部以并发为前提,共享和并发是最基本的。

操作系统的类型

模块,分层,微内核,目前大部分是微内核

中断处理具体过程:保存现场;分析原因,转中断处理程序;恢复现场。

进程管理

并行是同时发生,并发是看上去同时发生
并行性(parallelism)是指两个或两个以上事件或活动在同一时刻发生。
并发性指两个或两个以上的事件或活动在同一时间间隔内发生。
进程属性
结构性:一个进程由四要素组成:程序块、数据块、进程控制块和系统堆栈。

动态性,独立性,并发,共享
进程的三个状态,就绪,执行,阻塞

进程的五个状态,执行,阻塞,就绪,新加两个,新建,终止

新建状态,刚被创建,未加载进入内存,系统需要分配其各种资源
终止,结束运行

进程的4个部分,进程控制块,用户栈,数据块,程序块


进程控制块的两个组织方式
链接方式


索引方式


进程创建步骤:
1、申请空白PCB
2、为新进程分配资源。为新进程的程序和数据以及用户栈分配必要的内存空间。
3、初始化进程控制块
       初始化标识信息,并在基本进程表中增加一项。
       初始化处理机状态信息。使程序计数器指向程序的入口地址,使栈指针指向栈顶;
       初始化处理机控制信息:进程的状态、优先级。
4、将新进程插入就绪队列或就绪挂起队列。
同步机制应该遵循的规则
空闲让进
忙则等待
有限等待
让权等待
信号量机制
整型,wait,signal
wait(S): while S<0 do no-op
S:=S-1;
signal(S):S:=S+1;
记录型
procedure wait( S )
var S: semaphore;
begin
S.value:=S.value-1;
if S.value<0 then block(S,L);
end

procedure signal(S)
var S: semaphore;
begin
S.value:=S.value+1;
if S.value≤0 then wakeup(S,L);
end

利用信号量实现前驱关系
设有两个并发执行的进程P1和P2,P1中有语句S1,P2中有语句S2,我们希望在S1执行后再执行S2。
使进程P1和P2共享一个公用信号量S,赋予初值为0;
在进程P1中,用S1;signal(S);
在进程P2中,用wait(S), S2;

其实信号量这里,wait可以理解为加锁,将值置为false,其他则不可以访问,signal是解锁,将值置为true,可以访问

3 读者-写者问题
有两组并发进程:读者和写者,共享一个文件F,要求:
(1)允许多个读者可同时对文件执行读操作;(2)只允许一个写者往文件中写信息;
(3)任一写者在完成写操作之前不允许其他读者或写者工作;
(4)写者执行写操作前,应让已有的写者和读者全部退出。
var rmutex, wmutex:semaphore :=1,1;
Readcount: integer:=0;
begin
parbegin
reader begin
repeat
wait (rmutex);
if Readcount=0 then wait(wmutex);
Readcount :=Readcount+1;
signal(rmutex);

perform read operation;

wait( rmutex); // 读完后还需要修改Readcount的值
Readcount :=Readcount-1;
if Readcount:=0 then signal(wmutex);//没有读进程在读,此时把信号量释放掉,以便写进程来写文件
signal(rmutex);
until false
end

进程通信方式
1.低级通信,比如信号量就是一种
2.高级通信,利用操作系统的通信命令
高级通信的种类
共享存储区通信机制,变相的信号量
消息传递通信机制 ,windows的postmessage
管道(Pipe)通信(unix系统的传统通信方式),共享文件管道pipe文件

线程
在操作系统中再引入线程,则是为了减少程序在并发执行时所付出的时空开销和通信代价,使OS具有更好的并发性。
线程是操作系统进程中能够独立执行的实体,是处理器调度和分派的基本单位。
线程是进程的组成部分,每个进程内允许包含多个线程。
同一个进程中的所有线程共享进程获得的主存空间和资源。

进程调度的三个方式
高级调度:用于决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行 。
低级调度:用来决定就绪队列中的哪个进程应获得处理机,然后再由分派程序把处理机分配给该进程的具体操作。抢占和非抢占
中级调度:它决定主存储器中所能容纳的进程数,引入中级调度的主要目的,是为了平滑和调整系统负荷,提高内存利用率和系统吞吐量。
调度算法
先来先服务,FCFS,既可以作业调度,也可以进程调度
短作业优先,SJF,既可以作业调度,也可以进程调度
高优先权优先调度算法,抢占时和非抢占式,
高响应比优先调度算法:由于该算法既考虑了作业(进程)的等待时间又考虑作业(进程)的运行时间,是FCFS和SJ(P)F的折中。
优先权=(等待时间+估计要求服务时间)/估计要求服务时间
最短剩余时间优先算法:根据运行剩余最短时间,强行将正在运行剩余时间长的进程移走
时间片轮转调度算法:系统耗费在进程切换上的开销比较大,这个开销与时间片的大小很有关系。时间片大小的确定要从进程个数、切换开销、系统效率和响应时间等多方面考虑。
多级反馈队列调度算法:设置多个就绪队列,并为各个队列赋予不同的优先级。 各队列中进程执行时间片大小也各不相同。

常用的几种实时调度算法
最早截止时间优先算法EDF( earliest deadline first)
最低松弛度优先LLF(least laxity first)算法
产生死锁的原因和必要条件
死锁的定义:所谓死锁(Deadlock),是指多个进程在运行过程中因争夺资源而造成的一种僵局(Deadly- Embrace),当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进,也无法释放占用的资源。

死锁的发生必须具备下列四个必要条件:
(1)互斥条件:指进程对所分配到的资源进行排它性使用 。
(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求
(3)不剥夺条件:指进程已获得的资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。
(4)环路等待条件:指在发生死锁时,必然存在一个进程——资源的环形链。
系统状态:安全状态,不安全状态
银行家算法
设Requesti是进程Pi的当前请求向量,当Pi发出资源请求后,系统按下述步骤进行检查:
(1)如果Requesti[j]≤Need[i,j],便转向步骤(2);否则认为出错,因为它请求的资源数已超过它所宣布的需求量。
(2)如果Requesti[j]≤Available[j],便转向步骤(3);否则,表示尚无足够资源,Pi须等待
(3)系统试探着把资源分配给进程Pi,并修改下面数据结构中的数值:
Available[j]:=Available[j]一Requesti[j];
Allocation[i,j]:=Allocation[i,j]+Requesti[j];
Need[i,j]: =Need[i,j]一Requesti[j];
(4)系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。若安全,才正式将资源分配给进程Pi,以完成本次分配;否则,将本次的试探分配作废,恢复原来的资源分配状态,让进程Pi阻塞等待。
安全算法
尝试找到一个安全序列
存储器管理
程序装入
绝对装入方式,可重定位装入方式(需要做地址转换,静态重定位,动态重定位)
程序连接
静态链接方式,装入时动态链接,运行时动态链接
连续分配方式
单一连续分配,固定分区分配,动态分区分配(首次适应算法,循环首次适应算法,最佳适应算法)
重定位技术
活动进程通常会被换入或换出内存,一旦进程被换出主存,下一次被换入时,如果必须放在和以前相同的存储器区域,会带来许多限制,相反,可以把进程放入存储器的不同区域中。因此程序员不可能事先知道自己程序执行期间在内存中的位置。
基本分页存储管理方式(重点)
为了能将用户地址空间中的逻辑地址,变换为内存空间中的物理地址,在系统中必须设置地址变换机构。在分页中,逻辑地址到物理地址的转换仍然由处理器硬件完成。
地址变换借助于页表来完成。
页表大多驻留在内存中。在系统中只设置一个页表寄存器PTR,在其中存放正在执行进程的页表在内存的始址和页表的长度。
两级页表
将页表再进行分页,并离散地将各个页面分别存放在不同的物理块中 ,为离散分配的页面再建立一张页表,称为外层页表 ,在外层页表的每个页表项中记录了页表页面(页表分页)在内存中的首址。
两级页表的总结
两级页表虽解决了可分散存放页表的问题,但并未解决页表占用内存空间的问题。
对于进程运行涉及页面的页表分页应放在内存,而其他页表页使用时再行调入。
二级页表分页机制中,CPU每存取一个数据需三次访问内存,一次访问外层页表、一次访问页表、一次访问指令或数据。
基本分段存储管理方式
引入分段存储管理方式,主要是为了满足用户和程序员编程和使用上的要求。
现代高级语言常常采用模块化程序设计,一个程序由若干模块组成。每个段都具有完成的逻辑意义,都是从0开始编址,每个段都有模块名。
在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息,主程序段、子程序段、数据段等;
用段号代替段名,各个段的长度不等;
每个段都从0开始编址,为作业的每一段分配一个连续的主存空间,而各段之间在内存中不一定连续。
区别
分段和分页的目的不同。分页是为实现离散分配方式,以消减内存的外零头,提高内存的利用率。段则是信息的逻辑单位,它含有一组其意义相对完整的信息。分段的目的是为了能更好地满足用户的需要。
页的大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分;而段的长度却不固定,由其完成的功能决定。
段页式存储管理方式
在段页式系统中,每个段被分成若干个固定大小的页面,那么每个段必须建立一张页表,把逻辑地址变成内存中的实际页面
为每个段建立一张段表,段表中应有专项指出该段对应页表的页表始址和页表长度(大小)。
虚拟存储器的基本概念
当一个进程被调用时,系统将保证该进程当前要引用的程序和数据在内存中,其余部分存在磁盘上。
所谓虚拟存储器:是采用虚拟存储技术实现的,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统,其逻辑容量由内存容量和外存容量之和所决定,其运行速度接近于内存速度,而每位的成本却又接近于外存。
实现方法:
请求分页系统:这是在基本分页系统的基础上,增加了请求调页功能和页面置换功能所形成的页式虚拟存储系统。
为了能实现请求调页和置换功能,系统必须提供必要的硬件支持和相应的软件:
①请求分页的页表机制,
②缺页中断机构
③地址变换机构;
更多看PPT
页面置换算法:
最佳置换算法
先进先出页面置换算法
最近最久未使用置换算法
Clock置换算法
IO设备:
不同设备物理特性的主要差别:
数据传输率;
数据表示方式:不同设备采用不同字符表和奇偶校验码;
传输单位;
出错条件:错误形式,报错方式等。
设备控制器:
设备控制器是一个以电路板形式出现的硬件设施。
设备控制器作用:设备控制器是CPU和I/O设备之间的接口,控制一个或多个I/O设备,以实现I/O设备和计算机之间的数据交换。

总线系统:
计算机系统中的各部件,如CPU、存储器以及各种I/O设备之间的联系都是通过总线实现的。
总线的职能:负责计算机个部件间的信息传输。
可把I/O设备的控制方式分成4类:
程序I/O方式;
中断驱动I/O控制方式;
直接存储器访问DMA I/O控制方式;
通道控制方式
磁盘调度:
磁盘的访问时间
1)寻道时间:指磁头移动到指定磁道上所需时间。
2)旋转延迟:指定扇区移动到磁头下面所经历的时间。
3)传输时间:数据从磁盘读出或向磁盘写入数据所经历的时间。
磁盘调度策略
先来先服务:根据进程请求访问磁盘的先后顺序进行调度
最短寻道时间优先SSTF:下一个被访问的磁道,是与当前磁头所在的磁道距离最近的磁道,以使每次的寻道时间最短。饿死现象
扫描算法SCAN(电梯算法):当磁头正在自里向外移动时,下一个要访问的磁道应是既在当前磁道外,又是距离最近者。直到再无更外的磁道要访问时,才调换磁头移动方向。
循环扫描算法:总是从0号柱面开始向里道扫描,按照各自所要访问的柱面位置的次序去选择访问者。在移动臂到达最后一个柱面后,立即快速返回到0号柱面,返回时不为任何的访问者等待服务。在返回到0号柱面后,再次进行扫描。
(有一个或几个进程地某一磁道有较高的访问频率,即这个(些)进程反复请求对某一磁道的I/O操作,从而垄断了整个磁盘设备。我们把这一现象称为“磁臂粘着”(Armstickiness)。)
N-step-SCAN算法:将请求分成队列,队列FCFS,队列内SCAN算法
文件系统
文件的定义:域(数据项),记录,文件,数据库
常见的有结构文件的逻辑组织形式:
堆;
顺序文件;
索引顺序文件;
索引文件;
直接文件和哈希文件

有结构的文件是由记录组成的(记录是访问文件的逻辑单元,而块是磁盘设备与CPU和内存进行I/O的单位。为了执行I/O,记录必须组织成块。
在大多数操作系统中,块的长度是固定的,固定长度的块可以简化I/O、内存中的缓冲区的分配和外存中块的组织。
看到这里的时候,记得看B-B+树的时候,B+树比B-树在IO操作上会少一些,主要是因为B+树的每个结点比较小,所以通过一次IO可以载入更多的结点,一次IO也是和这里的块相关的。
文件在外存中的分配
给文件分配空间大小,两种方式,一种是预先分配好,但是会造成空间浪费,一种是动态分配
文件分配表和文件控制块
为每个磁盘中所有的文件配置了一张文件分配表FAT,该表记录了分配给文件的所有的盘块号,在FAT的每个表项中存放该文件所在的下一个盘块号。
对于硬盘的使用非常重要。
FAT放置于内存,为此检索速度快。
具体的文件外存分配方法
连续分配方式:这是一种预分配方式,并且是一种可变大小的分区方式。
链接分配:为文件分配多个不连续的块,通过每个块上的链接指针,将同属于一个文件的多个离散的块链接成一个链表。
注:MS-DOS、windows等操作系统都采用了显示链接的方式,把用于链接文件各物理块的指针,显式地存放在内存的文件分配表FAT中。
索引分配:索引会占用很多空间,多级索引等
目录管理
文件,FCB,文件控制块,文件的各种信息,各种权限
文件目录:文件目录是文件的集合,一个文件目录也被看作是一个文件,称为目录文件,存储于磁盘上。
索引节点的引入,文件目录存放太多文件的时候,就有太多的FCB,需要多次的IO存取,
为了减少检索文件时的I/O操作次数,UNIX/Linux 采用了一种比较特殊的目录项建立方法,把FCB中的文件名和其他的文件描述信息分开存放。文件描述信息单独形成一个称为索引结点的数据结构,简称为inode结点。
文件存储空间的管理
空闲表法:为所有的空闲区建立一块空闲表,每个空闲区对应一个空闲表
空闲链表法:将所有的空闲区作为链表指针形成一个链表
位图法:位示图是利用二进制的一位来表示磁盘中一个盘块的使用情况。磁盘上的所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位构成一个集合,称为位示图。







0 0
原创粉丝点击