文章目录
操作系统概述
操作系统是什么
- 操作系统是一个控制程序
- 操作系统是一个系统软件;
- 控制程序的执行过程,防止错误和计算机的不当使用;
- 执行用户程序,给用户程序提供各种服务;
- 方便用户使用计算机
- 操作系统是系统资源的管理者
- 应用程序和硬件之间的中间层
- 管理各种计算机软硬件资源
- 提供访问计算机软硬件资源的高效手段
- 解决资源访问冲突,确保资源公平使用
- 操作系统是扩充裸机的第一层系统软件,为上层应用提供服务,对下层硬件进行管理。
- 提供与计算机硬件之间的接口
- 命令级接口:它提供一组键盘或鼠标命令
- 程序级接口:它提供一组系统调用,即OS中功能,供用户程序和其他程序调用
- 内核kernel—the one program running at all times on the computer(all else being application programs),是一个始终在运行的程序
操作系统的组成
- Shell——命令行接口
- 通过键盘操控
- 方便用户进行命令输入
- GUI——图形用户接口
- WIMP:Winodw视窗、Icon图标、Menu菜单、Pointer指针
- 直接操作和所见即所得
- Kernel——操作系统内核
- 执行各种资源管理等功能
操作系统的定义
中文教材上的定义:操作系统是一组有效控制和管理计算机软硬件资源,合理组织计算机工作流程和方便用户的程序集合
英文教材上的定义:一个全时运行的程序
- 有效性:提高系统资源的利用率;提高系统的吞吐量
- 方便性:提供良好的用户界面,编程接口
- 可扩充性:能够适应计算机硬件、体系结构以及计算机应用发展的要求
- 开放性:能遵循世界标准规范,特别是遵循开放系统互连OSI国际标准
操作系统(内核)的主要特征
并发性
计算机系统中同时存在多个运行的程序,需要OS管理和调度
- 并发:两个或多个事件在同一时间间隔内交替发生
- 并行:两个或多个事件在同一时刻发生
共享性
指系统中的资源可供内存中多个并发执行的进程共同使用。
互斥共享方式:在一段时间内只允许一个进程访问的资源称为临界资源或者独占资源。系统中大多数物理设备,以及栈、变量和表格都属于独占资源,只能被互斥共享。
同时访问方式:此处的同时不是现实意义中的同时,而是指一段时间,在这一段时间内,多个进程交替进行,共同使用资源。
并发和共享是多用户多任务OS的两个最基本的特征
虚拟性
把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为“虚拟”。
利用多道程序设计技术,让每个用户都觉得自己在独享计算机资源。
异步
在多道程序环境下,系统允许多个进程并发执行。
单处理机环境下,一次只允许一个进程执行,其他进程只能等待。
由于资源等因素的限制,进程的执行通常都不是一次执行完的,而是断断续续地执行完所有操作。
主要运行环境相同,OS需要保证程序运行的结果也要相同。
两组概念的区别
特权指令和非特权指令
特权指令:不允许用户程序直接使用的指令,如I/O指令,设置时钟等
非特权指令:用户程序中使用的指令。
用户态和内核态
用户态:运行用户程序时的状态
- 只能访问属于他的存储空间和普通存储器,只能执行非特权指令
- 用户程序以及操作系统核外服务程序运行在用户态下
- 使用用户栈
内核态:又称为管态、核心态、系统态、特权模式,执行操作系统时的状态
- 能访问所有资源,可执行特权指令,可直接操作和管理硬件设备
- 操作系统内核程序运行在内核态下
- 使用内核栈
中断、异常和系统调用
背景
- 为什么需要中断、异常和系统调用
- 在计算机运行中,内核是被信任的第三方
- 只有内核可以执行特权指令
- 方便应用程序
- 中断和异常希望解决的问题
- 当外设连接计算机时,会出现什么现象。
- 当应用程序处理意想不到的行为时,会出现什么现象。
- 系统调用希望解决的问题
- 用户程序如何得到系统服务
- 系统调用和功能调用的不同之处是什么
系统调用
应用程序主动向操作系统发出的服务请求
异常
非法指令或者其他原因导致当前指令执行失败(如内存出错)后的处理请求。
中断
中断是来自硬件设备的处理请求。
中断指CPU对系统中发生的异步时间的响应,异步事件指无一定时序关系的随即发生的事件。
- 发生中断时正在执行的程序的暂停点成为中断断点
- 处理器暂停当前程序转而处理中断的过程成为中断响应
- 中断处理结束之后恢复原来程序的执行被成为中断返回
- 一个计算机系统提供的中断源的有序集合一般被成为中断字,这是一个逻辑结构,在不同的处理其有着不相同的实现方式
中断分为以下两种:
-
硬件中断
- 硬件故障中断
- 输入输出中断
- 外部中断
-
软件中断(异常)
-
程序中断
例如定点操作数溢出、地址越界、虚拟管理中缺页等
-
访管中断(trap陷入)
用户程序在运行中请求操作系统为其提供服务而执行一条“访管指令”引起的中断,又称为软件中断、系统调用。访管中断是进程所期待的,他是主动发起的中断,其他几种中断不是运行进程期待,他属于强迫性中断事件
-
三者的比较
从源头来说:
- 中断:外设
- 异常:应用程序意想不到的行为
- 系统调用L应用程序请求操作系统提供服务
从响应方式来说:
- 中断:异步
- 异常:同步
- 系统调用:异步或同步
从处理机制来说:
- 中断:持续,对用户应用程序是透明的
- 异常:杀死或者重新执行意想不到的应用程序指令
- 系统调用:等待和持续
中断处理机制
硬件处理
- 在CPU初始化时设置中断使能标志,也就是说在许可外界打扰CPU的执行之前CPU是不会对外界的任何中断请求发出响应的,只有CPU吧相应的准备工作做完,知道外界来的请求如何处理时才会允许做这种处理。使能之后才能进行中断的处理
- 依据内部或外部事件设置中断标志
- 依据中断向量调用相应中断服务例程
软件处理
- 保存现场(编译器)
- 中断服务处理(服务例程)
- 清除中断标记(服务例程)
- 恢复现场(编译器)
中断嵌套
- 硬件中断服务例程可被打断
- 不同硬件中断源可能硬件中断处理时出现
- 硬件中断服务例程中需要临时禁止中断请求
- 中断请求会保持到CPU做出响应
- 异常服务例程可被打断
- 异常服务例程执行时可能出现硬件中断
- 异常服务例程可能出现缺页
- 异常服务例程可能出现缺页
系统调用和函数调用
系统调用:
- 操作系统服务的编程接口
- 通常由高级语言编写(C或者C++)
- 程序访问通常是通过高层次的API接口而不是直接进行系统调用
系统调用的实现
- 每个系统调用对应一个系统调用号
- 系统调用接口根据系统调用号来维护表的索引
- 系统调用接口调用内核中的系统调用功能实现,并返回系统调用的状态和结果
- 用户不需要知道系统调用的实现
- 根据设置调用参数和获取返回结果
- 操作系统接口的细节大部分都隐藏在应用编程接口后
- 通过运行程序支持的库来管理
系统调用和函数调用的不同
系统调用:
- INT和IRET指令用于系统调用
- 系统调用时,堆栈切换和特权级的转换,因为用户态和内核态的堆栈不同。
函数调用:
- CALL和RET用于常规调用
- 常规调用没有堆栈切换
中断、异常和系统调用的开销
- 超过函数调用,因为系统调用有一个堆栈切换带来的开销
- 中断异常和系统调用
- 引导机制
- 建立内核堆栈
- 验证参数
- 内核态映射到用户态的地址空间
- 更新页面映射权限
- 内核态独立地址空间
- TLB
操作系统的主要功能
进程管理
又称为处理机管理,主要负责进程控制、进程同步、进程通信和调度。
进程控制
为作业创建进程和销毁进程
进程同步
在相互合作去完成共同任务的诸进程间,有同步机构对他们的的执行次序加以协调。最常用的机制是信号量控制机制
进程通信
实现相互合作进程之间的信息交换
调度
分为作业调度和进程调度
作业调度
从后备队列中按照一定算法取出若干个作业,为他们分配运行所需要的资源并创建进程,将之插入到就绪队列中
进程调度
从就绪队列中按照一定算法选出一个进程使之进入执行状态。
主存(内存)管理
内存管理的主要任务是进行内存分配、内存回收、内存保护、地址映射和和内存扩充等功能
文件管理
文件管理包括对文件存储空间管理、目录管理、文件的读写管理以及文件的共享与保护等功能。文件管理对每个文件分配必要的外村空间,并为之建立目录项,还对文件读写进行保护,防止系统中的文件被非法窃取和破坏。
I/O设备管理
设备管理具有缓冲管理、设备分配和设备处理以及虚拟设备等功能。它完成用户进程提出的I/O请求,并完成指定的I/O操作。提高了CPU和I/O设备的利用率,方便用户使用I/O设备。
Linux
Linux指的是Linux内核
Linux操作系统指的是GNU/Linux系统(基于Linux的GNU系统)
- Linux系统由内核、c库、编译器、工具和系统的基本工具、各种硬件设备驱动程序
- Linux系统(发行版):GNU软件28%+Linux内核3%+其他部件
Linux是一种类UNIX系统,Linux克隆了Linux,但不是UNIX
Linux是遵守GNU的GPL协议的软件
虚拟机
虚拟机采用了分层的方法,它将物理硬件和OS内核同一看做硬件
虚拟机提供了与基本硬件相同的接口
通过利用CPU调度和虚拟内存技术,操作系统能创建一种幻觉,以至于进程认为有自己的处理其和自己的虚拟内存
物理计算机共享资源以创建虚拟机
- CPU调度能共享出CPU造成一种每个用户都有自己的处理器的感觉
- 假脱机和文件系统能提供虚拟机读卡机和虚拟行式打印机
- 一个普通用户分时中断提供虚拟机操作员中断的功能