操作系统考研

2018-08-28 11:13:55 qq_37747664 阅读数 1025

综述:在现代,软件是计算机的灵魂,而作为软件的核心的操作系统,已经称为计算机系统重要的一环。计算机自上而下可分为硬件、操作系统、应用程序、用户。操作系统是计算机硬件资源的管理者,也是我们用户的服务者。充当了硬件和用户之间的媒介,让普通人也可以轻松的使用计算机的算力。操作系统控制和管理整个计算机系统的硬件资源,并合理地组织调度计算机的工作和资源分配。操作系统还是应用软件的运行环境,让应用程序员不用考虑计算机的底层逻辑,也不用学习底层知识,就可以编程计算机,实现相应的功能。

 

操作系统的特征

  • 并发:并发是指操作系统中同时运行着多个程序。要注意和并行的区别,并行是两者可以同时运行,而并发是宏观上的并行,微观上,是多个程序交替使用计算机资源。(引入进程的目的就是使操作系统拥有并发的特性)
  • 共享:共享的是计算机中的资源,指多个并发执行的程序可以共同使用这些资源。计算机中的资源也因此分为互斥资源和同时访问资源,互斥资源是指不支持多个程序并发使用的,比如打印机这样的需要连续一段时间工作才有效果的。同时访问的资源支持多个程序并发的共享,即也是微观上分时共享。
  • 虚拟:虚拟技术是依靠计算机的快速,可以依靠微观上分时的服务于不同的任务或者用户,可以虚拟出多个逻辑上的对象,可能物理上只有一个。一般可以虚拟处理器、虚拟内存、虚拟外部设备。通过并发的方法,将一个物理实体虚拟成逻辑上的多个虚体。虚拟技术本质上就是时分复用技术的应用。
  • 异步:异步是指,多个程序共同运行,资源却是有限的,所以难免会有问题出现,所以多个程序会以不可预知的速度推进,问题会导致程序走走停停,这就是异步。异步本质上就是指操作系统的多道程序系统让操作系统变得不确定了。

操作系统的目标和功能


面向计算机:

  • 处理机管理:处理机的运行是基于进程的,所以对处理机的管理就是对进程的管理。
  • 存储器管理:对内存的管理
  • 设备管理:对外部设备的管理
  • 文件管理:计算机中的信息都是以文件的形式存在的,对文件的管理就是管理计算机中的电子信息。

面向用户:
提供接口:接口就像是我们人类与计算机的翻译官,我们通过接口使用自己熟悉的语言来让计算机做我们想做的事

  • 命令接口:联机命令接口(交互式的命令就像shell)和脱机命令(一串命令使计算机自动工作,就像脚本)
  • 程序接口:用户通过在程序中使用这些系统调用命令来请求操作系统的服务。当前的图形用户接口就是程序接口。

【注】有操作系统的计算机称为虚拟机。而不带操作系统的称为裸机(某些单片机)。
 


操作系统的运行环境


计算机系统中,有两种性质的软件,一种是操作系统,即组成操作系统的一些内核程序,另一种是应用程序,是直接面对用户的。内核程序是应用程序和硬件承上启下的关键程序。是应用程序的管理者。为了区别这两种不同性质的程序,也为了保障计算机系统的稳定和安全,操作系统划分了用户态和核心态两种状态。也因此区分了两种指令,特权指令和普通指令,特权指令只能在核心态中运行,而用户需要操作系统资源的时候,只能进行申请。那么什么程序是内核程序那?是一些与硬件紧密相关的模块,比如时间管理,中断管理,设备驱动最底层的程序和一些运行频率非常高的程序,进程管理,存储器管理,设备管理等。这两部分内容构成了操作系统的内核。
大多数内核程序包括四个方面的内容:
1)时钟管理

  • 时钟可以提供时间参考
  • 可以实现时间中断

2)中断机制中断中的保护和恢复现场信息,转移控制权的操作属于内核。
3)原语:是底层一些可以被调用的公用小程序

  • 处于操作系统的最底层,是最接近硬件的部分
  • 其操作是一气呵成,不能打断的,具有原子性。
  • 运行时间短,调用频繁

