操作系统-理论-引论
课程介绍
操作系统的设计原理体现了软硬件的最新发展:
- 计算机体系结构:巨型机、大型机、微机、工作站、多核、XPU等
- 程序设计方法:并发、面向对象、结构化
每个阶段解决每个阶段的能力:系统级编程能力
Lab顺序:
- 系统调用
- 内存管理
- 进程管理
- 系统调用
- 文件系统(用户态)
- 管道的实现
- 实现小系统
OS基础
OS是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务。
屏蔽复杂性:抽象。需要创建、实现和管理抽象。
为什么要有OS而不是直接运行汇编代码:无法手动管理底层硬件巨大的复杂性,由OS进行管理
什么是内核
“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分。
直接对硬件操作是复杂的,内核通过提供接口,隐藏了下层的操作复杂度,激励性了硬件抽象。内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。
-
宏内核
内核的功能都集中在一起,运行在内核进程中,模块之间的交互直接通过方法调用 -
微内核
微内核中,内核只提供最核心的功能,如任务调度、内存管理。其他模块都被移除内核,运行在不同进程,这样即使某一个模块出现问题,只要重启该进程即可;
但是该种做法需要使用IPC作为进程间通信的方式,进程间的效率较低
-
混合内核
宏内核和微内核的结合体,混合内核就是集中了两者的特点,让微内核的一些核心模块运行在内核中,从而使得内核效率更高 -
外内核
外内核就是把硬件暴露给应用程序,应用程序可以直接访问硬件,外内核对系统提供保护
内核是由中断驱动的,现代操作系统的核心就是中断驱动。
微内核结构
**内核值包括中断处理、进程通信(PC)、基本调度等。**指保留了最为基础的功能。
文件系统、网络功能、内存管理、设备管理等并没有在内核种,而是作为服务在微内核上运行。
优点:
- 内核易于实现
- 可移植性好
- 配置灵活
- 支持分布式环境:本地内核和远程了你和对服务同样的支持
缺点:速度较慢:内核的频繁切换
- 扩大内核减少切换
- 减少内核提高其他优点
模块接口
高内聚+低耦合
有点:增加了操作系统的灵活性,加速了OS的研制过程、便于修改和维护
缺点:接口定义困难、无序性
操作系统的功能
- 处理机管理
- 存储器管理(内存)
- 设备管理
- 文件管理
- 作业管理
操作系统应该解决的基本问题:
- 提供解决各种冲突(资源竞争引起)的策略
- 处理机调度、进程调度、内存分配、设备分配等
- 协调并发活动的关系(提供流程控制和避免运行结果不确定性)
- 进程之间的通信,同步与互斥
- 保证数据的一致性
- 读写数据时,数据结构中的内容是否真实地记录了数据的实际情况
- 在分布式处理时的共享数据的不同副本是否一致
- 实现数据的存取控制
- 共享程度、隐私程度、安全程度的控制
OS的实现
操作系统的一些功能
在发展中,为了支持多用户、多进程操作系统,提高性能,在OS的发展中产生了多种技术,典型的有多通道、分时技术
- 1946-1955:电子管
- 1955-1965:晶体管、监控系统
- 1965-1980:集成电路、多道程序设计
- 1980-1990:PC机、微机操作系统
- 1900:分布式与嵌入式操作系统
多道批处理系统
多道批处理系统是面向多个任务的,把计算机系统资源分配给不同的任务,系统内可同时容纳多个作业。这些作业放在外存中,组成一个后备队列。当出现IO操作等耗时使得CPU闲置时,从队列中抽取任务让CPU继续运算,从而在系统中形成一个自动转接的、连续的作业流。
在系统运行过程中,不允许用户与其作业发生交互作用,即:作业一旦进入系统,用户就不能直接干预其作业的运行。
即使一个程序只包含很少的I/O操作,程序所花费的大部分时间都用在这些I/O操作上。因此,利用这些空闲时间,让另一个程序能够利用CPU,将增加CPU的利用率。
随着虚拟内存和虚拟机技术的引入,多程序设计的使用得到了增强。它没有固定的进程时间片。其主要目的是资源利用。
优点:系统吞吐量大、资源利用率高
缺点:平均周转时间长、不能提供交互作用能力
分时技术
分时操作是面向多用户、多终端的。OS将CPU处理时间分割为多个时间片,将时间片分给不同程序,切换频繁,因此用户可以立即得到响应。操作系统使用CPU调度和多道程序设计,为每个用户提供少量时间。
- 批处理系统一次执行一个程序,I/O过程CPU空转
- 采用分时系统可以进一步提高CPU利用率,支持多用户、多进程
分时系统是由多个希望同时使用同一设施的用户共享计算设施。系统中的每个用户都有自己的终端,并感觉像独自使用CPU。分时系统使用多道程序设计的概念来在同一时间将CPU时间共享给多个用户。
硬件基础
硬件是软件的基础,必须要了解硬件。但只需要关注功能、接口和状态。
主要的核心问题就是CPU计算速度和访存速度、IO速度的不匹配,多种技术都是为了解决这个问题,包括Cache、分支预测等等。
软件基础:中断和异常
异常和中断:现代OS是中断驱动的。
陷阱帧:完整的线程描述表的子集,用于现场保护。只处理程序处理少量事件,多数转交给其他的内核或执行体模块处理
异步异常
异步:随时可能发生,不与时钟周期同步
中断是异步异常,可能随时发生,与处理器正在执行的内容无关。
中断主要由 I/O 设备、处理器时钟或定时器产生,可以被启用或禁用。
在实际的OS中,中断是轻量级的,通过调度中断线程完成大部分工作
同步异常
同步:和时钟一同到来
同步异常,它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。
系统调用也被视作一种同步异常,是一种陷阱