OS Review1 操作系统概论

声明:本blog基于Theacher yebl, NJU OS 整理而成

操作系统概论

1、操作系统概观

  • 硬件层:提供基本的可计算资源
  • 软件层:由程序、数据及文档组成

软件层分类:

  • 系统软件(操作系统):直接和硬件交互,将复杂性封装起来,管理和控制硬件并对其做首次扩充和改造;与上层支撑软件和应用软件交互,将它们与硬件隔离,为程序员提供编程接口、功能及环境支撑
  • 支撑软件层:利用操作系统提供的扩展指令集,实现编译、汇编、语言处理等其他使用程序,支持应用软件开发
  • 应用软件层:解决特定的或者不同应用所需的信息处理问题

操作系统的主要目标:

  • 扩大机器功能
  • 管理系统资源:相互竞争的应用程序之间协调资源共享,其资源管理技术有:
  1. 资源复用——解决物理资源数量不足:
    时分复用——时分独占:进程执行完整时间周期、时分共享:使用权限可能被随时剥夺
    空分复用——将更小划分的空间分配给不同进程
  2. 资源虚拟——解决物理资源数量不足:
    创建无需共享的多个独占资源的假象。
    复用是分割实际存在的物理资源,而虚拟实现假设的虚拟同类资源
  3. 资源抽象——处理系统的复杂性:
    重点解决资源的易用性,通过创建软件来屏蔽硬件资源物理特性和接口细节,简化对硬件资源的操作、控制和使用的一类技术,具体实现有单级资源抽象(wirte()函数调用)和多级资源抽象(fprintf()函数调用)。
  • 提高系统效率
  • 构筑开发环境
  • 方便用户使用

物理资源分类

  • 计算类资源:处理器
  • 存储类资源:内存、外存
  • 接口类资源:外部设备

现代操作系统的基础抽象

  • 进程抽象(处理器的抽象):进程是对于进入内存的执行程序在处理器上操作的状态集的一个抽象,可为用户提供多任务操作系统和分时操作系统。
  • 虚存抽象(内存的抽象):提供用户独占了一个连续地址空间的假象
  • 文件抽象(设备的抽象):文件是通过将文件中的字节映射到存储设备的物理块中来实现文件抽象,让用户感觉到总能满足自己对设备上信息的存取需求,而且使用十分方便。

操作系统基本任务:

  • 防止硬件资源被失控的应用程序滥用
  • 屏蔽复杂的硬件操作细节,为应用程序提供使用硬件资源的简单且一致的方法

操作系统虚拟机:

  • 由操作系统对物理计算机实施仿真而获得的一种更有利于用户使用的简单计算机模型,虚拟机每种虚拟资源都是物理资源通过复用、虚拟或抽象而得到的产物,提供了进程运行的逻辑计算环境。
    (操作系统虚拟机 = 虚拟处理器 + 虚拟内存 + 虚拟辅存 + 虚拟设备)

操作系统定义:

  • 为用户方便有效地使用计算机提供良好运行环境的一种系统软件
  • 共享一套计算机系统资源的一种系统软件

操作系统作用:

  • 把硬件裸机改造成为完善的虚拟机(使得机器功能得到扩展,运行环境得到改善,系统效率得到提高,安全性能得到保证……)
  • 操作系统隔离其他上层软件,并为它们提供接口和服务
  • 操作系统是软件系统的核心,它与硬件一起构成了各种软件的基础运行平台

从四种观点看待OS:

