操作系统的特征:并发,共享,虚拟和异步

*并发*:****计算机中存在多个运行的程序,需要OS管理和调度。

多个应用程序交替执行,需要知道所有运行的程序当前的执行的位置,当前正在执行的是哪一个应用,如果应用之间有切换的时候,切换到下一个应用的时候,它上次执行到什么位置,这次就从什么时候开始。当时的状态是什么样子,都需要操作系统来维护。

共享: “同时”共享 和 互斥共享

多个应用并发执行的时候,宏观上要体现出它们在同时访问资源的情况,而微观上要实现它们的互斥访问。比如说我们说到的内存,两个应用同时访问内存,那这个时候,每个应用需要知道它访问的是哪一个,另一个应用访问的是哪一个,他们俩之间不能访问出错,其中一个需要保护的内存资源,不能让另外一个应用去访问。在微观上需要对它们做很好的隔离,因为在数据总线上任何时刻只有一个应用去访问存储单元,这就是所说的微观上的互斥。

虚拟:利用多道程序设计技术(程序的交替运行),让每个用户都觉得有一个计算机专门为他服务。

操作系统在每个应用执行的时候,这种交替执行的交替频率特别高,让用户在应用的时候感觉不太出来这台机器还有其他用户在用,当然负载大到一定程度,用户是可以感觉到的。

异步:1.程序的执行不是一贯到底的,而是走走停停,向前推进的速度不可预知。2.只要运行的环境相同,OS需要保证程序运行的结果也要相同。

如果说某个应用就是需要知道跟时间相关的这种走走停停的信息,也是可以在操作系统的支持之下,发现这种时间上的差异的。

响应时间=进程运行结束的时间—进程到达的时间

周转时间:从一个批处理作业提交时刻开始直到该作业完成所经过的时间间隔(包括作业进入内存前的等待时间、在后备队列中的等待时间、占用CPU后的运行时间以及完成各种IO操作的时间)

磁盘访问总时间=寻道时间+旋转时间+传输时间。其中,寻道时间最长

静态重定位在逻辑地址转换为物理地址的过程中,地址变换在进程装入时一次完成,以后不再改变。程序的存储空间只能是连续的一片区域,而且**在重定位之后就不能再移动。这不利于内存空间的有效使用。

动态重定位是在程序执行期间每次访问内存之前进行重定位。可变分区容易产生外部碎片。由于进程的位置发生了变化,所以要对进程在内存中的地址进行修改。修改的过程就是重定位的过程,所以这种做法也叫动态重定位。装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。

重定位:就是把作业地址空间中使用的逻辑地址变换为存储空间的物理地址的过程,又称为地址映射

动态重定位:程序在执行的过程中还可以重定位,由地址变换机构进行地址变换,有以下两种实现方式:

  重定位寄存器(一般用在段页式存储中):即基址寄存器,将指令中的有效地址与重定位寄存器中的基址相加得到访问地址,从而实现地址动态修改;

采用页表描述虚、实页面的对应关系。

对换是指将内存中的暂时还不能被运行的进程或者暂时用不到的程序和数据,调到外存上,以便腾出足够的内存供在外存中等待的作业使用

分页是一种操作系统里存储器管理的一种技术,可以使电脑的主存使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中

分时操作系统的特征

1)同时性,计算机系统能被多个用户同时使用;(2)独立性:用户和用户之间都是独立操作系统的,在同时操作时并不会发生冲突,破坏,混淆等现象;(3)及时性:系统能以最快的速度将结果显示给用户;(4)交互作用性:用户能和电脑进行人机对话

首次适应算法:地址递增,找到第一个能满足的空闲区;

最佳适应算法:空闲分区容量递增,找到最接近条件的最符合的空闲区;

最坏适应算法:空闲分区容量递减,挑选出容量最大的符合的空闲区;

邻近适应算法:由首次适应算法演变而来,从上一次结束的位置开始查找。

共有3个进程,5个资源,进程数小于资源数,则不会发生死锁的公式为
①最多申请资源数=资源总数/进程数(可以整除的条件下)
②最多申请资源数=(资源总数/进程数)+1(不可以整除的条件下)
所以本题用②的计算方式,得出结果为5/3+1=2

一、分区存储管理
1、固定分区:
优点:易于实现、开销小
缺点:存在内部碎片(分区内未被利用空间)、分区总数固定,限制了并发执行的程序数量。

2、动态创建分区:按照程序申请要求分配。
优点: 没有内部碎片
缺点:有外部碎片(难以利用的小空闲分区)

二、页式存储管理
优点: 没有外部碎片,最后一页可能有内碎片但不大; 程序不必连续存放;便于改变程序占用空间大小。
缺点: 程序仍需要全部装入内存。

1)一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。
一个作业通常包括程序、数据和操作说明书3部分,每一个进程由PCB、程序和数据集合组成。这说明程序是进程的一部分,是进程的实体。