4)系统控制的数据结构及处理

  • 进程管理
  • 存储器管理
  • 设备管理

中断和异常


在操作系统中引入用户态核心态以后,就要考虑到两者如何转换,用户态不可能永远用不到内核态,那也需要有这样一个门,可以暂时性的对用户态开放。在操作系统中这唯一的就是中断和异常,只有中断和异常时,运行用户态的cpu才能进入核心态。这里的操作是通过硬件实现的。而异常也可以称为中断,不过两者有一些不同。中断也称外中断,而异常就叫做内中断。中断主要是指一些正常的操作,是为了提高计算机效率。而异常也叫陷入,主要是一些故障,不过也可以通过指令自愿的中断。两者最主要的区别是中断可以屏蔽,而异常是不可屏蔽的中断。
系统调用命令
系统调用就是操作系统提供的一些公共程序,相当于把硬件资源管理好后,提供给上层程序的一个接口。通过系统调用,用户程序可以使用一些方便的功能来实现对计算机的使用。系统调用运行在核心态,这样可以保证操作系统内部的安全和稳定,不会因为用户的操作就发生毁灭性的影响。这也直接降低了用户的使用门槛。
 
【总结】对于操作系统的运行环境,我们可以这样理解,用户通过上层用户程序使用计算机,而这些上层程序是依赖于操作系统的,当用户的程序需要调用系统功能时,我们需要用户通过异常进入核心态,执行系统调用,然后再返回用户态,继续正常工作。
【注解】从用户态到核心态的指令叫做访管指令(访问管理服务程序),在用户态使用,所以不是特权指令。从核心态返回用户态的指令叫做中断返回指令,在核心态使用,是特权指令。
 
 
 

2020-05-17 17:07:39 weixin_43416850 阅读数 319

1.什么是操作系统
控制和管理整个计算机系统的硬件和软件资源,对资源进行组织、分配、调度的一组程序集合,是系统资源的管理者,最接近硬件的软件。

2.操作系统的特征是什么?
并发性:两个或者多个事件在同一时间段内发生。(并行是同一时刻执行不同多个事件,并发是同一时间段执行多个事件。)
共享性:系统中的资源可供内存中多个并发执行的进程共同使用。
虚拟性:把物理上的实体变为若干逻辑上的对应物
异步性:进程的执行并不是一贯到底的,它以不可预知的速度向前推进。

3.操作系统的功能?
①管理计算机资源,包括处理机管理、内存管理、文件管理、设备管理
②作为用户和计算机硬件系统之间的接口,提供命令接口和程序接口
③可以将逻辑改造成功能更强、使用更方便的机器,所以操作系统可以作为扩充机器。

4.CPU有哪两种状态?
内核态:运行内核程序,可以执行特权指令
用户态:运行应用程序,不可以执行特权指令
用户程序主动请求从用户态变成内核态,可以执行访管指令,也就是陷入指令。从用户态到核心态的唯一途径就是异常或者中断,访管指令也是产生一个中断事件,自愿进入核心态,这个中断叫做访管中断。

5.系统调用和使用库函数有什么区别?
系统调用是程序中能用类似函数调用的操作系统服务的集合,系统调用是通向操作系统本身的接口,是面向底层硬件的
库函数是语言或应用程序中的一部分,在用户地址空间执行,有缓冲。库函数调用则是面向应用开发的

6.中断和系统调用区别?
中断过程:中断请求 中断响应 断点保护 执行中断服务程序 断点恢复 中断返回
系统调用过程:应用程序在用户态执行时请求系统调用,中断,从用户态进入内核态,在内核态执行相应的内核代码。
中断是由外设产生, 无意的, 被动的
系统调用是由应用程序请求操作系统提供服务产生, 有意的, 主动的。要从用户态通过中断进入内核态。

7.什么是临界区,什么是临界资源?
临界资源:在一段时间内只允许一个进程访问的资源是临界资源。
临界区:访问临界资源的那段程序称为临界区

