课程介绍

操作系统的设计原理体现了软硬件的最新发展:

  • 计算机体系结构:巨型机、大型机、微机、工作站、多核、XPU等
  • 程序设计方法:并发、面向对象、结构化

每个阶段解决每个阶段的能力:系统级编程能力

Lab顺序:

  1. 系统调用
  2. 内存管理
  3. 进程管理
  4. 系统调用
  5. 文件系统(用户态)
  6. 管道的实现
  7. 实现小系统

OS基础

OS是一组管理计算机硬件资源的软件集合,它向计算机程序提供共性的服务。

屏蔽复杂性:抽象。需要创建、实现和管理抽象。

为什么要有OS而不是直接运行汇编代码:无法手动管理底层硬件巨大的复杂性,由OS进行管理

什么是内核

“内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。内核是操作系统最基本的部分

直接对硬件操作是复杂的,内核通过提供接口,隐藏了下层的操作复杂度,激励性了硬件抽象。内核是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和网络系统等等,决定着系统的性能和稳定性。是连接应用程序和硬件的桥梁。

  1. 宏内核
    内核的功能都集中在一起,运行在内核进程中,模块之间的交互直接通过方法调用

  2. 微内核
    微内核中,内核只提供最核心的功能,如任务调度、内存管理。

    其他模块都被移除内核,运行在不同进程,这样即使某一个模块出现问题,只要重启该进程即可;

    但是该种做法需要使用IPC作为进程间通信的方式,进程间的效率较低

  3. 混合内核
    宏内核和微内核的结合体,混合内核就是集中了两者的特点,让微内核的一些核心模块运行在内核中,从而使得内核效率更高

  4. 外内核
    外内核就是把硬件暴露给应用程序,应用程序可以直接访问硬件,外内核对系统提供保护

内核是由中断驱动的,现代操作系统的核心就是中断驱动

微内核结构

**内核值包括中断处理、进程通信(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中,中断是轻量级的,通过调度中断线程完成大部分工作

同步异常

同步:和时钟一同到来

同步异常,它是某一特定指令执行的结果。在相同条件下,异常可以重现。例如内存访问错误、调试指令以及被零除。

系统调用也被视作一种同步异常,是一种陷阱

异常