OS(一):操作系统的概述
1、操作系统
计算机系统由硬件和软件两部分组成,操作系统(Operation System),简称OS,是管理计算机『硬件』与『软件』资源的计算机程序。
2、操作系统的作用
2.1、OS是用户与计算机硬件系统之间的接口
OS处于用户与计算机硬件系统之间,用户可通过OS来使用计算机系统。
用户可以通过图形界面 或 命令接口操作硬件资源。
2.2、OS管理计算机系统资源
计算机资源归结为4类:处理器、存储器、I/O设备及信息(数据与程序)。OS的主要功能是针对这四类资源进行有效的管理。
2.2.1、处理机管理
分配和控制处理机,进程控制、进程同步、进程通信、调度。
2.2.2、存储器管理
内存的分配与回收,内存分配、内存保护、地址映射、内存扩充。
2.2.3、I/O设备管理
I/O(输入/输出)设备的分配与操纵,缓冲管理、设备分配、设备处理。
2.2.4、文件管理
文件的存储、共享和保护,文件存储空间的管理、目录管理、文件的读/写管理和保护。
2.3、OS实现了对计算机资源的抽象
OS将具体硬件资源抽象成软件资源,方便进程调用。
OS实现了对硬件的封装,提供接口,隐藏了硬件的实现细节。
3、操作系统的目标
3.1、有效性
3.1.1、提高系统资源的利用率
使CPU、I/O设备等各种闲置资源得到充分利用。
3.1.2、提高系统的吞吐量
合理组织计算机的工作流程,进一步改善资源的利用率,加速程序的运行, 缩短程序的运行周期。
3.2、方便性
配置OS后可使计算机系统更容易使用,机器语言 -> 命令。
3.3、可扩充性
随着计算机技术的发展,计算机系统软硬件的也得到了发展,对操作系统提出了更高的功能和性能要求,适应计算机硬件、体系结构以及应用发展的要求。
4、操作系统的基本特性
4.1、并发
4.1.1、并发与并行
1、并行
两个或多个事件在同一时刻发生。
可并发执行的任务在不同的CPU上,并行执行。
侧重于关注有多少个CPU可以同时执行任务的能力,与处理机数量有关。
2、并发
两个或多个事件在同一时间间隔内发生。
并发性是指在一段时间内宏观上有多个程序在同时运行(微观上是分时交替执行)。宏观上,处理机同时执行多道程序;微观上,处理机在多道程序间高速切换(分时交替执行);
侧重于关注单个处理机同一时间段内处理任务数量的能力
4.1.2、进程
程序是静态实体,不能独立运行,也不能其他程序并发执行。
进程是在系统中能独立运行并作为资源分配的基本单位,由一组机器指令、数据和堆栈等组成,是一个能独立运行的活动实体,多个进程之间可并发执行和交换信息。
进程是多个程序并发执行的基础。
4.1.3、线程
进程是操作系统中拥有资源并作为独立运行的基本单位。
因进程间的切换对操作系统开销很大,引入了比进程更小的单位 - 线程。
一个进程包含若干个线程,这些线程可以利用进程拥有的资源。
4.1.4、进程与线程的区别
进程:分配资源的基本单位
线程:独立运行和独立调用的基本单位
4.2、共享
系统中的资源供内存中多个并发执行的进程(线程)共同使用,这种被共同使用资源成为共享资源。
4.2.1、互斥共享方式
一段时间内只允许一个进程(线程)访问共享资源,在这段时间内,其他进程也要对该资源进行访问时,必须要要等待正在访问进程(线程)释放该资源,否则必须等待,这种资源共享方式被称为互斥式共享。
在一段时间内置允许一个进程访问的资源称为临界资源或独占资源。
4.2.2、同时访问方式
允许一段时间内由多个进程对资源进行访问,这种资源称为共享资源。
4.3、虚拟
OS通过某种技术把一个物理实体变为若干个逻辑上的对应物,实现虚拟的技术被称为虚拟技术。操作系统利用两种方式实现了虚拟技术,时分复用技术 和 空分复用技术。
4.3.1、时分复用技术(TDM,Time Division Multiplexing)
时分复用,即分时使用方式。
以『时间』作为信号分割的参量,使各路信号在时间轴上互不重叠;
使用TDM按时间分割成N部分,每台虚拟设备平均时速 <= 物理设备的1/N。
将提供给整个信道传输信息的时间划分成若干时间片(时隙),并将这些时隙分配给每一个信号源使用;本质上还是将多个任务加入处理队列,按时间顺序处理;
利用多道程序设计技术, 把一台物理上的处理机虚拟为多台逻辑上的处理机,在每台逻辑处理机上运行一道程序。把用户所感觉到的处理机称为虚拟处理器。
4.3.2、空分复用技术(SDM,Space Division Multiplexing)
利用空间的分割实现复用的一种方式;
使用SDM按空间分割成N部分,每台虚拟设备平均空间 <= 物理设备的1/N。
将一台硬盘虚拟为多台虚拟磁盘(若干个卷),这样使用起来既方便又安全。
4.4、异步
多道程序环境下,允许多个程序并发执行;单处理机环境下,多个程序分时交替执行。
程序执行的不可预知性:
·获得运行的时机
·因何暂停
·每道程序需要多少时间
·不同程序的性能,比如计算多少,I/O多少
由于程序执行的不可预知性,所以出现了异步特征。
4.5、基本特性间的关系
4.5.1、并发和共享互为存在条件
资源共享是以进程的并发执行为条件的,若系统不允许程序并发执行,则不存在资源共享问题;若系统不能对资源共享实施有效管理,协调好进程对共享资源的访问,会影响程序的并发执行。
4.5.2、并发是共享、虚拟、异步的前提
共享:只有多个程序访问统一资源,才会出现共享;
虚拟:只有在并发的情况下,才会让CPU高速切换;
异步:多个程序并发执行,才会使OS无法得知每道程序事件,及其调度时间。
5、操作系统的基本功能
操作系统具有处理机管理、存储器管理、设备管理和文件管理的基本功能。
5.1、处理机管理功能
多道程序系统中,处理机的分配和运行以进程为基本单位,对处理机的管理可归结为对进程的管理。一个进程中包含多个线程,OS也包含对线程的管理。
处理机管理的主要功能:创建和撤销进程(线程)、协调进程(线程)的运行、实现进程(线程)间的信息交换,并按照一定的算法把处理机分配给进程(线程)。
5.1.1、进程控制
进程控制主要是为任务创建进程,撤销已结束的进程,以及控制进程在运行过程的状态转换。进程控制具有为一个进程创建或撤销若干个线程的概念。
5.2.2、进程同步
进程是以异步方式运行,为使进程有条不紊的运行,OS提供同步机制。
进程同步主要是为多个进程(含线程)的运行进行协调。
2.1、进程互斥方式
进程(线程)对临界资源进行方式时,采用互斥方式。
2.2、进程同步方式
进程(线程)间合作完成共同的任务,同步机制对各进程(线程)的执行次序加以协调。
5.1.3、进程通信
进程通信主要是为了实现在相互合作的进程之间的信息交换。
当相互合作的进程(线程)在同一计算机系统,可由源进程利用发送命令直接将消息(Message)挂到目标进程的消息队列上,以后由目标进程利用接收命令从其消息队列中取出消息。
5.1.4、调度
在后备队列上等待的每个作业都需要经过调度才能执行。调度分为 作业调用 和 进程调度。
4.1、作业调度
按照一定的算法从后备队列中获取若干个作业,为它们分配运行所需的资源。
首先是分配内存,将它们调入内存;再是建立就绪进程;最后按照一定的算法将它们插入就绪队列中。
4.2、进程调用
从进程的就绪队列中,按照一定的算法选出一个进程,将出处理机分配给此进程,为器设置运行现场,使进程投入执行。
在多线程的OS中,线程作为独立运行和分配处理机的基本单位,因此须把就绪线程排成一个队列,每次调度时,从就绪队列中选出一个线程,将处理机分配给它。
5.2、存储器管理功能
存储器管理应具有内存分配、内存保护、地址映射和内存扩充等功能。
5.2.1、内存分配
内存分配为每道程序分配内存空间,提高存储器的利用率。
允许正在运行的程序申请附加内存空间,适应程序和数据动态增长。
内存分配的两种方式:静态、动态。
1、静态分配
静态分配方式,每个作业的内存空间在作业装入时是确定的,在作业装入后的整个运行期间,不允许该作业再申请新的内存空间。
不允许作业在内存中移动。
2、动态分配
动态分配方式,每个作业所要求的基本内存空间在装入时确定,允许作业在运行过程中继续申请新的附加内存空间。
允许作业在内存中"移动"。
3、内存分配机制需具备的功能
3.1、内存分配数据结构
记录内存空间的使用情况,作为内存分配的依据。
3.2、内存分配功能
按照一定的内存分配算法为用户程序分配内存空间。
3.3、内存回收功能
使用完的内存,通过用户的释放请求完成系统的回收功能。
5.2.2、内存保护
内存保护是要确保每道用户程序都只在自己的内存空间内运行,彼此互不干扰。
用户程序不可以访问操作系统的程序和数据,不可以转移到非共享的其它用户程序中去执行。
较为简单的内存保护机制是设置两个界限寄存器,分别用于存放正在执行程序的上界和下界。系统必须对每条指令要访问的地址进行检查,若发生越界,则发出越界中断请求,停止程序的执行
5.2.3、地址映射
一个应用程序(源程序)经编译后,会形成若干个目标程序;目标程序经过链接形成可装入程序。这些程序的地址是从"0"开始的,程序中的其它地址是相对起始地址计算的。地址形成的地址范围被称为"地址空间",地址被称为 "逻辑地址" 或 "相对地址"。由内存中一系列单元所限定的地址范围称为"内存空间",其中的地址称为"物理地址"。
在多道程序环境中,每道程序不可能都从"0"地址开始装入(内存),如此会导致空间内的逻辑地址与内存空间中的物理地址不一致。
储存器管理必须提供地址映射,将地址空间的逻辑地址转换为内存中与之对应的物理地址。
5.2.4、内存扩充
内存扩充,借助于虚拟存储技术,从逻辑上扩充内存容量。内存扩充机制如下:
1、请求调入功能
允许在装入一部分用户程序和数据的情况下,便能启动该程序运行。在运行过程中,发现要继续运行时所需的程序和数据尚未装入内存,可向OS发出请求,由OS从磁盘中将所需部分调入内存,继续运行。
2、置换功能
内存中无足够的空间装入需要调入的程序和数据时,系统将内存中一部分暂时不用的程序和数据调至磁盘上,腾出内存空间,再将需要的调入的部分装入内存。
5.3、设备管理功能
设备管理的主要任务:完成用户进程提出的I/O请求;为用户进程分配需要的I/O设备;提高I/O速度及I/O设备的利用率。
为实现上述任务,设备管理需要缓冲管理、设备分配和设备处理的功能。
5.3.1、缓冲管理
为有效的缓和CPU与I/O设备速度不匹配的矛盾,在I/O设备与CPU之间引入缓冲。
不同的系统采用不同的缓冲区机制。常见的缓冲区机制:单缓冲机制、双向同时传送数据的双缓冲机制、多个设备同时使用的公用缓冲池机制。
5.3.2、设备分配
设备分配的任务是根据用户进程的I/O请求,按照某种分配策略,分配其所需的设备。
为实现设备分配。系统中应设置设备控制表、控制器控制表等数据结构,用于记录设备及控制器标识符和状态。
对独占设备(临界资源)的分配,应考虑设备被分配出去后系统是否安全,及设备使用完后的系统回收。
5.3.3、设备处理
设备处理的基本任务是实现CPU和设备控制器之间的通信。
CPU向设备控制器发出I/O命令,控制器完成指定的I/O操作;CPU接收从控制器发来的中断请求,给与迅速的响应和相应的处理。
5.4、文件管理功能
文件管理的主要任务是对用户文件和系统文件进行管理,并保证文件的安全性。文件管理具有对文件存储空间的管理、目录管理、文件的读/写管理,以及文件的共享和保护。
5.4.1、文件存储空间的管理
主要任务是为每个文件分配必要的外存空间,提高外存利用率,并能有助于提高文件系统的存、取速度。
OS中有相应的数据结构,用于记录文件存储空间的使用情况,以供分配存储空间时进行参考;OS具有对存储空间进行分配和回收的功能。
对存储空间的分配,采用离散分配方式,减少外存零头,以盘块为基本分配单位,盘块大小一般为1-8KB。
5.4.2、目录管理
使用户方便的地在外存上找到自己所需的文件,通常由系统为每个文件建立一个目录项。目录项包括文件名、文件属性、文件在磁盘上的物理位置。若干个目录项构成一个目录文件。
目录管理的主要任务是为每个文件建立其目录项,并对众多目录项加以有效的阻止,实现按名存取。
目录管理还应具有 文件共享、快速目录查询 的功能。
5.4.3、文件的读/写管理和保护
1、文件的读/写管理
根据用户的请求,从外存中读取数据,或将数据写入外存。
进行文件读(写)时,根据用户给出的文件名检索文件目录,获取文件在外存中的位置;利用文件读(写)指针,对文件进行读(写)。读(写)完成,修改读(写)指针,为下一个读(写)做准备。
2、文件保护
防止系统中的文件被非法窃取和破坏,在文件系统中必须提供有效的存储控制功能。
6、操作系统的结构设计
现代操作系统采用微内核OS结构。
6.1、微内核OS的基本概念
微内核操作系统结构,无公认的定义,可以从是个方面进行描述
6.1.1、足够小的内核
微内核是OS中最基本的部分,包含OS最基本的核心功能,并非一个完成的OS。微内核常用于:实现与硬件紧密相关的处理、实现较基本的功能、负责客户端和服务器之间的通信。
6.1.2、基于客户/服务模式
将操作系统中最基本的部分放入内核中,把操作系统绝大部分功能放在微内核外的一组服务器(进程)中实现。
如进程服务器、虚拟存存储服务器、I/O设备管理服务器等都被作为进程实现,运行在用户态,客户与服务器之间借助微内核提供的消息传递机制来实现信息交互。
6.1.3、机制与策略分离
机制:实现某一功能的具体执行机构。
策略:在机制的基础上,借助于某些参数个算法实现该功能的优化,或达到不同功能的目标。
机制处于系统的基层、策略处于系统的高层。在OS中。机制放在微内核中。
6.1.4、面向对象技术
基于面向对象技术中的 "抽离" 和 "隐蔽" 原则控制系统的复杂性。
利用"对象"、"封装"和"继承"等特性确保OS的特性。
6.2、微内核的基本功能
6.2.1、进程(线程)管理
多数的微内核OS,进程管理功能的实现,都采用 机制与策略分离 原理。
例如:
为实现进程(线程)调度功能,需设置一个或多个调度优先级队列,将指定优先级进程(线程)从队列中取出并执行,这部分属于调度功能的机制,该功能在微内核中;
如何确定进程的优先级,如何修改优先级属于策略问题,放入微内核外的进程管理服务器中。
6.2.2、低级存储器管理
微内核中只配置最基本的低级存储器管理机制。
例如:
用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,依赖于机器,放入微内核中。
实现虚拟存储器管理的策略,采用何种页面置换算法、何种内存分配和回收策略,放在微内核外的存储器管理服务器中实现。
6.2.3、中断和陷入处理
微内核的主要功能是捕获发生的中断和陷入时间,并进行相应的前期处理。
例如:
中断现场保护、识别中断和陷入的类型,将有关事件的信息转换为消息后,发送给相关服务器,由服务器根据中断或陷入的类型,调用相应的处理程序进行后期处理。
6.2.4、总结
微内核OS将进程管理、储存器管理以及I/O管理功能中的属于机制的很小一部分放入微内核中,其他绝大部分放在微内核之外的各种服务器中实现。
6.3、微内核的优缺点
6.3.1、优点
融入了面对对象技术
提供了分布式系统的支持 (客户和服务器、服务器与服务器之间的通信,采用消息传递通信机制进行的)
提高系统的可扩展性
增强系统的可靠性
6.3.2、缺点
较早期的OS,微内核OS的运行效率有所降低。
在完成一次客户对OS提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。
早期的OS中,一般只需进行两次上下文的切换。一次在执行系统调用后,用户态转向系统态,一次在系统完成用户请求的服务后,系统带返回用户态。
微内核OS中,客户和服务器、服务器和服务器之间的通信,都需要通过微内核,导致同样的服务请求至少需要四次上下文切换。第一次:客户发送请求消息给内核,请求取得某服务器特定服务;第二次:由内核把客户的请求消息发往服务器;第三次:服务器完成客户请求后,把响应信息发送到内核;第四次:内核将响应消息发送给客户。