OS的定义
OS是掌控(管理)计算机上所有事情的系统软件。
- 控制和管理计算机系统的所有硬件和软件资源。
- 合理地组织计算机的工作流程,保证计算机资源的公平竞争和使用。
- 方便用户使用计算机。
- 防止对计算机资源的非法侵占和使用。
- 保证OS自身的正常运转。
OS的层次模型
用户接口
(命令接口、程序接口、图形用户接口)
对对象操纵和管理的软件集合
(处理机管理软件、存储器管理软件、设备管理软件、文件管理软件)
操作系统对象
(处理机、存储器、设备、文件和作业)
操作系统对象就是OS操作和管理的对象。
命令接口是用户和OS的接口,程序接口是应用程序和OS的接口。
OS的功能
一、存储管理
(1)、内存分配:为每道程序分配内存,两种方式如下:
静态分配:每个作业的内存空间是作业装入时确定的,装入后,不允许再申请新的内存空间,也不允许在内存中“移动”;
动态分配:每个作业的基本内存空间也是在装入时确定,但允许在运行中申请新的内存空间也允许“移动”
要完成内存空间分配应有:内存分配数据结构(记录内存使用情况)、内存分配功能(系统按内存分配算法分配)、内存回收功能(系统对用户不再需要的内存通过用户释放去完成系统的回收)
(2)、内存保护:确保每道程序都在自己的内存空间中运行互不干扰。即决不允许用户程序访问操作系统的程序和数据;也不允许转移到非共享的其它用户程序中去执行。因此需要内存保护机制,一种较为简单的内存保护机制是设置两个界限寄存器,分别用于存放正在执行程序的上届和下届。系统需对每条指令所访问的地址进行越界检查,如果发生越界,便发出越界中断请求,以停止该程序的执行。若完全用软件实现,需要增加若干指令去进行越界检查,将显著降低程序的运行速度,因此越界检查都是由硬件实现。当然对发生越界后的处理还须软件配合来完成。
(3)地址映射
一个应用程序(源程序).cpp经编译compile后,通常会形成若干个目标程序.obj;这些目标程序再经过连接link而形成可装入程序。这些程序地址都是从“0”开始,其他地址都是相对于起始地址计算的;由这些地址所形成的地址范围称为“地址空间”。其中的地址称为“逻辑地址”或“相对地址”。此外,由内存中的一系列单元所限定的地址范围称为“内存空间”其中的地址称为“物理地址”。
在多道程序环境中,地址空间中的逻辑地址和内存空间中的物理地址是不可能一致的,因此存储器管理必须提供地址映射功能,以将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址,该功能也由应硬件完成。
(4)内存扩充
由于物理内存容量有限,因此难于满足用户需要,势必影响系统的性能。这里的内存扩充是指借助虚拟存储技术,从逻辑上去扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,可使更多用户程序能并发运行。需要内存扩充机制,实现如下功能:
请求调入功能:(现装现卖)允许在仅装入一部分用户程序和数据的情况下,启动该程序运行。在运行过程中对当发现继续运行所需的程序和数据尚未装入内存时,可向OS发送请求由OS将所需部分调入内存,以便继续运行。
置换功能:(舍不舍得)若内存中已无足够空间来装入需要调入的部分时,系统应能将内存中的一部分暂时不用的程序和数据调至磁盘上,然后将所需部分调入内存。
二、处理器管理
处理器的分配和运行都是以进程为基本单位
(1)进程控制
创建进程为其分配资源,运行结束时撤销进程并回收资源,及控制进程在运行过程中的状态转换。在OS中通常是利用若干条进程控制原语或系统调用,来实现进程控制。(要做就做全套)原语,指用以完成特定功能、具有“原子性”的一段程序。原子性,即程序中一组动作,不被其他任何操作打断。最基本的原语有创建新进程的进程原语,撤销进程原语。
(2)进程同步
对诸进程的运行进行协调,有如下两种协调方式:
进程互斥方式:指诸进程在对临界资源访问时,应采用互斥方式
进程同步方式:在互相合作完成共同任务的进程间,由同步机构对他们的次序加以协调。
最简单的实现进程互斥的机制是,为每种临界资源配一把锁,设置一对关锁原语Lock(w)和开锁原语Unlock(w)。而实现进程同步最常用的机制使信号量。
(3)进程通信
进程相互合作去完成一共同任务时,需交换信息。
直接通信方式:用与进程位于同一计算机系统时。由源进程利用发生命令直接将message挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。
间接通信方式(找个中间人,银弹策略):用于进程处于不同系统中时。由源进程利用发生命令将message送入一个存放消息的中间实体,以后由目标进程利用接收命令从中间实体中取走消息。该中间实体通常称为邮箱,相应的通信系统称为电子邮件系统???
(4)调度
等待在后边队列上的每个作业通常要经过调度,包括作业调度和进程调度两步才能执行。
作业调度的基本任务,是从后备队列中按照一定的算法,选择出若干个作业,为他们分配必要的资源(首要是内存)。将他们调入内存后,变为它们建立进程,使之称为可能获得处理器的就需进程;并将他们按一定算法插入就绪队列。
进程调度:从进程的就绪对垒中,按一定算法选一新进程,把处理机分配给它,并为它设置运行现场,使进程投入运行。
这两调度算法有些是相同的如FCFS(First come First service)算法,优先权高优先调度算法。
三、设备管理
(1)缓冲管理
管理好各种类型的缓冲区,如字符缓冲区和字符块缓冲区,以缓和CPU和I/O速度不匹配的矛盾,最终达到提高CPU和I/O设备利用率,进而提高系统吞吐量。(比如串口I/O)
最常见的缓冲区机制有单缓冲区机制,能实现双向同时传送数据的双缓冲机制,以及能供多个设备同时使用的公用缓冲池机制。
(2)设备分配
根据用户的I/O请求,位置分配其所需的设备。若在CPU和I/O间还存在设备控制器和I/O通道时,还须为分配出去的设备分配响应的控制器和通道。
为实现该功能,系统应配置设备控制表、控制器控制表等数据结构,用于记录设备及控制器的标识符和状态。对于独占设备(临界)的分配,还应考虑该设备被分配出去后,系统是否安全,设备用完后,还应立即回收。
(3)设备处理(设备驱动程序)
任务是实现CPU和设备控制器之间的通信。即由CPU向设备控制器发出I/O指令,要求它完成指定的I/O操作;并能接受由设备控制器发来的中断请求,给予及时的响应和相应的处理。
处理过程:
首先设备处理程序检查I/O请求的合法性、了解设备的状态是否空闲、了解有关传递参数以及设置设备的工作方式。
然后,便向设备控制器发出I/O命令,启动I/O设备区完成指定的I/O操作
最后是及时响应由控制器发来的中断请求,并根据该中断请求的类型,调用相应的中断处理程序进行处理。
(4)设备独立性和虚拟设备
设备独立性是指应用程序独立于物理设备,以使用户编址的程序与实际使用的物理设备无关。(就是说应用程序用的设备是OS提供的设备的接口,OS屏蔽了具体使用哪个设备?,银弹策略)可提高用户程序的可适应性,易于实现输入、输出的重定向(即I/O操作中所使用的设备科方便地重新指定)。
虚拟设备,是把每次仅允许一个进程使用的物理设备,改造为能同时供多个进程共享的设备。提高了设备利用率,加速了程序的运行。
四、文件管理
(1)文件存储空间的管理
系统设置相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时参考。
还应具有对存储空间进行分配和回收的功能。一般对存储空间的分配次啊用离散分配方式,以减少外存零头,并以盘块为基本分配单位。盘块的大小通常为512字节至4k字节。
(2)目录管理
方便在外存在寻找用户所需文件。通常有系统为每个文件建立一个目录项,包含文件名、文件属性、文件在磁盘上的物理位置等,最终构成一个目录文件。目录管理的主要任务,是为每个文件建立起目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取。
(3)文件的读写管理和存取控制
由于读和写操作不会同时进行,故可合用一个读/写指针。
一个完善的文件系统中,可以采用多级保护设施来达到保护文件存取控制的目标。第一进行系统级存取控制,使用空灵。第二级是用户级存取控制,通过对用户分类并为其分配适当的“文件存取权限”等方法实现。第三级文件级存取控制,通过设置文件属性(只读、只执行、读/写等属性)来控制对文件的存取。
五、用户接口
(1)命令接口
分为联机用户:由一组键盘操作命令及命令解释程序所组成。用户在终端或控制台上键入一命令后,系统理解转入命令解释程序。完成指定功能后,控制又返回终端或控制台。用户可通过此实现对作业控制。
脱机用户接口:为批处理作业的用户提供的,由一组作业控制语言JCL组成。批处理作业的用户不能直接与自己的作业交互作用,只能委托系统代替用户对作业进行控制和干预。
(2)程序接口
是为用户在执行中访问系统资源而设置的,是用户程序取得OS服务的唯一途径,由一组系统调用完成。
(3)图形接口
将联机用户接口演化而来,得到图形接口,更方便直观。
六、网络与通信管理
(1)网络资源管理
计算机联网的目的是进行资源共享,网络操作系统应能够实现网上资源共享,管理用户对资源的访问,保证网络信息资源的安全性和完整性。
(2)数据通信管理
计算机联网后站点之间可以互相传送数据。数据通信管理为为网络应用提供必要的网络通信协议,处理网络信息传输过程中的物理细节;通过通信软件,按照网络通信协议完成网络上计算机之间的信息传输。
(3)网络管理
包括网络性能管理、安全管理、故障管理、配置管理和日志管理。
OS的基本特征
一、并发性
并发性是操作系统最重要的特征,其他特征以并发性为前提。并发性是指两个或两个以上的事情或活动在同一时间间隔内发生(不是同一时刻)。即,在计算机系统中同时存在多个进程,从宏观上看,这些进程是同时运行并向前推进着;从微观上讲,任何时刻只能有一个进程执行,单CPU条件下,则这些进程在CPU上交替执行。
通常的程序是静态实体(Passive Entity),它们是不能并发执行得。为了让程序并发执行,系统必须分别为每个程序建立进程(进程的来由),即在系统中能独立运行并作为资源分配的基本单位,他是一个活动实体。
二、共享性
在内存中并发执行的多个进程可以共同使用系统中的资源。
互斥共享方式:有些资源如打印机,虽然可同时供多个进程使用,但一段时间内却只允许一个进程访问该资源(称为临界资源),所以需要同步的方式进行访问使用。临界资源都要求互斥地被共享。
同时访问方式:允许在一段时间内由多个进程同时对它进行访问,这里的“同时”往往是宏观上的,微观上这些进程也可能是交替地对该资源进行访问。这种方式的典型资源是磁盘。
三、虚拟性(Virtual)
虚拟性 的本质含义是指一个物理实体映射为多个逻辑实体。
例如,多道分时系统中,虽只有一个CPU,但每个终端用户却都认为是有一个CPU在专门为他服务。也可把一条物理信道虚拟为多条逻辑信道(虚信道)。在os中虚拟的实现,主要是通过分时使用的方法。如果n是某一物理设备所对应的虚拟的逻辑设备,则虚拟设备的速度必然是物理设备速度的1/n.
四、不确定性
进程的执行由于资源等因素的限制并非“一气呵成”,而是走走停停,因此是以一部方式运行的。尽管如此,只要运行环境相同/初始数据相同,作业经多次运行,都会获得完全相同的结果,因此,异步运行是允许的。
OS的分类
无OS时的计算机系统:人工操作方式-à脱机输入输出方式
一、批处理系统(成批处理特性)
单道批处理系统:
多道批处理系统:用户所提交的作业都先存放在外存上并排成一个队列称为“后备队列”;然后由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使他们共享CPU和系统中的各种资源,从而内存中驻留多道程序并行执行。(作业从提交到完成,需要进过两次调度:作业调度算法从外存的队列中选入内存。进程调度算法,从内存中作业中选择其一将处理器分配给其进行执行)
优点:
1.、提高CPU利用率。I/O是在准备数据,所以在I/O完成前CPU是无法完成操作的。这样显然会降低CPU的利用率。所以多道程序,可以让多个程序装入内存,可交替执行,从而当正在运行的程序因I/O而暂停执行时,系统可调度另一道程序运行,从而保持了CPU处于忙碌状态。
2、可提高内存和I/O设备的利用率,如果单道程序,则偌大的内存只能装入一个程序,这样必定浪费内存。
3、增加系统吞吐量。
缺点:
1(指作业进入系统到执行完成退出系统的时间)平均周转时间长,。由于作业要排队,依次进行处理,因而作业的周转时间较长。
2无交互能力,用户一旦提交作业,就不能再与自己的作业进行交互,修改和调试不方便。
二、分时系统(比如windows)(交互特性)
指在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户共享主机中的资源,每个用户都可通过自己的终端以交互(人机交互)的方式使用计算机。
实现的关键问题:及时接收(能同时接收多个终端上输入的数据,为每个终端配置一个缓冲区,用来暂存用户键入的命令),及时处理(各个用户的作业都必须在内存中,且能频繁获得处理机而运行,此目标要求所有的用户作业都直接进入内存)
实现方法:
(1)用户作业不能先进入磁盘,然后再调入内存。
(2)不允许一个作业长时间占用处理器直至它运行结束或发生I/O请求后,方才调度其他作业运行。应规定每个程序只运行很短的时间(通常称为时间片),然后暂停该作业的运行并立即调度下一个程序的运行。
三、实时系统(比如DSP中RTOS)(实时特性)
所谓实时是指“及时”“即时”,实时系统是指在规定时间内完成对该事件的处理,并控制所有实时任务加以分类。
实时系统是以任务来划分,并由他们反映或控制外部时间,因而带有紧迫性。
划分:
执行任务是否呈现周期性:周期性实时任务(周期性的控制某个外部时间)、非周期性实时任务。
对截止时间的要求来划分:硬实时任务(必须满足任务对截止时间的要求,否则可能出现难以预测的结果)
软实时任务(也有个截止时间,但并不严格,错过不会有太大影响)
注意:实时系统也与分时系统一样具有多路性、独立性,可为多个终端服务且独立,但对实时系统而言,其多路性表现在经常对多路的现场信息进行采集或对多个对象或多个执行机构进行控制。
实时系统也具交互性,但仅限于访问系统中某些特定的专用服务出现,而不想分时系统那样提供数据处理服务、资源共享等服务。
批处理系统、分时系统和实时系统是三种基本的操作系统类型。一个实际的os可能兼有三者或其中两者的功能。