操作系统的定义
os是一组能有效地组织和管理计算机硬件和软件资源,合理的对各类作业进行调度,以及方便用户使用的程序的集合。
操作系统的的目标、作用
目标:
为了实现方便性、有效性、可扩充性、开放性。
方便性是用户能通过OS命令操纵计算机,方便用户;有效性是指提高系统资源的利用率和增加系统的吞吐量;可扩充性是指OS必须要不断地更新,满足用户的需求;开放性指OS要遵循国际的标准,特别是(OSI)开放系统互连参考模型。
作用:
作为用户与计算机硬件系统的接口、作为计算机系统资源的管理者、实现了对计算机资源的抽象。
推动操作系统发展的主要动力
1.不断提高计算机系统资源的利用率
20世纪50年代,出现由单道批到多道批,60年代,出现支持多个用户使用的分时系统,与此同时,还推出能改善I/O设备和CPU利用率的假脱机系统。70年代,为了提高存储器的利用率,提出虚拟内存技术,从逻辑上扩大内存。后来在网络环境下,在服务器上配置操作系统,又进一步提高了利用率。
2.方便用户
当资源利用率不高得到解决后,用户使用的方便性成了主要矛盾。20世纪60年代,分时系统的提出,不仅提高了资源的利用率,还能实现人机交互,使用户感觉自己独占全机。90年代初,图形用户界面(GUI)的提出,进一步方便了用户对计算机的使用。
3.器件不断更新换代
微机芯片从8位发展到16位、32位甚至64位时,相应的微机OS也由8位OS发展到16位......,与此同时,外设也在迅速发展,微机OS不仅能支持传统的外设,也能支持光盘、移动硬盘、闪存、扫描仪、数码相机等。
4.计算机体系结构不断发展
计算机体系结构的发展,推动着OS的发展。例如,从计算机从单处理机系统发展为多处理机系统时,OS也由单处理机OS转变为多处理机OS,当出现计算机网络后,网络OS应运而生。
5.不断提出新的应用需求
人们不断提出新的应用需求。例如,为了提高产品质量和数量,将计算机应用于工业控制中,,由此产生了实时系统。为了满足用户在计算机上播放视频、音频,OS中增添了多媒体功能。随着用户在计算机上保存的信息越来越宝贵,安全性也成了OS必须具备的功能。随着 超大规模集成电路 的发展,CPU体积越来越小,智能设备应运而生,嵌入式OS的产生和发展成了一种必然。
操作系统四大特征
特征:并发、共享、虚拟、异步
并发:两个或多个事件在同一时间间隔内发生。这些事件在宏观上同时进行,微观上交替进行。
并行:两个或多个事件在同一时刻同时发生。
并发是为了使得OS能有效地提高系统中资源的利用率,增加系统的吞吐量。
在OS中,把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能,称为“虚拟”。例:一个程序需要放入内存并给它分配CPU才能执行。虚拟由时分复用技术和空分复用技术实现,时分复用技术分为虚拟处理机技术和虚拟设备技术,空分复用技术指虚拟存储器技术。虚拟性以并发性和共享性为前提。
在单处理机环境下,由于系统中只有一个处理机,因此每次只允许一个进程执行,其余进程只能等待。多道程序环境下,系统允许多个进程并发执行。但由于资源等因素的限制,进程的执行不可能“一气呵成”,而是会以“停停走走”的方式运行。进程是以人们不可预知的速度向前推进的,这就是进程的异步性。只有系统拥有并发性,才可能导致异步性。异步性是并发性和共享性的必然结果。
操作系统的发展
单道批:
为了实现对作业的连续处理,需要先把一批作业以脱机I/O方式输入到磁带上,并在系统中配置监督程序(这是OS的雏形),在它的控制下,作业一个接一个运行,但是在内存中始终只保持一道作业,所以称之为单道批。图中操作系统其实是监督程序。

