课后题:https://wenku.baidu.com/view/40a1cb3a3968011ca300919c.html
1.操作系统的定义
- 操作系统是运行在计算机硬件上的第一层软件,它是用户和计算机硬件系统之间的接口,用户通过os来使用计算系统,是计算机系统资源的管理者,实现了对计算机资源的抽象。计算机资源的抽象:OS在裸机上覆盖了I/O设备管理软件,实现了第一层抽象,再在第一层软件上覆盖了文件管理软件,实现了第二层抽象,操作系统通过多层次的软件,实现了对计算机资源的抽象。
2.系统调用
- 用户使用计算机有三种方式:命令方式、图标-窗口方式和系统调用方式。命令方式即用户通过命令语言实现对作业的控制,以取得操作系统的服务,包括命令行方式以及批命令方式,命令行方式如Windows下的cmd,批命令方式即命令一次建立,多次执行,像Windows中带bat后缀的文件,都是批处理文件。
- 系统调用提供了用户程序和OS内核之间的接口。计算机系统中运行着系统程序和应用程序,为了防止OS遭到破坏,应用程序运行在用户态,OS内核运行在系统态,当应用程序需要使用OS系统提供的服务时就需要进行系统调用,从用户态进入内核态,比如进程控制类(进程的创建和销毁),文件操纵类(文件的创建和删除,打开和关闭文件,读写文件),进程通信类(通信时需要打开连接的系统调用等)。
- 系统调用是通过中断实现的。处理步骤为:将处理机状态由用户态转为系统态,保护被中断的CPU环境,将PSW,PC,系统调用号,寄存器等内容压入堆栈,然后将用户定义的参数传送到指定的地址并保存起来-->分析系统调用的类型,转入相应的系统调用处理子程序-->子程序执行完成后,恢复断点,返回被中断的进程。
3.为什么说中断和通道技术使得多道批处理系统的实现成为现实
- 多道程序的并发执行指的是一部分程序在CPU上运行,一部分在I/O设备上进行传输,通过这样的方式可以减少CPU在时间上的浪费,实现CPU操作与外设传输需要通过中断和通道技术实现:
- 通道是控制一台或者多台设备的硬件机构,用于进行设备的I/O操作,独立于CPU,做到了输入输出与CPU并行操作,使得CPU有更多的时间用于处理数据。
- I/O通道的使用需要CPU发送I/O指令,当通道完成数据输入输出的任务后,向CPU发出中断信号,这是CPU停下手头的工作去处理中断请求,处理完成后再回去处理原来的工作
4.微内核操作系统
- 微内核操作系统采用客户/服务模式,将操作系统划分成微内核和多个服务器。微内核将操作系统的最基本部分放入微内核,如与硬件处理紧密相关的部分(中断和陷入处理,低级存储器管理),一些基本的功能(进程线程管理以及多进程通信)。移植性强(可运行在不同的操作系统上),可扩展性高(需要增加新的硬件和软件时,只需要在相应的服务器中增加新的功能)。
5.操作系统中为什么要引入进程的概念?引入进程前后程序执行各有什么特点?
- 使程序并发执行,引入之前程序顺序执行,运行时独占全机资源,运行结果不受外界因素的影响,引入进程后,程序运行具有间断性,失去封闭性和不可再现性的特点,因此进程具有异步的特点。
6.进程同步和进程互斥
- 进程同步即直接相互制约,进程需要相互合作完成任务协调执行顺序。
- 进程互斥即间接相互制约,多个程序访问临界资源时需要互斥访问。
7.调度在什么时候发生,以及调度算法有哪些(参考https://blog.csdn.net/qq_38499859/article/details/80588248)
- 调度实际上是一种资源分配。处理机调度包括高级调度、中级调度和低级调度。
- 高级调度又称为长程调度或者作业调度,它的调度对象是作业。主要功能是根据某种算法,决定将外存上处于后备队列中那几个作业调入内存,为它们创建进程,分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统,而在分时和实时系统中不设置高级调度。作用调度的频率很低,周期很长,大于几分钟一次。
- 中级调度又称为内存调度,引入中级调度的主要目的是,提高内存利用率和系统吞吐量。中级调度的作用就是将暂时不能运行的进程,调至外存等待(挂起转台),和将外存上已经满足条件的就绪进程在调入内存中。内存调度的频率和周期处于,作业调度和内存调度之间。
- 低级调度有称进程调度或者短程调度,它的调度对象是进程。其主要功能是,根据某种算法,决定就绪队列中的那个进程获得处理机。并由分派程序将处理机分派给选择的进程。进程调度这是一种最基本的调度,在多道批处理,实时和分时三种类型的OS中,都必须配置这级调度。进程调度的频率很高,周期很短,在分时系统中大概仅10~100nm.
8.(实时系统)最低松弛度优先和最早截止时间优先算法
- 最低松弛优先算法:松弛度=必须完成时间-本身运行时间-当前时间,松弛度越小,优先级越高。
- 最早截止时间优先算法:根据任务截止的时间确定任务的优先级。
9.什么是优先级倒置现象,可以采取什么方法解决?
- 优先级倒置即高优先级进程或线程被低优先级进程或线程延迟或阻塞。在多任务实时系统中,为了避免多个任务同时访问共享资源,而引入了同步访问的机制,即互斥访问临界资源,这样就会产生优先级倒置的情况。比如有三个优先级分别递增的进程A,B,C,A先运行,访问临界资源,然后优先级比A高的B抢占了CPU,A被挂起,然后优先级最高的C又去访问临界资源,结果资源被挂起的A占用,访问不到,所以C被阻塞,然后B运行完成后,释放CPU,A使用CPU,执行完成后,释放临界资源,此时优先级最高的C才能访问临界资源,导致程序执行的顺序变成了B-->A-->C,也就是所谓的优先级倒置。
- 解决方案:
(1)当进程A访问临界资源时,暂时将其优先级改为最高,当其执行完毕时,再将优先级改回原来的。(缺点:不一定会有高优先级进程抢占,且每次提升优先级都是对CPU资源的浪费)
(2)动态优先级继承方法:低优先级的且占用了临界资源的进程如果CPU被高于他优先级的进程抢占,且又有更高优先级的进程需要使用该临界资源,就继承该高优先级的进程的优先级,将CPU抢占,当该进程推出临界区时,再将优先级修改回来。
10.死锁的概念以及解除死锁的方法有哪些,解决死锁的时候要注意什么?(参考:https://blog.csdn.net/yanxiaolx/article/details/51944048)
- 多个进程在抢夺资源时造成的一种僵局,如果没有外力作用,这种僵局会一直持续下去。产生死锁的原因是竞争资源和进程推进顺序不当。
11.可以用哪几种方式将程序装入内存,分别用于什么场合?
- 绝对装入:单道程序,装入时,可由程序员直接给出绝对装入地址,程序的逻辑地址即其在内存中存储的实际地址。
- 可重定位装入:多道程序环境,将目标模块装入内存中事先指定的位置,装入模块中的逻辑地址与实际装入后的物理地址(=逻辑地址+内存偏移量)不同。程序装入时,对地址进行改变,称为静态重定位。
- 动态可重定位装入:多道程序环境,把装入模块装入内存后,并不立即把逻辑地址改成物理地址,而把地址转换推迟到运行时执行。
12.程序链接的方式
- 静态链接:在程序运行前,将目标模块及所需的库函数连接成一个完整的装配模块,以后不在拆开
- 装入时动态链接:指将用户源程序编译后所得的一组目标模块,在装入内存时,采用边装入边链接的方式
- 优点:便于更新和修改,实现对目标模块的共享
- 缺点:不知道运行时需要将哪些模块链接,因此需要全部装入,效率低
- 运行时动态链接:指对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行链接