8.微内核和宏内核的概念以及区别?
宏内核:将操作系统中的主要功能模块都作为一个整体运行在核心态。
微内核:将内核中最基本的功能,比如进程管理,保留在内核中,将其他的不需要在内核态执行的功能转移到用户态执行,降低了内核的复杂性,因为需要频繁的在核心态和用户态之间进行切换,所以系统开销比较大,性能不太好。
微内核的操作系统有:Window,Mac。
宏内核的操作系统有:Unix,Linux。

9.什么是进程,进程和程序有什么区别?
为了更好的描述和控制程序的并发执行,引入了一个概念叫做进程,进程是由PCB(process control block 进程控制块)+程序段+相关数据段组成。程序是一个静态的概念,存放在磁盘里的可执行文件,是指令的集合,但是进程是动态的,是程序执行的过程。

10.进程通信的方式有哪些?
高级通信方式:
①共享存储(通信的进程之间存在一块可以直接访问的共享空间)
②消息传递(直接进行消息传递或者利用中间信箱进行传递)
③管道通信(开辟缓冲区)
④共享文件(利用操作系统提供的文件共享功能实现进程之间的通信)
低级通信方式:
PV操作(信号量机制)。
– P:wait(S)原语,申请S资源
– V:signal(S)原语,释放S资源

11.什么是线程,进程和线程的区别?
线程就是轻量级的进程,是一个基本的CPU执行单元,是被系统独立调度和分配的基本单位,但是线程自己不拥有系统资源,它与同属一个进程的其他线程共享该进程所拥有的全部系统资源。
进程作为系统资源分配的基本单元,线程独立调度的基本单元

12.为什么要引入线程?
为了更好的使多道程序并发执行,以提高系统资源利用率和系统吞吐量,增加程序的并发性。

13.什么是多线程,多线程和多任务有什么区别?
多线程:在一个程序中可以定义多个线程,并同时运行他们,每个线程可以执行不同的任务
区别:多任务是针对操作系统而言的,代表操作系统可以同时执行的程序个数;多线程是针对程序而言的,代表一个程序可以同时执行的线程个数,每个线程可以完成不同的任务。

14.进程切换的过程?
保持处理机上下文 -> 更新PCB -> 把PCB移入相应队列(就绪、阻塞) -> 选择另一个进程并更新其PCB -> 更新内存管理的数据结构 -> 恢复处理机上下文

15.三级调度是哪三级?
①作业调度,又称为高级调度,主要是把任务按一定的原则从外村调入内存。
②中级调度,又称为内存调度,将暂时不能运行的进程调至外村等待(这个时候的进程叫做挂起态)
③进程调度,又称为低级调度,按照某种方法从就绪队列中选取一个进程,将处理机分配给它

16.什么时候不可以进行进程调度?
①在处理中断的过程中②进程在操作系统内核程序临界区中(内核程序临界区是指用来访问内核的数据结构)③在其他需要完全屏蔽中断的原子操作过程中。

17.典型的进度调度算法是是什么?
①先来先服务算法 ②短作业优先算法 ③高响应比优先调度算法④时间片轮转调度⑤优先级调度算法⑥多级反馈队列调度算法(时间片轮转和优先级调度算法的综合)

18.什么是进程同步和进程互斥
同步:也叫做进程之间的直接制约关系,进程与进程之间在某些位置上需要协调他们的工作次序。
互斥:也叫做进程之间的间接制约关系,当一个进程进入一段临界区使用临界资源时,另一个进程必须等待

19.同步机制应该遵循的准则?
空闲让进,忙则等待,有限等待,让权等待

20.管程是什么?
由一组数据及对这组数据操作的定义组成的模块。同一时间只能有一个进程使用管程,即管程是互斥使用的,进程释放管程后需唤醒申请管程资源的等待队列上的进程。进程只有通过进入管程并使用管程内部的操作才能访问其中数据

21.什么是死锁?
多个进程因为争夺资源而造成一种僵局(相互等待),如果没有操作系统干预,这些进程都将会没有办法继续前进

22.死锁、饥饿和死循环有什么区别?
死锁:多个进程因为争夺资源而造成一种僵局(相互等待),如果没有操作系统干预,这些进程都将会没有办法继续前进
饥饿:一个进程长期得不到想要的资源
死循环:在进程执行的过程中,一直跳不出某个循环的现象。

