操作 系统的概念
计算机系统自上而下可以分成四个部分,用户、应用程序、操作系统、硬件(这里的 划分与计算机组成原理的分层不同),而操作系统作为软件的核心,是计算机系统中最基本的系统软件。所以,操作系统(operating system,OS)是指控制和管理整个计算机系统的软件和硬件资源,并合理地组织调度计算机的工作和资源的分配,以提供给用户和其他软件方便的接口和环境的程序集合。
操作系统的特征
包括并发、共享、虚拟、异步。
并发是指计算机系统中同一时间间隔内存在多个运行着的程序,引入进程的目的是使程序能并发执行,操作系统的并发性由分时实现;注意与并行的区别(同一时刻)。
共享是指系统中的资源可供内存中多个并发执行的进程共同使用,分为两种方式:
——互斥共享方式:一段时间内只允许一个进程访问该资源
——同时访问方式:允许多个进程“同时”对该资源进行访问,是分时共享,即要满足分时访问的效果与连续完成的效果相同,宏观上就体现出同时访问。
并发和共享是计算机操作系统两个最基本的特征。共享是以并发为条件的,共享管理影响程序并发执行
虚拟是指通过时分复用(CPU的分时共享)以及空分复用(如虚拟内存)技术实现把一个物理实体虚拟为多个
异步是指允许多个程序并发执行,而进程的执行不是一贯到底而是走走停停,以不可预知的速度向前推进
目标——给多道程序提供良好的运行环境
功能——作为计算机系统资源的管理者,处理机管理(进程管理)、存储器管理、文件管理、设备管理
——作为用户和计算机硬件系统之间的接口,命令接口(分为联机命令接口(适用于分时或者实时系统)和脱机命令接口(适用于批处理系统))、程序接口(系统调用命令(目前最流行的就是GUI—图形用户界面,是对操作系统的调用))
——作为扩充机器,虚拟机(覆盖了软件的机器)
手工操作阶段(无os),突出缺点:1. 用户独占全机,2.cpu等待手工操作
批处理阶段(os出现),单道批处理系统—>多道批处理系统,前者具有自动性、顺序性、单道性的特点;后者具有多道、宏观上并行,微观上串行的特点;
分时操作系统,是实现人机交互的多道批处理系统,具有及时性、独立性、交互性、同时性的特点
实时操作系统,在规定时间内完成事件,具有及时性和可靠性的特点
网络操作系统,服务与计算机网络,集中控制
分布式操作系统,若干计算机同等地位相互协调的完成网络通信,具有分布性和并行性的特点
个人操作系统,如Windows、Linux等
操作系统在具体实现上划分了用户态和核心态,核心态程序是用户态的管理者,核心态才能使用特权指令(计算机中不允许用户直接使用的命令),CPU在核心态可以执行指令的全集
**核心态(内核)**包括以下四个方面内容:
综上,特权指令实际上包括系统调用类的指令和一些针对时钟、中断、原语的操作指令
中断是指来自CPU指令以外的事件的发生,时钟中断表示一个固定的时间片已到,让处理机处理及时、启动定时运行的任务等,称为外中断
异常是指源自CPU执行指令内部的事件引起的事件。
系统调用,用户在程序中调用OS所提供的子功能,是特殊的公共子程序,运行在核心态。
大致分为设备管理、文件管理、进程控制、进程通信、内存管理
用户态转向核心态的例子:
1. 用户程序要求操作系统的服务,即系统调用
2. 发生一次中断
3. 用户程序中产生了一个错误状态
4. 用户程序企图执行一条特权命令
5. 从核心态转向用户态由中断返回指令(属于特权命令)实现
操作系统的体系结构是一个开放性的问题。
操作系统在核心态为应用程序提供公共的服务,那么操作系统在核心态应该提供什么服务、怎样提供服务?有关这个问题的回答形成了两种主要的体系结构:大内核和微内核。
大内核系统将操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具有无可比拟的性能优势。
但随着体系结构和应用需求的不断发展,需要操作系统提供的服务越来越多,而且接口形式越来越复杂,操作系统的设计规模也急剧增长,操作系统也面临着“软件危机”困境。
为解决操作系统的内核代码难以维护的问题,于是提出了微内核的体系结构。它将内核中最基本的功能(如进程管理等)保留在内核,而将那些不需要在核心态执行的功能移到用户态执行,从而降低了内核的设计复杂性。而那些移出内核的操作系统代码根据分层的原则被划分成若干服务程序,它们的执行相互独立,交互则都借助于微内核进行通信。
微内核结构有效地分离了内核与服务、服务与服务,使得它们之间的接口更加清晰,维护的代价大大降低,各部分可以独立地优化和演进,从而保证了操作系统的可靠性。
微内核结构的最大问题是性能问题,因为需要频繁地在核心态和用户态之间进行切换,操作系统的执行开销偏大。因此有的操作系统将那些频繁使用的系统服务又移回内核,从而保证系统性能。但是有相当多的实验数据表明,体系结构不是引起性能下降的主要因素,体系结构带来的性能提升足以弥补切换开销带来的缺陷。为减少切换开销,也有人提出将系统服务作为运行库链接到用户程序的一种解决方案,这样的体系结构称为库操作系统。