OS Review1 操作系统概论_第1张图片

  1. 服务用户的观点:
  • 操作系统作为用户接口(外部友善的人机接口)和公共服务程序(内部的系统调用)
  1. 进程交互的观点:
  • 操作系统作为进程执行的控制者和协调者,OS 需要提供机制,解决并发进程执行时产生的互斥、同步、通信和死锁问题
  1. 系统实现的观点:
  • 操作系统作为扩展机或虚拟机,把硬件的复杂性与用户隔离开来
  1. 资源管理的观点:
  • 能分配给用户使用的各种硬件和软件设施总称为资源 (硬件资源:处理器、存储器、外部设备等。软件资源:分为程序和数据等)
  • 对软硬件资源进行资源复用、虚拟和抽象
  • 提供机制协调应用程序对资源的使用冲突,最大限度地实现各种资源的共享,提高资源利用率
  • 操作系统作为资源的管理者和控制者:对内作为管理员,对外作为服务员。

操作系统主要功能:

1、 处理器管理:采用多道程序设计技术,组织多个作业同时执行,解决处理器的调度、分配和回收问题。
进程控制和管理
进程同步和互斥
进程通信
进程死锁
线程控制和管理
处理器调度(高级调度,中级调度,低级调度)
2、存储管理:管理内存资源,为多道程序运行提供有力支撑,提高存储空间利用率
内存分配
地址转换
存储保护
内存共享
存储扩充
3、设备管理:管理各种外部设备,发挥设备的并行性,提供设备驱动程序和中断处理程序。
设备中断处理
缓冲区管理
设备独立性(实现逻辑设备到物理设备之间的映射)
设备的分配和回收
共享型设备的驱动调度
虚拟设备
4、文件管理:针对信息资源的管理,主要任务是对用户文件和系统文件进行有效管理
文件逻辑组织方法
文件物理组织方法
文件存取和使用方法
文件目录管理
文件共享和安全性控制
文件存储空间管理

操作系统主要特性:

  • 并发性:多个事件在同一时间间隔内发生。发挥并发性能够消除系统中部件和部件之间的相互等待,有效地改善系统资源利用率,改进系统吞吐率,提高系统效率。但是并发性使得系统变得复杂。采用并发技术的系统称多任务系统,并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高效率。实现并发技术的关键之一是如何对系统内的多个活动(进程)进行切换
    并行性:多个事件在同一时刻发生。并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的,并行性是并发性的特例,而并发性是并行性的扩展。
  • 共享性:操作系统中的资源可被多个并发执行的进程所使用
    透明资源共享:资源隔离与授权访问
    独占资源共享:临界资源与独占访问
  • 异步性:异步性给系统带来潜在危险,有可能导致与时间有关的错误。

共享性和并发性是操作系统的两个基本特性,互为依存

  • 资源共享是由程序的并发执行而引起的
  • 资源共享是支持并发性的基础

2、操作系统形成与发展

  • 人工操作阶段
  • 执行程序阶段
  • 多道程序设计与操作系统形成:多道程序设计技术提高资源利用率和系统吞吐率是以牺牲用户的响应时间为代价的。
  • 操作系统分类
    批处理操作系统 :以提高系统资源率和作业吞吐量为目标
    分时操作系统 :强调公平性,具有同时性,独立性,及时性,交互性。
    实时操作系统:及时响应,高可靠性。

实时操作系统核心部件

  • 实时时钟管理对实时任务进行实时处理
  • 队列驱动(时间驱动)对预定实时任务处理

3、操作系统的基本工作机制

4、操作系统基本服务和用户接口

操作系统的用户接口

操作系统通过“程序接口”和“操作接口”将其服务和功能提供给用户

  • 程序接口
    由系统调用组成,访问或使用系统管理的各种软硬件资源
  • 操作接口
    由一组控制命令和(或)作业卡控制语言组成是操作系统为用户提供的组织控制其作业执行的手段

中断与异常

  • 中断(外中断)
    异步的,来自处理器之外的中断信号,在程序执行的任何时候可能出现。
    会改变处理器执行指令的顺序。
    通常与CPU芯片内部/外部硬件电路产生的电信号相对应。
  • 异常(内中断)
    同步的,在(特殊或出错)指令执行时由CPU控制单元产生。
    内核为每个异常提供一个专门的异常处理程序。
    异常处理程序的执行一般依赖于执行程序的当前现场,不能被屏蔽,一旦出现应立即响应并进行处理区别。

