Lecture1-操作系统概论
1. 计算机系统概述
- 电子数字计算机,是一种能够自行按照已设定的程序进行数据处理的电子设备;是软件与硬件相结合、面向系统、侧重应用的自动化求解工具
- 1946年,首台计算机ENIAC诞生于美国。
- 短短70年,计算机技术迅猛发展,从科学计算、数据处理等应用领域,迅速扩展到实时控制、辅助设计、智能模拟等诸多领域
- 今天计算机无所不在,深入 会生活的各个领域,深深改变了当今人类 会的组织行为
- 计算机系统包括计算机硬件系统和计算机软件系统
1.1. 计算机历史
- 1945:电子真空管、机器语言,应用于科学计算
- 1956:晶体管、批处理控制、Fortran(科学计算的高级语言)/COBOL(数据处理的高级语言),扩展到数据处理领域
- 1959:集成电路、多道程序、操作系统/数据库/高级语言,应用领域继续扩展
- 1976:大规模/超大规模集成电路,向快速化/小型化/系统化/ 络化/智能化等方面发展
- 1980:微机出现,廉价化促使应用领域快速膨胀
- 1990:图形化人机交互技术,友善化推动了应用人群的快速扩展
- 2003:移动计算的出现,计算无处不在
1.2. 计算机系统的组成
计算机系统:包括硬件子系统和软件子系统
- 硬件:借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统工作的实体,包括CPU,主存储器,I/O控制系统,外围设备等
-
软件:各种程序和文件,用于指挥计算机系统按指定的要求进行协同工作
- 包括系统软件、支撑软件和应用软件
- 关键系统软件是操作系统与语言处理程序
- 系统软件(操作系统)层是最靠近硬件的一层软件。
- 操作系统和支撑软件、应用软件之间的主要区别
- 操作系统有权利分配资源,支撑软件以及应用软件只能通过操作系统使用资源,两者为控制和被控制的关系。
- 操作系统直接作用在硬件上,隔离其他上层软件,并为其提供接口和服务。
1.3. 计算机系统的用户视图
- 中央处理器
- 运算单元
- 控制单元
- 主存储器
- 外围设备
- 输出设备:显示器
- 输入设备:键盘、鼠标
- 存储设备:硬盘
- 络通信设备:机机通信
- 总线:连接硬件系统的部件
2.2. 冯·诺依曼计算机特点
冯·诺伊曼等人在1946年总结并明确提出,被称为冯·诺伊曼计算机模型
- 以运算单元为中心,控制流由指令流产生
- 采用存储程序原理,面向主存组织数据流
- 主存是按地址访问、线性编址的空间
- 指令由操作码和地址码组成
- 数据以二进制编码
2.3. 存储程序计算机的结构
- 通信总线:用于计算机系统之间通信
2.5. 中央处理器 CPU
2.5.1. 定义
中央处理器是计算机的运算核心(Core)和控制单元(Control Unit)
2.5.2. CPU的组成
- 运算逻辑部件:一个或多个运算器
- 寄存器部件:
- 通用寄存器
- 控制与状态寄存器
- 高速缓冲存储器(Cache)
- 控制部件
- 实现各部件间联系的数据、控制及状态的内部总线
- 负责对指令译码、发出为完成每条指令所要执行操作的控制信 、实现数据传输等功能的部件
2.6. 处理器和寄存器
主存及以上都是易失型设备
2.8. 外围设备
2.8.1. 设备类型
- 输入设备
- 输出设备
- 存储设备
- 络设备:机机通信
2.8.2. 控制方式
- 轮询方式:CPU忙式控制,CPU执行内存数据交换
- 中断方式:CPU启动外设,外设中断CPU,CPU执行内存数据交换
- DMA方式:CPU启动DMA,DMA执行输入输出与内存数据交换,处理完成后,DMA中断CPU
2.8.3. SoC片上系统
- 片上系统(SoC, System ona Chip)
- 在单个芯片上集成一个完整的系统,对所有或部分必要的电子电路进行包分组的技术
- 所谓完整的系统一般包括中央处理器(CPU)、存储器、以及外围电路等
- SoC是与其它技术并行发展的,如绝缘硅(SOI),它可以提供增强的时钟频率,从而降低微芯片的功耗
2.9. 用户态和内核态
- 用户态和内核态之间可以相互转化
- 内核态可以进行系统调用,完成中断处理
3. 计算机软件系统
3.1. 计算机软件系统组成
- 系统软件
- 操作系统:实施对各种软硬件资源的管理控制
- 语言处理程序:把用汇编语言/高级语言编写的程序,翻译成可执行的机器语言程序
- 数据库管理系统
- 支撑软件:支持用户使用计算机的环境,提供开发工具,也可以认为是系统软件的一部分。
- 接口软件
- 工具软件
- 环境数据库等
- 应用软件:是用户按其需要自行编写的专用程序
3.2. 程序员的计算机系统视图
源程序是如何在硬件平台上进行处理如上图进行描述
4. 计算机操作技术的发展
4.1. 操作平台与操作系统
- 任意一台机器都有其操作平台与操作系统
- 例子: 洗衣机
- 确定水量、洗衣时间、洗涤强度、洗衣粉
- 启动按钮
- 指示灯显示工作状态
- 这一方式可以总结为:开关表示,按钮控制,亮灯显示操作平台的精细化和系统化,产生了操作系统
- 例子: 洗衣机
- 计算机也不例外,由此产生了极为系统的计算机操作平台——计算机操作 系统
- 使用汇编语言的程序的编译运行程序为:汇编、执行
- 使用高级语言的程序的编译运行程序为:编译、链接、执行
4.2. 计算机的手工操作
- 开关表示,按钮控制,亮灯显示
添加进入高级语言之后,连接程序时非常重要的,将一些共有的操作进行封装
4.5. 引入高级语言后的计算机控制
6.4.1. 进程抽象
- 进程是对进入内存的执行程序在处理器上操作的状态集的一个抽象。
- 进程是并发和并行操作的基础。
- 进程可以使用fork()、wait()、exec()等系统调用。
- 进程的执行依赖于内存和设备上的信息资源。
6.4.2. 虚存抽象
- 虚拟内存的本质是在物理内存的基础上创建一个新的抽象概念。
- 虚存抽象保证了安全性
- 进程的执行还依赖于存放在内存中的程序和数据,而他们往往存储在设备上,所以我们需要对设备进行抽象。
6.4.3. 文件抽象
- 文件是设备的一种抽象,通过将文件的字节映射到存储设备的物理块中来实现文件抽象。
- 提供了open()、read()和write()等方法来控制和使用文件。
- 磁盘、光盘等外存设备都有极其复杂的物理接口,通常我们将其抽象,使得所存放柜的信息可以表示为一个命名的逻辑字节流,称其为文件,这是资源抽象的一个特例。
- 为了管理方便,操作系统将除处理器和内存以外,将磁盘和其他外部设备资源都抽象为文件,减少系统开销,复用系统调用。
6.4.4. 三种抽象综述
- 操作系统基本任务
- 防止硬件资源被失控的应用程序滥用。
- 屏蔽复杂的硬件操作细节。
- 为什么会出现系统调用上层如果暴露过于细粒度的操作,违背了软件复用的原则,所以我们将一系列的操作封装起来,作为系统调用来暴露。
- 为什么操作系统不能使用名空间没有高级语言,为什么不可以通过名字来调用):操作系统处于系统底层之上,是不可以将高阶的名字,翻译成计算机操作系统可以理解的地址。底层是通过地址 来调用,而我们的按名访问本质上也只是完成了从名空间到地址空间的映射而已
- 操作系统诞生了名空间
- 文件系统需要使用名空间
- 以32位系统为例,每个地址占4字节,以入口地址表的起地址 x 0 x_0 x0/span>作为起点,依据功能 向下偏移 4 i 4*i 4/span>i,读取系统调用处理子程序 S u b i Sub_i Subi/span>的入口地址,然后执行 S U B i SUB_i SUBi/span>,执行完成之后,再返回用户空间。
- 没有名称空间 -> 通过指针的地址计算做定位,表驱动按 索引,按 索引的前提是:
- 数据必须是按 连续排列的
- 表中的各数据结构的规格是一致的
10.2. 系统调用的实现机制
- 陷入处理机制:计算机系统中控制和实现系统调用的机制
- 陷入指令:也称访管指令,或异常中断指令,计算机系统为实现系统调用而引起处理器中断的指令
- 每个系统调用都事先规定了编 ,并在约定寄存器中规定了传递给内部处理程序的参数
- 参数传递方法
- 访管指令或自陷指令自带参数,参数放置在指令后的若干单元,叫直接参数
- 指令后放置参数的地址,叫间接指令
- 通过CPU的通用寄存器传递参数,不适用于大量参数传递
- 在内存中开辟专门堆栈区传递参数
- 操作系统实现系统调用的机制被称为陷阱或异常处理机制。
- 由系统调用引起处理器中断的机器指令称为访管指令、自陷指令或中断指令,其中访管指令为非特权指令。
10.3. 系统调用的实现要点
- 编写系统调用处理程序
- 设计一张系统调用入口地址表,每个入口地址指向一个系统调用的处理程序,并包含系统调用自带参数的个数
- 陷入处理机制需开辟现场保护区,以保存发生系统调用时的处理器现场
10.4. 系统调用的实现流程
- 由硬件和操作系统来合作完成
- 中断是由硬件完成的
- 查入口地址和调用是由操作系统完成的
- CPU执行程序中编写的由访管指令实现的系统调用时会产生异常,通过陷阱机制,处理器的状态由用户态转换为内核态,进入操作系统并执行相应的服务例程,以获得操作系统服务。

- SUB子程序部分是绝对不能向用户暴露的,很危险
- A部分,可以通过地址偏移来发起调用, 4 i + x 0 4*i+x_0 4/span>i+x0/span>调用的是第i 系统调用。
- 处理器状态包括用户态、内核态
- 用户态对应非特权指令
- 内核态对应特权和非特权指令
- Linux中是通过为每个系统调用构造一个同名封装函数,将系统调用封装后供用户编程使用,详见P25
10.4.1. Transition from user to kerne
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!
2021十大 Python 机器学习库
上一篇
2022年2月7日
SWIFT国际清算体系的科普贴
下一篇
2022年2月7日