23.死锁产生的原因是什么?
①对于不可剥夺系统资源的竞争 ②进程推进顺序非法(请求和释放资源的顺序不当)③信号量使用不恰当

24.死锁产生的必要条件?
互斥条件:必须互斥的对系统资源进行争抢
不剥夺条件:进程所获得的资源在未被使用完之前,不能被其他进程强行夺走,只能有进程自己来释放该资源
请求并保持条件:进程已经保持了至少一个资源,但是又提出了新的资源请求,而新资源已经被其他进程占有了,此时这个进程已经被阻塞,但是不愿意放弃手中的资源
循环等待条件:存在一种进程资源等待链,链中每个进程已经获得的资源都被链中下一个进程所请求

25.怎么对避免或者预防死锁的产生?
A.死锁预防:破坏产生死锁的四个必要条件
①破坏互斥条件:允许资源可以共享使用。例如spooling技术,把独占设备在逻辑上改在共享设备
②破坏不可剥夺条件:当请求新资源不满足的时候,必须释放手中占有的资源。
③破坏请求并保存条件:采用静态分配方法,进程在运行前一口气申请完所有它需要的全部资源
④破坏循环等待条件:采用顺序分配方法,给系统中的资源编号,规定每个进程必须按照编号递增的顺序请求资源,同类资源一次申请完
B.死锁避免:用某种算法防止系统进入不安全状态(安全状态是指系统能够按照某种进程推进顺序为每个进程分配它所需要额资源,直至能够满足每个进程对资源的最大需求,使每个进程都可以顺利完成)

26.当死锁已经产生了,怎么去解除死锁?
①资源剥夺法:挂起某些死锁进程,并且回收它的资源,以便让其他进程继续推进
②撤销进程法:强制撤销部分、甚至全部死锁进程并剥夺这些进程的资源
③进程回退法:让一个或者多个进程回退到足够回避死锁的地步

27.作业和进程的关系?
进程是系统资源的使用者,系统的资源大部嗯都是以进程为单位进行分配的,而用户使用计算机是为了实现一串相关的任务,通常把用户要求计算机完成的这一串任务叫做作业。

28.操作系统的内存管理有什么功能?为什么要进行内存管理?
功能:①对内存空间进行分配与回收 ②将程序中的逻辑地址与内存中的物理地址进行转换 ③利用虚拟存储技术对内存空间进行扩充 ④对存储进行保护
如果不对内存进行管理,容易导致内存数据的混乱,以至于限制进程的并发执行,为了更好的支持多道程序并发执行,所以必须进行内存管理。

29.c/c++程序编译流程是什么?
预处理->编译->汇编->链接

30.内存分配的管理方式有哪些?
连续分配管理方式:
①单一连续分配 ②固定分区分配 ③动态分区分配(可以按照首次适应算法–最好、最佳适应算法、最坏适应算法、邻近适应算法)
非连续分配管理方式:
①基本分页存储管理方式(把主存空间划分成大小相等且固定的块) ②基本分段存储管理方式(按照用户进程中的自然段划分逻辑空间,大小可能会不一样) ③段页式管理方式(先按照逻辑模块分段,再将各段分页)

31.什么是页表和快表,有什么作用?
页表是提供逻辑地址中的页号和内存地址中的块号对应关系的一种工具,他的作用是在动态重定位方式装入作业的时候,需要利用页表做地址转换。
快表就是放在高速缓存中的部分页表,功能和作用与页表一致。
用页表做地址转换的话,读写数据的时候,cpu需要两次访存,但是如果用快表做地址转换,有些时候cpu只需要访问一次cache(高速缓冲存储器),一次主存即可,会提高读取的速度。

32.页表中地址翻译的过程
从逻辑地址中读取页号–看页号在不在快表中–(不在快表中)查找页表–看所对应的内存号在不在cache中–(不在cache中)访问内存

33.多级页表解决了什么问题,又带来了什么问题?
多级页表解决了当逻辑空间过大的时候,页表的长度会大大增加的问题,但是采用多级页表时,一次访盘会需要多次访问内存甚至磁盘,所以会增大访存时间。