中断允许嵌套发生,但异常多数情况为一重;异常处理过程中可能产生中断,但反之则不会发生 。

异常分类

  • 故障(fault):可恢复错误,处理后可返回当前指令再次执行,如页面故障
    eip保存引起故障的指令地址。
  • 陷阱(trap):内核把控制权返回给程序后可继续执行而不失连续性
    只有不必重新执行已终止指令时才触发陷阱,如调试程序 eip保存随后要执行的指令地址。
  • 终止(abort):控制单元出现问题,不能在eip中保存引起异常的指令所在的确切位置,致命的不可恢复错误,通常不会返回原程序而转向内核特殊函数处理

程序接口与系统调用

  • 程序的运行空间被分为内核空间和用户空间
  • 操作系统的功能通过一组称为系统调用(system call)的接口呈现给用户

引入系统调用的根本原因是为了对系统进行“保护”,系统调用是应用程序获得操作系统服务的唯一途径

实现系统调用要点

Step 1:编写系统调用处理内核函数
Step 2:设计一张系统调用入口地址表,每个入口地址都指向一个系统调用的处理内核函数,有的系统还包含系统调用自带参数的个数
Step 3:陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场

系统调用参数传递

方法1:由访管指令或陷入指令自带参数
直接参数:访管指令之后的若干单元存放参数
间接参数:指令之后紧邻的单元中存放参数的地址
方法2:通过CPU的通用寄存器传递参数,或在主存的一个块或表中存放参数,其首地址送入寄存器,实现参数传递
方法3:是在主存中开辟专用堆栈区域传递参数

系统调用与函数调用的区别

  • 调用形式和实现方式不同
    函数调用:转向的地址固定不变、在用户态执行
    系统调用:由功能调用号决定内核服务例程入口地址,在内核态执行
  • 被调用代码的位置不同
    函数调用:静态调用,调用程序和被调用代码处于同一程序
    系统调用:动态调用,服务例程位于操作系统内核中
  • 提供方式不同
    函数调用:编程语言提供,取决于语言提供的函数功能
    系统调用:由操作系统统一提供

5、操作系统结构和运行模型

机制与策略分离:

  • 提供及实现确定的功能(机制),常常将机制作为系统的可信软件来实现
  • 如何使用这些功能(策略),可在不可信的环境中定义策略

机制与策略分离的原则

  • 机制由OS实现,策略留给用户完成
  • 机制放在底层,策略放在高层
  • 机制集中在少数模块,策略可散布在系统多处

机制与策略分离举例:调度

  • 调度算法作为机制提供参数支持用户调度策略

操作系统内核

  • 内核(kernel)是一组程序模块,作为可信软件来提供支持进程并发执行的基本功能和基本操作
  • 内核通常驻留在内核空间,运行于核心态,具有访问硬设备和所有主存空间的权限,是仅有的能执行特权指令的程序
  • 在内核的支撑下,机器功能得到扩展、进程运行环境得到改善,安全性得到保证,系统效率得到提高

内核分类

  • 微内核(microkernel) :内核做得尽量小,仅具有极少的必须功能
  • 单内核(monolithic kernel) :具有较多功能以提高系统效率,操作系统大部分功能都并入内核

内核功能

  • 中断处理
  • 时钟管理
  • 短程调度
  • 原语管理

内核属性

  • 内核是由中断驱动的:只有当发生中断或异常事件,由硬件交换程序状态字才引出操作系统内核进行中断或异常事件处理,且在处理完中断事件后自行退出
  • 内核是不可抢占的:现代操作系统支持内核抢占,提高系统实时性
  • 内核可在屏蔽中断状态下执行:避免临界区资源竞争
  • 内核可使用特权指令

单体式结构

