首先,操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件。可以把操作系统定义为:一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。
1.1操作系统的目标及作用
目标:
方便性:主要是方便不同用户使用,如普通用户要求图形化界面,提高使用效率;程序设计人员用高级语言编写程序等。
有效性:提高系统资源利用率,如利用I/O操作时间处理其他任务;提高系统吞吐量,如合理安排流程,缩短运行周期。
可扩充性:方便增添新的功能与模块,以及对原有功能和模块进行修改。
开放性:主要是指遵循世界标准规范,如OSI国际标准,解决计算机硬件与软件兼容性问题。
作用:
1.作为用户与计算机硬件系统之间的接口
含义:用户通过OS使用计算机系统。或者说,用户在OS帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的 程序。
用户通过三种方式使用OS,如下图:
系统调用是操作系统提供给应用程序使用内核功能的接口,只能通过应用程序间接使用。如部分使用系统调用的库函数。
2.作为计算机系统资源的管理者
通俗地说,OS是计算机系统中多种硬件与软件资源“的大管家”。
处理机管理:用于分配与控制处理机;
存储器管理:负责内存的分配与回收;
I/O设备管理:负责I/O设备的分配与操纵;
文件管理:用于实现对文件的存取、共享与保护。
3.作为扩充机器,并实现对计算机资源的抽象
无软件的OS--->覆盖一层I/O管理软件--->覆盖一层文件管理软件--->覆盖一层GUI--->......
推动OS发展的主要动力:
1.不断提高计算机资源利用率和系统吞吐率,如多道批处理系统、SPOOLing系统、虚存技术。
2.方便用户,如人-机交互、GUI。
3.器件的更新换代,如微机芯片8位->16位->32位->64位,相应的OS8位->16位->32位->64位。
4.计算机体系结构的不断发展,如处理机系统、计算机网络。
5.不断提出新的应用需求,如看电影、游戏、安全性。
1.2操作系统的发展过程
无操作系统--->单道批处理系统--->多道批处理系统--->分时系统--->实时系统--->微机操作系统
1.3操作系统的基本特性
并发:
正式这一特征,才使得OS能有效提高系统中的资源利用率,增加系统吞吐量。
并发性:同一时间间隔有两个或多个事件发生;
并行性:同一时刻有两个或多个事件发生;
为了实现程序并发执行,引入进程。
共享:
指系统中的资源可供内存中多个并发执行的进程使用。在宏观上,既限定时间(进程在内存期间),也限定地点(内 存)。
共享的两种方式:
互斥共享方式:打印机、磁带机、系统中的大多数物理设备、栈、变量及表格。只能被互斥共享,即一段时间内, 只能供一个进程访问。这种资源被称为临界资源(一段时间内,只允许一个进程访问的资源)。
同时访问方式:磁盘、可重入码编写的文件。可同时共享,即在一段时间内,多个进程“同时”对它们访问。
并发和共享做为OS的两个最基本的特征,互为存在条件。
虚拟:
通过某种技术将一个物理实体变为若干个逻辑上的对应物。前者为实物,实际存在;后者为虚的,是用户感觉上的。
(1)时分复用技术:利用某设备为一用户服务的空闲时间,转去为其他用户服务,使设备充分利用。
1)虚拟处理机技术:一台处理机,分时为多个用户服务。即利用多道程序设计技术,将一台物理上的处理机虚拟为多 台逻辑上处理机。
2)虚拟设备技术:如虚拟I/O设备、虚拟打印机等。利用分时技术,将一台物理I/O设备虚拟为多台逻辑上的I/O设备。
(2)空分复用技术:利用存储器的空闲时间分区域存放和运行其它的多道程序,提高内存利用率。
虚拟存储技术:内存的分时复用,使用户程序的各个部分分时地进入内存运行。
速度及空间均为1/N,其中N为虚拟的逻辑设备数。
异步:
在多道程序环境下,系统允许多个进程并发执行。由于资源因素及环境特点,如I/O操作、时间片轮转等,使进程的执行不可能“一气呵成”,而是以“停停走走”的方式运行。
在并发环境下,程序的执行顺序、开始时间及结束时间是不确定的(不可准确预知),即程序的异步性。
只要OS有完善的进程同步机制,且运行环境相同,则作业经多次运行,总能获得相同的结果。
1.4操作系统的主要功能
处理机管理功能
主要功能:创建和撤销进程,对诸进程的运行进行协调,实现进程之间的信息交换,以及按照一定的算法把处理机分配给进程。
1.进程控制:为作业创建进程、撤销已结束进程,以及控制进程在运行过程中的状态转换。
2.进程同步:为多个进程的运行进行协调。两种方式:进程互斥方式(临界资源的访问,加锁)和进程同步方式(相 互合作的进程,有条有序的执行,信号量机制)
3.进程通信:实现相互合作的进程之间的信息交换。
4.调度:作业调度(从后备队列(若干作业)—>就绪队列(建立进程))
进程调度(就绪队列—>执行(分配处理机,设置运行现场))
存储器管理功能
1.内存分配和回收:为每道程序分配必要的内存空间以及回收不用的内存空间。
2.内存保护:每道程序的运行内存互不干扰;不允许用户程序访问系统的程序和数据,以及用户程序到非共享的内存。
3.地址映射:将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。
4.内存扩充:借助虚拟存储技术,从逻辑上扩充内存容量,下面两种机制使得用户感觉内存容量比实际的大得多。
机制:请求调入(内存中仅有部分程序和数据即可执行,之后将需要的再调入内存)
置换功能(将内存中暂时不用的一部分程序和数据调入硬盘,以腾出内存空间)
设备管理功能
1.缓冲管理:有效地缓和CPU和I/O设备速度不匹配的问题。
2.设备分配:根据用户进程的I/O请求、系统现有情况及按照某种设备分配策略,为之分配所需的设备。
3.设备处理:用于CPU和设备控制器之间的通信,即CPU向设备控制器发出I/O命令,要求它完成指定的I/O操作。
4.虚拟设备:将实际的物理设备虚拟为多个逻辑上的设备
文件管理功能
1.文件存储空间的管理:分配外存空间、设置数据结构以及对存储空间进行分配与回收。
2.目录管理:为每个文件建立一个目录项、实现文件共享以及快速目录查询。
3.文件的读/写管理和保护:
读/写管理:由于读和写操作不会同时进行,故可合用一个读/写指针。
保护:防止非法用户存取文件;防止不正确方式使用文件。
OS与用户之间的接口
1.用户接口(命令接口):由一组键盘操作命令及命令解释程序组成。
2.程序接口(系统调用):为用户在执行中访问系统资源而设置的,是用户程序取得OS服务的唯一途径。
由一组系统调用组成,每一个系统调用都是一个能完成特定功能的子程序。
3.GUI:图形用户接口,各种图标,形象方便。
1.5操作系统结构
传统OS结构:无操作系统—>模块化结构OS—>分层次结构OS
无操作系统:由众多的过程直接构成,只注重功能的实现和获得高的效率,缺乏首尾一致的思想。
OS庞大杂乱;程序难以理解与维护。
模块化OS:即模块—接口法,将一定的功能划分为众多模块,之间通过接口实现交互。
高内聚(各模块的独立性)、低耦合(相互联系和相互影响的程度)
OS可维护性提高、加速开发过程;各模块之间的接口难以设计、各模块的“无序性”。
分层次OS:将模块—接口法的无序性变为有序性,自底向上铺设中间层。下层通过层间接口为上层提供服务。
保证正确性、易扩充和易维护;系统效率低,分层单向依赖。
客户/服务器模式OS:三部分构成,客户机、服务器以及网络系统。客户机与服务器之间通过消息机制进行多次通信。
客户机发出请求;服务器被动地等待来自客户机的请求。
数据的分布式处理和存储;灵活性和可扩充性。
存在着不可靠性和瓶颈问题。一个服务器一旦出故障,整个网络将瘫痪。服务器重负荷,响应时间延长。
面向对象的程序设计:封装、继承和多态。
通过“重用”提高产品质量和生产率;系统的易修改性和易扩展性;正确性和可靠性。
微内核OS结构:微内核并非一个完整的OS,而是将OS的最基本的部分放入微内核,而把绝大部分功能放在微内核外的一组服 务器(进程)中实现。
放在微内核的基本功能:与硬件处理(CPU与I/O设备硬件相关)紧密相关的部分;一些较基本的功能;客户与 服务器之间的功能。
机制(实现某一功能的具体执行机构)与策略(参数与算法)分离:机制放在微内核中。如进程管理、存储器 管理及I/O管理等一分为二,将作为机制的那部分放入微内核中。
所有的服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,当某个服务器出现问题 时,不会影响内核,也不会影响其他服务器。
微内核的缺点:效率降低。在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内 核模式与上下文的多次切换。
普通OS只需进行两次上下文切换:执行系统调用由用户态转向系统态;系统完成服务,由系统泰转向用户态。
而微内核中至少需要经过4次上下文切换。下面通过一个例子理解。
客户机请求文件服务器服务,文件服务器需要磁盘服务器帮助。需要进行8次上下文切换
也就是说,客户与各个服务器之间交互,必须通过微内核,即客户—>微内核—>服务器。