Attribution-NonCommercial3.0ChinaMainland
(CCBY-NC3.0CN)License
进行许可。
形成标志:多道程序设计技术(并发)的出现
优点:
缺点:
关键问题:
针对个人使用优化的操作系统
作业控制块JCB是作业存在的唯一标志,当作业进入系统后,系统会为其创建作业控制块,用来存放管理和控制作业所必须的信息,只有作业退出系统后,JCB才被撤销
JCB包含该作业的标识信息、状态信息、调度参数(Parameter)、资源需求和其他控制信息
作业后备队列就是按照某种原则将后备作业的JCB排成的一个或多个序列,以便作业调度。
计算机内的调度结构:
要想提高吞吐量,就应优先考虑运行短作业;若要提高CPU利用率,则应优先考虑长作业
例:性能分析
现在的操作系统多为并发执行,为了提高资源的利用率
并行是并发的特例,并发是并行的拓展
引入进程,反映程序执行的独立性、并发性和动态性
「进程是程序的一次执行,该程序可以和其他程序并发执行;它是一个动态实体,在传统的操作系统设计中,进程既是基本的分配单元,也是基本的执行单元」
进程最基本的属性是「动态性」和「并发性」
由程序段、数据段和进程控制块(PCB)组成。
操作系统为进程创建进程控制块和分配地址空间的过程就是进程创建的过程
应该注意以下内容:
通过原语(Primitive)实现
原语是指由机器指令构成的可完成特定功能的程序段。它是一个机器指令的集合,在执行时不能被中断。多采用屏蔽中断方法实现。
原语有:创建、撤销、阻塞、唤醒、挂起、激活原语
优点:
进程调度是低级调度,从就绪队列中选择某个进程占用cpu
first-comefirst-serverd(FCFS)
调度最先进入就绪队列的作业。
shortestjobfirst(SJF)
长作业有可能会饿死,处于一直等待短作业执行完毕的状态。因为如果一直有短作业到来,那么长作业永远得不到调度。
shortestremainingtimenext(SRTN)
同步:多个进程按一定顺序执行;
互斥:多个进程在同一时刻只有一个进程能进入临界区。
临界区(互斥区):进程中涉及到临界资源的程序段
信号量(Semaphore)是表示资源的实体,是一个与队列有关的整形变量,其值只能由P、V操作改变
公用信号量:用于实现进程之间的互斥,初始值为1,它联系的一组并行进程均可对它实施P、V操作
私用信号量:实现进程之间的同步,初始值为0或n
PV操作是原语操作
信号量的数据结构:
structsemaphore{intvalue;pointer_PCBqueue;}P(s){s.value=s.value-1;if(s.value<0){该进程状态置为等待;该进程的PCB插入相应的等待队列末尾s.queue;}}V(s){s.value=s.value+1;if(s.value<0){唤醒相应等待队列中等待的一个进程;改变其状态为就绪态;将其插入就绪队列;}}信号量值的含义:
实例:
使用注意:
系统资源不足并不是产生死锁的原因,进程资源如果不足则进程就不会被创建,只有在资源部分分配以后,剩余的资源不能满足某些个进程的请求,造成进程集无法推进的现象才是死锁。
删除所有未阻塞进程,释放其占有资源
删除未阻塞进程的请求边,使其请求的资源数减一
用动态的方法判断资源的使用情况和系统的状态,分配资源之前,判断是否会发生死锁,如果会,资源就不分配
一个小城镇的银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。
上图c为不安全状态,因此算法会拒绝之前的请求,从而避免进入图c中的状态。
上图中有五个进程,四个资源。左边的图表示已经分配的资源,右边的图表示还需要分配的资源。最右边的E、P以及A分别表示:总资源、已分配资源以及可用资源,注意这三个为向量,而不是具体数值,例如A=(1020),表示4个资源分别还剩下1/0/2/0。
检查一个状态是否安全的算法如下:
如果一个状态不是安全的,需要拒绝进入这个状态。
死锁的预防策略是以破坏死锁产生的必要条件为目的,对资源的申请加以限制的
破坏互斥条件:某些设备可以通过SPOOLING系统将独享设备改造成为共享设备,以此可以解决互斥问题,例如打印机。破坏非剥夺条件:资源暂时释放策略,申请新的资源得不到满足则暂时释放已有的资源。破坏占用并请求条件:一次性申请全部资源。破坏循环等待条件:资源有序申请,给资源编号,使用时按升序进行
存储管理的主要管理对象是内存
在多道程序环境下,要使程序运行,必须先为之创建进程。而创建进程的第一件事,便是将程序和数据装入内存。如何将一个用户源程序变为一个可在内存中执行的程序,通常都要经过以下几个步骤:
首先是要编译(Compiler),由编译程序(Compiler)将用户源代码编译成cpu可执行的目标代码,产生了若干个目标模块(ObjectModule)(即若干程序段),
其次是链接,由链接程序(Linker)将编译后形成的一组目标模块(程序段),以及它们所需要的库函数链接在一起,形成一个完整的装入模块(LoadModule);
最后是装入,由装入程序(Loader)将装入模块装入内存。图示出了这样的三步过程。
graphLR;源程序--编译链接-->相对地址相对地址--地址再定位-->绝对地址地址重定位的方式:
需要一次性全部装入内存的方案:
硬件支持:
页式存储优点:
缺点:
段式和页式的比较:
不需要一次性装入:
文件的组成部分:
文件系统的功能(了解):
按名存取、统一的用户接口、并发访问和控制文件、安全性控制、优化性能、差错恢复
UNIX文件系统的索引结构:
四种寻址方式:直接、一级间接、二级间接、三级间接
在每个记录中需要有一个关键字字段,检索时给出记录键值,通过哈希(Hash)函数计算出该记录在文件中的相对位置。这就是通常所说的Hash方法(散列法或杂凑法),利用这种方法所建立的文件称为Hash文件。
文件控制块(FCB)的有序集合称为文件目录,文件目录是由文件控制块组成的,专门用于文件的检索,实现「按名存取」
文件控制块的主要内容及作用:
文件目录提供的功能:
文件目录结构:
记录的成组与分解
把若干个逻辑记录合成一组存放在一个物理块的过程。进行成组操作时必须使用主存缓冲区,缓冲区的长度等于逻辑记录长度乘以成组的块因子。
记录成组的优点是提高了存储空间的利用率;减少了启动外设的次数,提高系统的工作效率。主要缺点是需要软件增加成组和分解的额外操作,以及容纳最大块长的I/O缓冲区。
外存空闲空间管理的数据结构通常称为磁盘分配表
常用的空闲空间的管理方法有:空闲区表、位示图和空闲块链三种。
Unix系统的成组链接法
将空闲块分成若干组,每100个空闲块为一组。每组的第一个空闲块登记了下一组空闲块的物理盘块号和本组空闲块总数。
理解掌握分配和回收空闲盘块的算法
常用的外存分配方法
为了提高系统的工作效率,在内存设置文件管理机构称为打开文件机构
一个文件同时属于多个文件目录项(例如被多个用户共享),并且这种关系不管文件此时是否在被使用,都存在。
Unix通过索引节点(inode)来实现文件共享链接的,并且只允许链接到文件,不允许链接到目录
出现在进程共享文件时,伴随着进程的生成而存在,进程的终止而消失。
常用的转储方法:静态转储和动态转储、海量转储和增量转储
先进行移臂调度、然后进行旋转调度
同一柱面,扇区号从小往大依次访问,遇到相同扇区号,选择一个访问,另一个下一周访问
计算机中负责管理I/O的机构称为I/O系统(硬件和软件的组合)
通道的工作原理:
为方便对缓冲区进行管理,UNIX系统设置了三种队列。
一个可以移作他用的缓存buf,同时处于原设备buf队列中和自由buf队列中。
字符设备缓存
分布式计算机系统(DistributedComputerSystems)是由多个分散的计算机经网络连接而形成的统一的计算机系统。其中各个资源单元(物理的或逻辑的)既相互协同又高度自治,能在全系统范围内实现资源管理,动态地进行任务分配或功能分配,并能并行地运行分布式程序。