1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。 因此选A;

2.短作业优先调度算法 (SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。

3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。 因此选C;

  1. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

常见的批处理作业调度算法

  1. 先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。

  2. 短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。

  3. 最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。

  4. **基于优先数调度算法(HPF)**:每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

  5. 均衡调度算法,即多级队列调度算法**

进程调度算法

  1. 先进先出算法(FIFO):按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行。
  2. 时间片轮转算法(RR):分时系统的一种调度算法。轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。
  3. 最高优先级算法(HPF):进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占式最高优先级算法。
  4. 多级队列反馈法:几种调度算法的结合形式多级队列方式。

进程的特征

并发性:指多个进程实体同存于内存中,且在一段时间内同时运行。并发性是进程的重要特征,同时也成为操作系统的重要特征。

2、动态性:进程的实质是进程实体的一次执行过程,因此,动态性是进程最基本的特征。

3、独立性:进程实体是一个独立运行、独立分配资源和独立接受调度的基本单位。

4、异步性:指进程按各自独立的、不可预知的速度向前推进,或者说实体按异步方式运行。

空闲分区分配算法

  1. 首先适应算法:当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法简单,可以快速做出分配决定。

  2. 最佳适应算法:当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为“碎片”。

  3. 最坏适应算法:当接到内存申请时,查找分区说明表,找到能满足申请要求的最大的空闲区。该算法的优点是避免形成碎片,而缺点是分割了大的空闲区后,在遇到较大的程序申请内存时,无法满足的可能性较大。

虚拟页式存储管理中的页面置换算法

  1. 理想页面置换算法(OPT):这是一种理想的算法,在实际中不可能实现。该算法的思想是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

  2. 先进先出页面置换算法(FIFO):选择最先进入内存的页面予以淘汰。

  3. 最近最久未使用算法(LRU):选择在最近一段时间内最久没有使用过的页,把它淘汰。

4. 最少使用算法(LFU):选择到当前时间为止被访问次数最少的页转换。

磁盘调度

1.先来先服务(FCFS)

2.最短寻道时间优先(SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题

3.扫描算法(SCAN)或电梯调度算法:总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

4.循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单项移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的哪个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求。

同一进程内的所有线程共享该进程的虚拟地址空间

位示图法是利用一串二进制位的值来反映磁盘空间的分配使用情况。

空闲块法是文件系统建立了一张记录全部空闲物理块的空闲块表。

空闲块链表法是系统将所有的空闲物理块连成一个空闲块链表,用一个指针指向第一个空闲块,每个空闲块含有指向下一个空闲块的指针,最后一块的指针指向NULL,表示达到链尾。

UNIX系统采用的是一种对空闲块链表改进的方法,把所有空闲块按固定数量分组,组与组之间形成链接关系,这就是空闲块成组链接法。

同步:直接制约;互斥:间接制约。

虚拟内存的实际容量≤内存容量+外存容量 虚拟内存的最大容量≤计算机的地址位数那容纳的最大容量

Unix的文件系统是索引文件结构,MS-DOS的则是显式链接文件结构

进程切换时核心态完成的,不能再用户态完成;

LRU:最近最少使用淘汰算法.

就像排队,被叫到但是队中没有就缺了,被叫到的队中有则不缺,再把其放在队尾,继续叫号。

缺页为:

4         缺1

4  3        缺1

4  3  2      缺1

4  3  2  1  缺1

3  2  1  4  不缺

2  1  4  3  不缺

1  4  3  5  缺1

1  3  5  4  不缺

1  5  4  3  不缺

5  4  3  2  缺1

4  3  2  1  缺1

3  2  1  5  缺1

2  1  5  4  缺1

我来为您详细解释RAID的概念:

RAID (Redundant Array of Independent Disks) 是一种将多个硬盘组合成一个逻辑单元的存储技术。主要目的是提升性能或提供数据冗余。以下是主要的RAID级别:

基本RAID级别:

RAID 0 (条带化)
至少需要2块硬盘
数据被平均分配到所有磁盘上
优点:读写性能最好
缺点:没有冗余,一旦有磁盘损坏,数据全部丢失
可用容量:所有磁盘容量之和
RAID 1 (镜像)
至少需要2块硬盘
数据被完整复制到每块磁盘
优点:提供完整数据冗余
缺点:存储效率低,只有50%
可用容量:单个磁盘容量
RAID 5
至少需要3块硬盘
数据和校验信息分布在所有磁盘上
优点:兼顾性能和冗余
缺点:写入性能相对较低
可用容量:(N-1)×单盘容量
复合RAID级别:

RAID 10 (RAID 1+0)
先做RAID 1镜像,再做RAID 0条带
至少需要4块硬盘
优点:高性能和高可靠性
可用容量:总容量的50%
RAID 50 (RAID 5+0)
多组RAID 5再做RAID 0
至少需要6块硬盘
优点:大容量,好性能,有冗余
可用容量:(N-M)×单盘容量(N为总盘数,M为RAID 5组数)
选择建议:

追求性能:RAID 0
追求安全:RAID 1
性能与安全平衡:RAID 5或RAID 10
大容量应用:RAID 50

广义指令,用户态和系统态都可

未被修改的页直接从文件区读入,而被置换时不需要调出;已被修改的页面,被置换时需要调出到交换区,以后从交换区调入。

页表表项中的访问位是由CPU置位的

页表表项中的存在位是由操作系统代码置位的

多道批处理系统的优点:资源利用率大幅提升,系统吞吐量增大 缺点:用户响应时间长,没有交互功能

分时操作系统解决了人机交互功能,但不能处理一些紧急任务

实时操作系统的特点:及时性和可靠性

分布式操作系统的特点:分布性和并行性, 系统中各个计算机地位相同,任何工作都可以分布在这些计算机上,由它们并行,协同完成

静态重定位是在程序执行之前进行重定位,它根据装配模块将要装入的内存起始位置,直接修改装配模块中的有关使用地址的指令。静态重定位有着无需硬件支持的优点,但存在着如下的缺点:一是程序重定位之后就不能在内存中搬动了;二是要求程序的存储空间是连续的,不能把程序放在若干个不连续的区域内。

引发新的调度的几个时刻:

1、新进程到来;

2、当前进程时间片用完;

3、进程结束阻塞状态;比如退出系统调用并返回;而对于临界区中是否可以进行进程调度,一般而言是可以的;比如当进程访问外部设备时,进程由运行态转为阻塞态,此时进程重新调度

临界区:每个进程中访问临界资源的那段程序叫做临界区。

进程对临界区的访问必须互斥,每次只允许一个进程进去临界区,其他进程等待

多道操作系统特意准备: 特权指令(多道优先级) 跳转指令(程序跳转)

件存储结构=文件物理结构=磁盘文件结构

连续文件类似于数组,顺序访问速度快,但是增删数据时要移动其他数据块,所以速度很慢,当文件很大时,增删文件内容会非常痛苦;

链接文件类似于链表,随机访问速度慢,增删数据很快,不需要移动数据块,只需要改变指针指向即可,当文件很大时,随机访问文件内容可能非常慢;

索引文件糅合了连续文件和链接文件,但更适合大文件;

多级索引结构中级数越高适用的文件越大,但是出现相对较小文件时又会造成磁盘空间浪费,
混合索引结构更灵活,可以既包括单索引,又包括二级索引,甚至包括三级,四级甚至更高级,能够兼容各个量级的大文件。

一个新的磁盘是一个空白版,必须分成扇区以便磁盘控制器能读和写,这个过程称为低级格式化(或物理格式化)。低级格式化为磁盘的每个扇区采用特别的数据结构,包括校验码,Ⅲ错误。为了使用磁盘存储文件,操作系统还需要将自己的数据结构记录在磁盘上。这分为两步。第一步是将磁盘分为由一个或多个柱面组成的分区,每个分区可以作为一个独立的磁盘,Ⅰ错误。在分区之后,第二步是逻辑格式化(创建文件系统)。在这一步,操作系统将初始的文件系统数据结构存储道磁盘上。这些数据结构包括空闲和已分配的空间和一个初始为空的目录,Ⅱ、Ⅳ正确。

分时系统具有多路性、交互性、“独占”性和及时性的特征。

多路性指,伺时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,微观上是多个人在不同时刻轮流使用CPU。

交互性是指,用户根据系统响应结果进一步提出新请求(用户直接干预每一步)。

“独占”性是指,用户感觉不到计算机为其他人服务,就像整个系统为他所独占。

及时性指,系统对用户提出的请求及时响应。

静态链接是指在程序运行前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不再拆开的链接方式。
装入时动态链接是指将用户源程序编译后得到的一组目标模块,在装入内存时采用边装入边链接的链接方式。运行时动态链接是指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。

微内核的特点

  1. 足够小的内核

在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本的核心功能的部分。微内核并非是一个完整的OS,而只是操作系统中最基本的部分,它通常用于:

① 实现与硬件紧密相关的处理;

② 实现一些较基本的功能;

③ 负责客户和服务器之间的通信。

它们只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。

  1. 基于客户/服务器模式

由于客户/服务器(Client/Server)模式,具有非常多的优点,故在单机微内核操作系统中几乎无一例外地都采用客户/服务器模式,将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功能都放在微内核外面的一组服务器(进程)中实现。例如用于提供对进程(线程)进行管理的进程(线程)服务器,提供虚拟存储器管理功能的虚拟存储器服务器,提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。

  1. 应用“机制与策略分离”原理

在现代操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上,借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。

  1. 采用面向对象技术

操作系统是一个极其复杂的大型软件系统,我们不仅可以通过结构设计来分解操作系统的复杂度,还可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。