特点:自动:作业自动运行,无需干预;批量:磁带上的各个作业按顺序地进入内存,先调入先完成;单道:内存中仅有一道程序运行,可以看成是串行的
缺点:系统的资源得不到充分利用,每逢程序在运行中发生I/O请求时,CPU便会进入等待状态,必须等I/O结束才能继续运行,导致CPU资源利用率和系统吞吐量降低。
多道批:
用户所提交的作业被放入外存的作业后备队列,然后由作业调度程序按一定的算法从后备队列中选择若干个调入内存。内存中存放多道程序,当某道程序因某种原因如执行I/O操作时而不能继续运行放弃CPU时,操作系统便调度另一程序运行,这样CPU就尽量忙碌,达到提高系统效率的目的。
特点:多道:内存同时存放多道程序;宏观上并行:进入系统的多道程序先后开始了自己的运行,但都未运行完毕;微观上串行:内存中多道程序轮流占有CPU,交替执行
优缺点:资源利用率高、系统吞吐量大;作业处理时间(平均周转时间)长、交互能力差、运行过程不确定(异步)。
CPU的利用情况

分析:程序A要通过操作系统的调度进行磁盘操作,B则进行磁带操作。当程序A执行I/O请求时,A放弃了CPU,操作系统接着调度B,B开始占用CPU(红宽线),此时程序A的磁盘操作也在同时进行。
结论:A,B两道程序相互穿插运行,使CPU和外设都尽量忙碌。
如果说,推动多道批处理系统形成的主要动力是提高资源利用率和系统吞吐量,那么,推动分时系统形成和发展的主要动力,则是为了满足用户对人机交互的需求。
分时系统:
用户的需求体现在:(1)人机交互,用户希望独占主机进行直接控制,即希望能进行人机交互;(2)共享主机,在以前,一台计算机需要同时供很多用户共享,而且不希望感受到其他用户的存在。
所以,分时系统指在一台主机上连接多个配有显示器和键盘的终端所形成的系统,该系统允许多个用户同时通过自己的终端以及交互方式使用计算机,并共享主机中的资源。
关键问题:如何使用户和作业进行交互?
首先提供多个终端;其次,即时接收命令,并及时处理,这就是人机交互。及时接收:在系统配置多路卡,实现分时多路复用,还需要配置一个缓冲区,暂存用户键入的命令或数据;及时处理:对自己的作业及时控制,或进行修改。
为了实现人机交互,①让作业直接进入内存,因为作业不能在磁盘上运行,所以直接进入内存;②采用轮转运行的方式,为了避免一个作业长期运行,引入时间片的概念,一个时间片就是一段很小的时间,如30ms,系统规定每一个作业每次只能运行一个时间片,然后暂停,立即调度下一个作业的运行,如果所有作业都能运行一个时间片,即让每个用户都得到了交互。
特点:多路性(多个终端联接一台主机,多个用户共享)、独立性(各个用户互不干扰,感觉独占主机)、及时性(很短的时间得到响应:1~3s)、交互性(用户可以通过终端进行广泛的人机交互)。
实时系统:real time system
指系统能及时响应外部事件的请求,在规定的时间内完成对该事件的处理。并控制所有实时任务协调一致的运行。
实时系统类型:
(1)工业控制系统
(2)信息查询系统
(3)多媒体系统
(4)嵌入式系统。
实时任务分类:
周期性实时任务,外部设备周期性地发出激励信号给计算机,要求它按指定周期循环执行和非周期性实时任务,存在截止时间——开始截止时间和完成截止时间。硬实时任务HRT,如导弹发射,和软实时任务SRT,如火车订票。
特点:
多路性、独立性、及时性、交互性、可靠性
分时系统与实时系统特点的区别:
多路性在信息查询系统和分时操作系统,系统按分时原则为多个终端提供服务,实时系统为,系统周期性对多路现场信息进行采集,并对对象的控制。
独立性在信息查询系统中的每个终端用户与系统进行交互时,彼此相互独立、互不干扰,同样在实时系统,对信息的采集和对对象的控制,也是互不干扰的。及时性,信息查询系统对实时性的要求依据人们能接受的等待时间,多媒体系统依据播放出来的音频和视频能让人满意,实时操作系统则是以控制对象所要求的截止时间来确定的,一般为秒和毫秒级。
交互性,在信息查询系统,人与系统的交互性仅限于访问系统中某些特定的专用服务程序,它并不能像分时系统那样向终端用户提供数据处理、资源共享服务。多媒体服务也仅限于某些特定的命令,如开始、停止、快进等。
可靠性,分时系统要求系统可靠,实时系统要求系统高度可靠,因为任何差错都可能会带来灾难性的后果。所以在实时系统中,采用了多级容错措施,以保证系统和数据的安全性。
操作系统的运行环境——见
硬件支持
操作系统内核
处理机的双重工作模式
中断与异常 中断
操作系统的五大功能
功能:处理机管理功能、存储器管理(内存管理)、设备管理、文件管理和接口管理。
处理机功能有进程管理、进程同步、进程通信和处理机调度。主要任务有:
①进程管理
为作业创建进程,撤销已结束进程,控制进程在运行过程中的状态转换;
②进程同步
协调多个进程(含线程)的运行;
③进程通信——见tx
实现在相互合作的进程之间进行信息交互;
④处理机调度——见处理机调度
包括作业调度和进程调度。作业调度是按照一定的算法从作业后备队列里选出若干个作业,为它们分配运行所需的资源;进程调度是按照一定的算法从进程的就绪队列中选出一个进程,把处理机分配给它,并设置现场环境,使进程投入运行。
内存管理有内存分配、内存保护、地址映射和内存扩充。
①内存分配,为每道程序分配内存;
②内存保护,确保每道程序仅在自己的内存空间运行,彼此互不干扰;
③地址映射,将地址空间的逻辑地址转换为内存空间对应的物理地址;
④内存扩充,即从逻辑上扩充内存,实现请求调入功能和置换功能等。
设备管理主要包括缓冲管理、设备分配以及设备虚拟等。主要任务为:
①完成用户提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O操作;
②提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备。
文件管理主要功能有:文件存储空间的管理、目录管理、文件的读写管理和保护。主要任务是对用户文件和系统文件进行管理以方便用户使用,并保证文件安全。
接口管理:
为了方便用户对OS的使用,OS向用户提供了 “用户和OS之间的接口” :
1.用户接口
(1)联机命令接口--(这实现了简单的人机交互),又称为命令行方式command-line interface(CLI),是为联机用户提供的,类似于命令行窗口cmd和linux系统终端或控制台,直接键入一条指令,系统完成指定操作,并等待下一条指令的到来,直至作业完成;——(问题:传统通过联机接口来取得OS的服务,既不方便、又花时间,用户需要熟记所有命令及其格式和参数,并逐个键入。)
(2)脱机命令接口,又称为批命令方式,是为批处理作业的用户提供的,用户使用作业控制语言JCL,将指令事先写在作业说明书上,然后把它与作业一起提供给系统。当系统调度到该作业时,是通过调用命令解释程序去对说明书上的指令逐条解释执行,直至遇到作业结束语句,类似于一个c语言程序的return;语句,系统才会停止该作业的运行。
(3)图形命令接口graphics user interface(GUI),为了解决联机命令接口的问题,引入了图形用户接口,用户可以通过菜单和对话框,用移动鼠标选择目标代替键入的方式,这样可以方便对应用程序和文件的操作。
2. 程序接口
它由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序。每当操作系统要求OS提供某种服务时,就调用相应的系统调用。早期的系统调用都是用汇编语言编写的,也就是说只有在用汇编语言编写的程序中,才能使用,在高级语言以及C语言中,提供了与系统调用一 一对应的库函数,这样,应用程序就可以通过调用库函数来使用系统调用。近期,系统调用本身由C语言编写,所以在用C语言编写的程序中可直接使用系统调用。
系统调用
系统调用是应用程序请求OS内核完成某特定功能时的一种过程调用;是用户程序与OS内核的接口。
程序接口是OS专门为用户程序而设置的,被提供给了程序员在编程时使用,也是用户程序取得OS服务的唯一途径。程序接口由一组系统调用组成,因此,系统调用提供了用户程序和OS内核之间的接口。系统调用不仅可以供所有的应用程序来使用,还可以供OS自身使用。每一个系统调用都是一个能完成特定功能的子程序。
在OS中引入系统调用是为了使应用程序通过系统调用,间接调用OS中的相关过程,进而取得相应的服务。
系统调用的类型:
(1)进程控制类系统调用——见
进程控制一般是由OS内核中的原语来实现的。
这里又提到了原语,又提到了系统调用,那么,创建进程到底是怎么创建的呢?
原语和系统调用命令都是操作系统中的功能程序,只是前者执行时不能被其他程序所打断,后者没有这个要求。操作系统中有些系统调用命令是以原语的形式出现的,例如创建进程就是一条原语式的系统调用命令。但并不是所有系统调用命令都是原语。因为如果那样的话,整个系统的并发性就不可能得到充分地发挥。
①创建和终止进程的系统调用,利用创建进程的系统调用和终止进程的系统调用在需要时创建、终止进程;
②获得和设置进程属性的系统调用,进程的属性包括进程标识符、进程优先级、最大允许执行时间等,利用这个系统调用可以确定和重新设置进程的属性;
③等待某事件出现的系统调用,假设进程需要等待某事件发生之后方可执行,那么进程利用这个系统调用让自己进入等待状态(如等待I/O,进程进入阻塞态),一旦等待的时间发生,便可将自己唤醒。
(2)进程通信类系统调用——详细见tx
在单处理机系统中,OS经常会采用信息传递方式和共享存储区方式。
①信息传递方式,在通信前必须先打开一个连接,为此,应由源程序发送一条打开连接的系统调用,而目标进程则应利用接受连接的系统调用表示接受通信;
②操作系统为需要通信的进程创建一个共享空间,进程可以向共享空间中发送信息或接收信息。但是进程对共享空间的访问必须是互斥的,即只有一个进程对共享空间的访问释放,其他进程才能访问共享空间。共享存储分为:基于数据结构的共享和基于存储区的共享。
A.基于数据结构的共享:如共享空间里只能放一个长度为10的数组,这种共享方式速度慢,限制多,是一种低级通信方式。
B.基于存储区的共享:在内存中画出一块共享区域,数据的形式、存放的位置都由进程控制,而不是操作系统。相比之下,这种共享方式速度更快,是一种高级通信方式。
(3)文件操纵类系统调用
①创建和删除文件的系统调用;
②打开和关闭文件的系统调用;
③读和写的系统调用。用户可以利用读文件的系统调用,从已打开文件中读出指定数目的字符,并将它们送至指定的缓冲区中;用户也可以利用写文件系统调用,从缓冲区中将指定数目的字符写入文件中。读和写文件的系统调用是文件操纵类中使用最频繁的系统调用。
系统调用和普通调用的区别:
(1)一般的过程调用,其调用程序和被调用程序都在相同的状态——内核态或用户态;而系统调用的调用程序在用户态,被调用程序在内核态。
(即用户程序通过系统调用,间接调用OS中的程序,并取得服务)。
(2)状态的转换,由于一般的过程调用,调用程序和被调用程序都在同一种状态,所以不需要进行状态的转换;但是在系统调用中,不允许由调用过程(用户态)直接转向被调用过程(内核态),需要通过软中断机制先由用户态转换为内核态(中断是唯一途径),经内核分析才能处理程序。
(3)返回问题(在调度中,被调度程序执行完成后,系统会返回到调用程序,执行调用程序)——在采用了抢占式(剥夺)调度方式的系统中,在被调用程序执行完成后,要对系统中所有要求运行的进程做优先级分析。当调用过程仍具有最高优先级时,才返回到调用进程继续执行;否则,将重新调度,以便让具有最高优先级的进程优先执行。此时,将调用进程放入就绪队列。
(4)嵌套调用,和一般的进程调度一样,系统调用也可以嵌套进行,即在一个被调用过程执行期间,还可以利用系统调用去调用另一个系统调用,但是,有深度限制,如最大深度为6;但一般的过程调用对深度没有限制。