34.虚拟存储器的定义是什么
基于局部性原理,在程序执行过程中,所访问的信息不在内存中,由操作系统将所需要的部分调入内存。操作系统也可以将内存中暂时用不到的内容换到外存。从用户的角度而言,操作系统好像为用户提供了一个比实际内存大的多的存储器。

35.为什么要引入虚拟存储,虚存是怎么工作的?
实际内存不够大,需要在逻辑上扩大存储容量
虚存使用外存上的空间来扩充内存空间,通过一定的换入换出,使得整个系统在逻辑上能够使用一个远远超过其物理内存大小的内存容量。

36.虚拟存储空间的大小由什么决定?
①虚拟存储器的大小≦内存容量+外存容量之和。硬件条件规定,如果虚存的大小超过这个容量,没有足够的空间来供虚存使用
②虚拟存储器的大小≦计算机的地址位数能够容纳的最大容量,如果超过了,地址将没有办法表示,也没有办法访问到,即便硬件上满足,也浪费了地址空间

37.虚拟存储有哪几种方式?
请求分页存储管理、请求分段存储管理、请求段页式存储管理。
(请求分页存储系统建立在基本分页系统的基础上,增加了请求调页功能和页面置换的功能,硬件支持上提供了页表机制、缺页中断机制–属于内中断、地址变换机制)

38.页面置换算法包括哪几种?
①最佳置换算法(其实无法实现)
②先进先出置换算法(会产生belady异常–分配的物理块越多却也可能也会越多)
③最近最久未使用置换算法(替换的是过去一段时间内最久未被访的算法,性能较好,但是需要寄存器和栈的硬件支持)
④时钟置换算法(clock算法)(性能与开销都比较均衡,最多进行两次扫描)
或者改进型的时钟置换算法(最多四次扫描,优先淘汰没有修改过的页面,因为不用写回外存)
-注:时钟置换算法思路:
扫描时找使用位为0,就是没有使用过的缓冲区,优先替换没有使用过的缓冲区进行替换,第一遍扫描的时候,如果使用位为1,就将它改成0,如果使用位为0就进行替换。
改进的时钟置换算法思路:
将缓冲块分为4类,按照(最近没有访问没有修改0,0–最近没有被访问但是被修改了0,1–最近被访问但没有被修改1,0–最近被访问被修改)第一次扫描找(0,0)进行替换,第二次扫描找(0,1)将其修改为(0,0),第三次扫描(0,0)进行替换。

39.什么是文件系统?
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称为文件系统。文件系统包括三个部分,与文件管理有关的软件、被管理文件以及实施文件管理所需要的数据结构

40.文件的逻辑结构、目录结构、文件共享、文件保护?

41.文件系统要完成哪些功能?
①对于用户而言,要实现对文件的基本操作(包括存储、查找),还可以实现文件共享和文件保护
②对于操作系统而言,需要管理与磁盘信息交换,完成文件逻辑结构和物理结构的变换,组织文件在磁盘上的存放,采取好的文件排放顺序和磁盘调度方法来提升整个系统的性能。

42.文件的物理结构?(文件的实现方式)
文件的分配方式就是对非空闲磁盘块的管理:连续分配、连接分配、索引分配(把每个文件所有的盘块都集中安放,建立索引表)
文件存储空间管理就是对空闲磁盘块的管理:空闲表、空闲链表、位示图(利用二进制的单位记录空闲块)、成组链接(空闲表和空闲链表的结合,适合大的文件系统)
-注对文件存储空间的管理和内存管理有点像。

43.什么是FAT(File Allocation Table)?
FAT就是文件分配表,分配给文件的所有盘块号都放在FAT中,记录了文件的物理位置。

44.什么是FCB?
文件控制块,为了便于对文件进行控制和管理,在文件系统内部,给每个文件唯一地设置一个文件控制块,其中记录了文件的大小,文件所在的位置,文件修改的时间等等。