基于结构化程序设计的一种软件结构设计方法

  • 模块作为操作系统的基本单位,整个系统分解成若干模块,每个模块具有一定独立功能,若干个关联模块写作完成某个功能;明确模块间接口关系,模块间可自由调用(无序调用法)
  • 数据多数作为全程量使用
  • 模块间传递参数需要约定

优点:结构紧密、组合方便、灵活性大
缺点:

  • 模块独立性差,模块之间牵连甚多
  • 系统功能的增、删、改困难

层次式结构

提高操作系统的结构性、可靠性、适应性及可扩展性

  • 操作系统分为内核和若干模块(进程)
  • 模块(进程)按功能的调用次序排列成若干层次,各层之间只能存在单向依赖或单向调用关系

优点:

  • 整体问题局部化
  • 层次见依赖及调用关系清晰规范
  • 易于扩充

缺点: 通信开销大

微内核结构

操作系统仅将所有应用必需的核心功能放在内核,称为微内(microkernel)

  • 内核功能包括进程调度、消息传递和设备驱动等

其他功能都在内核之外,由在用户态运行的服务进程实现,并以客户-服务器方式执行,通过微内核所提供的消息传递机制完成进程间消息通信

  • 服务进程包括文件管理服务、进程管理服务、存储管理服务、网络通信服务

优点:

  • 对进程请求提供一致性结构,不必区分内核级服务和用户级服务,所有服务均借助消息传递机制提供
  • 具有较好的可扩充性和易修改性,增加新服务或替换老功能只需增加或替换服务器
  • 可移植性好,与特定 CPU 有关的代码均在微内核中,把系统移植到新平台所做修改较小
  • 对分布式系统提供有力支撑,当消息从客户机发送给服务器进程时,不必知道它驻留在哪台机器上,客户的处理都是发送请求和接收应答

缺点:运行效率较低,进程间必须通过内核通信机制才能进行

虚拟机结构

物理计算机资源通过多重化和共享技术可改造成多个虚拟机

  • 通过一类物理设备来模拟另一类物理设备
  • 通过分时使用一类物理设备,把一个物理会提改变成若干逻辑上的对应物
  • 每台虚拟机的功能都与裸机相同

特点:

  • 虚拟机没有中断,因而,进程设计者不再需要有硬件中断的概念,用户进程执行中无需处理中断
  • 虚拟机为每个进程提供一台虚处理器,每个进程就好象在各自的私有处理器上顺序地推进,实现了多进程并发执行
  • 虚拟机为进程提供功能强大的指令系统,即能够使用机器非特权指令和系统调用所组成的新的指令系统

典型操作系统内核结构

Windows NT和Mach是微内核系统

  • 只提供基础功能,其他功能通过服务实现
  • 微内核被划分为多个独立过程,每个过程称为服务器

Unix是单内核系统
Linux是单内核、多模块系统

linux操作系统结构设计

Linux采用单体式结构(微内核)设计

  • 系统设计时作为一个单独的大过程
  • 系统运行时是一个大二进制映像
  • 引入可加载模块和卸载模块机制

Linux 内核有以下部分组成

  • 核心部分:进程调度、进程通信和管理、主存和虚存管理、VFS和文件管理、设备驱动和管理、网络驱动和管理等
  • 外围部分:shell、图形用户界面和一组实用工具

Linux内核的可加载内核模块机制

  • 模块实际上是一种目标对象文件,没有链接,不能独立运行
  • 其代码可以在系统运行时链接到系统中,作为内核的一部分运行或从内核中取下,从而可以动态扩充内核的功能(不需要重新编译内核)
  • 这种目标代码通常由一组函数和数据结构组成

内核模块优点:

  • 使得内核更加紧凑和灵活,可扩展
  • 修改模块时,不必全部重新编译整个内核
  • 系统如果需要使用新模块,只要编译相应的模块,然后将模块插入即可
  • 模块可以不依赖于特定硬件平台
  • 模块的目标代码一旦被链接到内核,其作用域和静态链接的内核目标代码完全等价

你可能感兴趣的:(操作系统)