中国科学技术大学计算机系 陈香兰 xlanchen@ustc.edu.cn Fall 2013 第一讲 绪论 (part II) 中国科学技术大学计算机系 陈香兰 xlanchen@ustc.edu.cn Fall 2013
内容提要 操作系统的定义、设计目标、作用和层次模型 操作系统的发展动力和发展过程 操作系统的特征、主要功能和服务 操作系统的抽象模型和体系结构
内容提要 操作系统的定义、设计目标、作用和层次模型 操作系统的发展动力和发展过程 操作系统的特征、主要功能和服务 操作系统的抽象模型和体系结构
操作系统的特征 一、并发: 并行 vs. 并发 程序 vs. 进程 并行是指两或多个事件在同一时刻发生。 并发是两或多个事件在同一时间间隔内发生。 程序 vs. 进程 程序:静态实体; 进程:系统中能独立运行并作为资源分配的基本单位。是动态实体。引入线程后,独立运行的单位变为线程。
并发和共享是操作系统的两个最基本的特征。 系统中资源可供内存中多个并发执行的进程共同使用 互斥共享 VS. 同时访问 互斥共享:一段时间只允许一个进程访问该资源 同时访问:微观上仍是互斥的 临界资源:在一段时间内只允许一个进程访问的资源 并发和共享是操作系统的两个最基本的特征。
虚拟 通过某种技术把一个物理实体变为若干个逻辑上的对应物。若n是某一物理设备所对应的虚拟的逻辑设备数,则虚拟设备的速度必然是物理设备速度的1/n。 异步 运行进度不可预知。
操作系统的主要功能 处理机管理 存储器管理 设备管理 信息(文件)管理 人机接口
处理机管理 多道环境下,处理机的运行及分配都是以进程为单位,因此处理机管理可归结为进程管理。 一、进程控制 二、进程同步 创建/撤消进程 迁移进程状态 一般由进程控制原语完成 二、进程同步 为使多个进程有条不紊地运行,应建立同步机制。 包括进程互斥/同步,次序协调。
三、进程通信 源于进程合作,如:输入进程、计算进程、打印进程相互间有信息传递 类型: 直接通信:进程A发message,进程B收message 间接通信: 进程A发message到中间实体(如mailbox),进程B从中间实体收message
四、作业与进程调度 作业调度: 为作业分配必要资源,调入内存建立进程,并使之进入就绪队列。 进程调度: 从就绪队列中选出进程,分配CPU,使之运行。 调度算法: FCFS、优先权等
存储管理 目的:方便用户使用,且提高存贮器利用率 一、内存分配 二、内存保护 静态分配: 动态分配:作业在内存中可移动 需内存分配的数据结构及内存分配和回收功能 二、内存保护 例:设置上、下界寄存器,每条指令进行越界检查(一般是硬件实现)
四、内存扩充 三、地址映射 地址范围 地址 逻辑空间 逻辑地址(相对地址) 物理空间 物理地址(绝对地址) 地址范围 地址 逻辑空间 逻辑地址(相对地址) 物理空间 物理地址(绝对地址) 四、内存扩充 利用虚存技术,从逻辑上扩充内存容量 系统应有:请求调入/置换功能以支持虚存技术
设备管理功能 任务:提高I/O利用率和速度,方便用户 一、缓冲管理 二、设备分配 缓冲区:用来解决CPU-I/O矛盾,如:CPU快则应多创建缓冲区。 二、设备分配 包括:设备,设备控制器,I/O通信的分配和回收
三、设备处理 四、设备独立性和虚拟设备 指控制设备进行实际的操作,包括读、写等以及向CPU发中断。 设备处理/驱动程序应能根据用户的I/O请求,自动地构成通道程序。 四、设备独立性和虚拟设备 独立性,即program与设备无关性,使program易于重定向,增加了可移植性。 虚拟设备
文件管理的功能 任务:方便用户,提供安全性 一、文件存贮空间的管理 例:文件系统根据文件长度自动分配连续或离散的扇区,并提供“一句柄”表示该文件。 二、目录管理 使用户按名存取,提高速度。 三、文件的读、写管理和存取控制(即保护)
用户接口 二、程序接口 三、图形接口 一、命令接口 1.联机用户接口 2.脱机(批处理用户接口) 由一组“命令”集组成,分为联机和脱机用户接口 1.联机用户接口 由一组键盘操作命令及命令解释程序所组成 2.脱机(批处理用户接口) 用JCL写作业说明书 二、程序接口 系统调用 高级语言的库函数 三、图形接口 如 win的copy文件,采用“拖”来完成,生动,不需记忆
操作系统提供的服务 操作系统的各种功能,最终要封装成“服务”的形式提供给用户 一、操作系统的公共服务类型 装载并运行程序 提供各种I/O操作 提供文件系统及文件操作 提供通信服务 提供差错检测服务
二、操作系统提供服务的最基本方式——系统调用 三、系统调用的类型 进程控制类 文件操作类 设备管理类 通信类,例如消息传送机制 信息维护类,例如日期信息、系统信息等
内容提要 操作系统的定义、设计目标、作用和层次模型 操作系统的发展动力和发展过程 操作系统的特征、主要功能和服务 操作系统的抽象模型和体系结构
传统操作系统的抽象模型 传统的进程模型 线程模型
进程模型 进程这一术语,最初是在20世纪60年代初期,在麻省理工学院(MIT)的MULTICS系统和IBM公司的CTSS/360系统中引入的 现代操作系统都以进程(Process)为单位来分配包括处理机、内存、I/O等在内的各种资源,以实现对计算机系统的并发控制机制。 围绕进程而展开的工作主要包括进程管理、进程控制、进程同步、进程间通信以及进程调度等
进程的地址空间 进程描述符及其上下文 地址空间中的代码、数据和堆栈等内容决定了一个进程所能执行的任务 包括程序指针、堆栈指针以及其他硬件寄存器 决定了一个进程的当前执行情况。
进程调度 调度是操作系统实现处理机并发控制的关键。 调度中最能体现进程模型本质的核心功能是进程切换 调度算法仅仅被用来决定在什么时机、切换到哪个进程上。 最常见的调度算法包括 时间片轮转调度、 基于优先级的可抢占或不可抢占调度 一些实时调度算法 等等
进程间通信机制 用于进程之间交换信息 也是进程之间进行通信的唯一途径。 就模型而言,进程之间实现通信必须有进程调度机制的介入。 常见的进程间通信机制包括 信号、 信号量、 管道、 消息队列、 套接字。
线程模型 线程模型从进程模型发展而来。 线程是指令在进程地址空间中的执行轨迹 将进程的执行上下文从进程描述符中分离出来,就得到了线程的概念。 在线程模型中,进程可以是单线程的,也可以是多线程的。 传统进程模型中的进程可以看成是单线程的。
根据是否跨越进程边界,进程/线程在管理、控制、同步、通信和调度上有了两个层次,即 任何一个线程都属于某个进程。 根据是否跨越进程边界,进程/线程在管理、控制、同步、通信和调度上有了两个层次,即 进程内部 和进程之间。 通常,现代操作系统在大多数情况下仍然是不区分这两种情况的 例外: 进程内部的线程之间可以通过进程地址空间直接共享某些数据,而不必采用传统的进程间通信机制。
操作系统的体系结构 软件体系结构(Software Architecture)对软件系统的构造具有指导性的作用。 Bass在2003年关于软件体系结构的定义: “软件体系结构是一种系统结构,该结构包括软件元素、元素的外部可视属性、元素之间的关系”。 因此,OS体系结构包含如下几个方面: OS的功能模块是如何组成的,即采用什么样的软件元素? OS的功能模块的哪些信息/属性是相互可见的? OS的功能模块之间是如何互操作的?
操作系统体系结构的发展历程 无结构,或者说简单结构 单一内核结构 模块化结构 层次式 微内核和第二代微内核 混合内核 外核
简单结构的操作系统 操作系统发展初期 操作系统功能模块和用户应用程序混杂在一起,在同一个地址空间上运行,模块之间可以相互任意调用, 受到硬件性能、软件水平的限制 没有清晰的体系结构 操作系统功能模块和用户应用程序混杂在一起,在同一个地址空间上运行,模块之间可以相互任意调用, 例如:MS-DOS、早期的UNIX系统以及一些早期的或者小型的嵌入式系统。
随着硬件平台在性能上、数量上、种类上以及对操作系统的支持上的发展,操作系统的结构有了新的发展 单一内核结构 随着硬件平台在性能上、数量上、种类上以及对操作系统的支持上的发展,操作系统的结构有了新的发展 系统调用使得操作系统与用户应用程序隔离开来; 随着操作系统的功能越来越多、模块之间的调用关系也越来越复杂 形成了单一的、体积庞大的操作系统内核 这种结构被称为单一大内核(Monolithic Kernel)结构。 用户应用只能通过中断、异常、系统调用的方式使用操作系统提供的服务 用户应用程序之间通过进程间通信机制进行通信。
模块化结构 随着软件开发技术的发展,单一大内核结构的操作系统逐渐采用了模块化设计方法 常见的例如:UNIX类 模块之间定义了很好的以函数调用的形式提供的接口 在一定程度上提高了操作系统的可维护性。 常见的例如:UNIX类
层次结构 为减少OS各模块之间紧密依赖和相互调用的关系,特别是消除循环调用现象,实现有序调用 在层次结构的操作系统内核中, 系统由若干层次构成,每一层都建立在其下的一层之上 最底层是硬件裸机,最高层则是应用程序。 每一层均公布一定的接口给外层访问,每个层次内部的数据和操作对其他层都是不可见的。 根据每一层内部各模块之间是否存在调用关系,层次结构进一步被划分为 全序的操作系统,如1968年Dijkstra等开发的THE系统 半序的操作系统,如多伦多大学的SUE操作系统。
微内核结构 Richard Rashid在CMU开发Mach时提出了微内核思想 微内核仅仅提供进程管理、线程管理、内存管理、通信和I/O服务等基本功能 其他的功能,诸如文件系统、窗口管理器、WEB服务等都被定义在核外,作为用户态(服务)进程运行 进程之间只能基于消息传递机制通信 又称为客户机/服务器结构,后来成为分布式操作系统最常使用的一种结构
典型的微内核(又称第一代微内核)有Mach、Minix、QNX等。 微内核结构的优点: 良好的兼容性、扩充性、灵活性、移植性、可靠性和网络支持 微内核存在一个致命的效率问题: 与系统组件之间的基于消息传递的通信效率远低于对单一大内核中相应系统功能原语的调用效率 典型的微内核(又称第一代微内核)有Mach、Minix、QNX等。
第二代微内核 解决微内核设计性能问题的一条思路是 对微内核的进程间通信机制加以改进以优化其性能。 由此产生了第二代微内核系统 L4。
混合内核 混合内核是解决微内核设计性能问题的另一个方法 但这种方法削弱了微内核思想在系统的扩充性、灵活性和可靠性等方面所带来的优点 即扩大微内核并把一些关键的服务程序和驱动程序重新加入到内核中去, 如Windows NT 4.0把图形系统重新加入内核以提高性能。 但这种方法削弱了微内核思想在系统的扩充性、灵活性和可靠性等方面所带来的优点
外核( Exokernel ) Exokernel提出了外核的概念,它试图将操作系统接口降低到硬件层 在外核结构中,内核只用来负责简单的申请、释放并复用硬件资源,而将内存映射、I/O和复杂的线程包等所有在传统操作系统内核中提供的抽象都转移到用户空间,以库的形式提供,用户程序通过调用库的形式实现对硬件资源的直接访问。 外核结构可以看成是微内核结构的一种极端形式
操作系统体系结构小结 从上述OS体系结构的发展过程中可以看出: 除了简单结构以外,操作系统中都存在一个内核 核外的程序通过中断、异常、系统调用的方式访问内核中提供的服务; 内核内部模块之间采用函数调用的形式直接调用(不论接口定义是否良好); 操作系统提供给核外的程序的抽象是进程/线程 包括用户应用和外放到核外运行的操作系统功能模块 进程/线程之间通过进程间通信机制进行通信;
本课内容回顾 操作系统的特征、主要功能和服务 操作系统的抽象模型和体系结构
作业 操作系统最基本的两个特征是什么? 什么是操作系统的体系结构,有哪些?