45.磁盘调度时间由什么决定?
寻找时间(就是寻找磁道的时间)+延迟时间(定位到某个扇区的时间)+传输时间(读写数据的时间。

46.磁盘调度算法?(用于优化寻道时间)
先来先服务FCFS
最短寻道时间优先SSTF
扫描算法SCAN(在磁头当前移动方向上选择与当前磁头所在的磁道距离最近的请求作为下一次服务的对象,就是在最短寻找时间优先算法的基础上规定了磁头运动的方向)
循环扫描算法C-SCAN(返回时快速移动到起始端,中途不进行任何服务)

47.怎么优化磁盘延迟时间?
①对扇区交替编号(扫完一个扇区需要短暂的处理时间才能对下一个物理块进行读写)
②对磁盘进行错位命名(因为盘面是连轴转的,大多数的存储又连续的)
③地址的编码顺序是(柱面号、盘面号、扇区号)的顺序(也是因为读取连续,少移动磁盘,只需要激活磁头的时间即可)

48.设备控制器(I/O控制器)的主要任务是什么?
①接受和识别CPU或通道发来的命令
②实现数据交换
③发现和记录设备以及自身的状态信息,供CPU处理使用
④对设备地址进行识别

49.I/O子系统的层次结构是怎么样的?
自顶向下:
用户层I/O软件(实现与用户交互的接口)
设备独立性软件(实现用户程序与设备驱动器的统一接口、设备命令、设备保护以及设备的分配和释放)
设备驱动程序(与硬件直接相关,负责具体实现系统对设备发出的操作指令)
中断处理程序(用于处理中断相关事项)
硬件设备(包括一个机械部件-就是设备本身+一个电子部件–I/O控制器)
但是I/O核心子系统只包括设备独立性软件+设备驱动程序+中断处理程序

50.什么是设备的独立性?引入设备的独立性有什么好处?
设备的独立性是指用户在编程序时使用的设备与实际设备无关,一个程序应当独立于分配给它的某类设备的具体设备,只需要在用户程序中只指明I/O使用的设备类型即可。
设备独立性的好处:
①方便用户编程
②使得程序运行不受具体机器环境的限制
③便于程序进行移植

51.什么是假脱机技术,spooling?
脱机技术:批处理阶段,用磁带完成输入输出,脱离主机的控制,只用外围控制机来控制输入输出。假脱机技术就是用软件的方式模拟脱机技术。
它缓解了设备与CPU的速度矛盾,实现了预输入,缓输出。
假脱机技术提高了I/O的速度;将独占设备改造成共享设备;实现了虚拟设备功能。

52.当处理机和外部设备速度差距较大的时候,并且此时不想让其中一方等待,有什么办法可以解决问题?
可以才采用缓冲技术来缓解处理机与外部设备速度上的矛盾,就是在某一块地方(一般为主存)设立一片缓冲区,外部设备与处理机的输入输出都需要经过缓冲区,这样外部设备和处理机之间就不需要进行互相等待。

53.I/O控制方式有哪几种?
程序直接控制方式、中断驱动控制、DMA控制(直接存储器存取)、通道控制

2019-01-05 19:40:08 wang342626 阅读数 2848

参考课本: 计算机操作系统第四版 (汤小丹)

第一章: 操作系统引论

操作系统的定义

操作系统的功能(4个管理,3个接口)

  1. 处理器管理
  2. 存储器管理
  3. 文件管理
  4. 设备管理
  5. 用户接口
    • 命令接口{ 联机命令接口, 脱机接口(批处理命令接口)(*.bat, shell脚本) }
    • 程序接口=系统调用
    • GUI图形接口

操作系统的特征

最基本的是: 并发性 共享性

  1. 并发性
    • 并发: 间隔着运行
    • 并行: 同时运行
  2. 共享性
    • 互斥共享
    • 同时共享
  3. 虚拟性
  4. 异步性

操作系统的发展阶段

  1. 无操作系统
  2. 批处理操作系统
    • 单道批处理操作系统
    • 多道批处理操作系统
  3. 分时操作系统
    优点: 提供人机交互功能
    缺点: 不能优点处理紧急任务
  4. 实时操作系统
    • 硬实时操作系统(必须在规定时间完成)
    • 软实时操作系统(偶尔接受超时)

系统调用

系统调用发生在用户态,处理是在核心态进行的
陷入指令会产生内中断,从用户态进入核心态

应用程序可以通过汇编语言直接进行系统调用,也可以通过c语言的库函数间接进行系统调用。

系统调用

步骤

  1. 传递系统调用所需的参数
  2. 通过陷入指令trap指令, 用户态进入核心态
  3. 系统调用函数,执行特定的系统内核功能
  4. 最后返回结果,并且内核态返回用户态

附:
不要系统调用:

  • abs函数

要系统调用:(与资源有关的操作,会影响其他进程的操作)

  • 读写文件
  • 整数除以0

微内核

  • 优点: 可靠性好, 灵活性(可扩充性), 便于维护。
  • 缺点: 系统效率不高, 性能低

中断与异常

发生中断,系统进入核心态,当前的进程暂停运行,操作系统内核处理中断。

广义的中断:

  1. 内中断:(来源CPU内部)
    • 访管指令(trap指令)
    • 缺页
    • 除以零
  2. 外中断(狭义的中断):
    • 外设请求
    • 人工干预

用户态,核心态

用户态->核心态, 中断是唯一途径
核心态->用户态, 通过执行特权指令,将程序状态字PSW标志位设为用户态
特权指令只能由系统内核使用


第二章: 进程

进程的定义

进程的组成:

  1. PCB (进程控制块)
  2. 数据段
  3. 程序段

进程的组织

  1. 链接方式
  2. 索引方式

进程的特征: 4个

  1. 动态性 (最基本的特征)
  2. 并发性
  3. 独立性
  4. 异步性

进程的状态(重要考点)

3种基本状态

  1. 运行态
    单核CPU一次最多只能有一个进程同时运行
  2. 就绪态
    具备运行条件, 但没有空闲CPU
  3. 阻塞态
    进程执行受阻, 例如IO请求等, 没有资源, 没有空闲CPU

另外2种状态

  1. 创建状态
  2. 终止状态

状态之间的转换
在这里插入图片描述

小结
在这里插入图片描述

进程控制

进程通信

  1. 共享存储 (互斥)
    • 基于共享数据结构的通信 (低级)
    • 基于共享存储区的通信
  2. 管道通信
    每个管道只能半双工, 互斥访问,
    如果没写满,就不允许读, 如果没读完,就不允许写
  3. 消息传递
    系统提供接受发送原语
    • 直接通信方式
    • 间接通信方式

线程 Thread

引入线程后, 线程成为程序执行流的最小单位, 提高系统并发度
进程是资源分配的基本单位, 线程是调度的基本单位

线程的实现方式

  1. 用户级线程
    切换在用户态下完成
  2. 内核级线程
    切换在核心态下完成
    内核级线程才是CPU分配的单位
  3. 组合方式
    • 多对一模型
      缺点: 一个线程阻塞会导致整个进程被阻塞
    • 一对一模型
    • 多对多模型

调度的三个层次

  1. 高级调度 = 作业调度
    调度对象是作业,
    用于多道批处理系统
  2. 低级调度 = 进程调度
    调度对象是进程, 最基本的调度
  3. 中级调度 = 内存调度
    不运行的进程挂起, PCB仍留在内存中

进程调度的方式

  1. 非抢占式 (用于早期批处理系统)
  2. 抢占式 (用于分时,实时操作系统)
2019-04-09 22:53:06 Mr_zhangjx 阅读数 394

第一:操作系统概述

  操作系统概述这部分内容不会出现大题。一般是以基本原理和概念的形式为主,属于识记形式的题目。重点是操作系统的定义、操作系统的特征和主要功能等。

  第二:进程管理

  进程管理是考试的热门,考点即可以出现在选择题中,也可出在综合应用题中。

  重点是要掌握进程的基本特征、进程的状态及其相互转换的条件和过程;进程与线程的区别和联系;进程通信的基本类型;调度的基本概念、时机、切换过程,掌握各种调度算法及其环境,并会用算法进行计算;进程同步相关概念、同步互斥机制;死锁的定义、死锁产生的四个必要条件、熟练掌握死锁的预防、死锁的避免,死锁解除的原理与方法。

  从往年试题来看,在综合应用题中,考了一道信号量机制的应用题,这部分是操作系统科目的难点,也是考试的热点。

  《计算机学科专业基础综合辅导讲义》这本书重点突出,利用多道例题重点讲解信号量机制,帮助大家掌握这部分内容。大家还要通过多做练习来加深理解,提高解题能力,《计算机学科专业基础综合辅导讲义同步练习》上也有这样的综合应用题并配有详细解答。

  第三:内存管理

  内存管理这部分内容也要作为重点进行复习,这部分内容的考查方式也很灵活。建议重点复习内存连续分配算法、非连续分配管理方式、虚拟内存请求分页的基本原理,页面置换算法等。

  虚拟内存这部分内容可以结合计算机组成原理科目中虚拟存储器来进行复习。在往年的考试中,考查过页面置换算法,这部分内容在与真题题型一致、题目难度和真题难度高度相近的《计算机学科专业基础综合考试全真模拟试题集》有相应的题目来帮助大家复习。

  第四:文件管理

  文件管理这部分内容的重点是文件的几种逻辑物理结构,目录的管理和磁盘管理,重点掌握磁盘管理各种调度算法的基本原理及其应用。

  第五:输入/输出管理

  输入/输出管理这部分重点掌握四种输入/输出控制方式特点及相互比较、中断处理、SPOOLing技术,提高性能的缓冲策略等。

 处理机管理
在复杂的作业处理过程中,有时候我们需要对作业、进程进行调度,切换。好比如这里有两个作业,A、B那我们先去完成谁呢,这就是需要操作系统来管理处理机,使得处理机的效率更高。

一般来说,处理机调度可以分为4级:


1)作业调度。又称高级调度,其主要任务是按一定的原则从外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出设备等必要的资源,并建立相应的进程,以使它(们)获得竞争处理机的权利。

2) 中级调度。又称内存调度。引入中级调度是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定,把外存上的那些已具备运行条件的就绪进程,再重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待。
3)进程调度。又称为低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。进程调度是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

4)线程调度。

针对前三种的调度可以观察下图进行理解。

在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用。下面介绍几种常用的调度算法。

1)先来先服务(FCFS)调度算法(first coming first server)

FCFS调度算法是一种最简单的调度算法,该调度算法既可以用于作业调度也可以用于进程调度。

在作业调度中,算法每次从后备作业队列中选择最先进入该队列的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将处理机分配给它,使之投入运行,直到完成或因某种原因而阻塞时才释放处理机。

2)短作业优先(SJF)调度算法

短作业(进程)优先调度算法(ShortestJob First )是指对短作业(进程)优先调度的算法。短作业优先(SJF)调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法,则是从就绪队列中选择一个估计运行时间最短的进程,将处理机分配给它,使之立即执行,直到完成或发生某事件而阻塞时,才释放处理机。

3)优先级调度算法

优先级调度算法又称优先权调度算法,该算法既可以用于作业调度,也可以用于进程调度,该算法中的优先级用于描述作业运行的紧迫程度。
4)时间片轮转调度算法
时间片轮转调度算法主要适用于分时系统。在这种算法中,系统将所有就绪进程按到达时间的先后次序排成一个队列,进程调度程序总是选择就绪队列中第一个进程执行,即先来先服务的原则,但仅能运行一个时间片,如100ms。在使用完一个时间片后,即使进程并未完成其运行,它也必须释放出(被剥夺)处理机给下一个就绪的进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。

2019-01-21 16:29:36 qq_34178958 阅读数 235

参考书籍:

  • 计算机操作系统 第三版 汤小丹 汤子瀛
  • 操作系统考研辅导教程 赫文化 主编
  • 操作系统考研指导 孟祥武 张玉洁 编

目前第一章的部分已经复习完毕,笔记内容已经更新在GitHub上,禁止用作商业用途,如有转载或者是其他需求,请征求同意,谢谢。

截图如下:

直接GitHub地址:https://github.com/Soler0502H/Postgraduate_notebook_for_SJTU_Software_Program