OS1️⃣概述

1、计算机知识

1.1、结构

1.1.1、软件

  • 普通软件:如 web 浏览器、音乐播放器等。
  • 用户接口程序:基于文本的 Shell,基于可视化界面的 GUI。
  • 操作系统:Kernel(内核)。

1.1.2、硬件

CPU、存储器、磁盘、打印机、键盘鼠标、显示器、网络接口、I/O 设备等。

说明 相关知识
CPU 从内存中取出指令,解码并执行,重复此过程。 调度,寄存器,流水线机制,系统调用,多线程
存储器 理想状态:迅速,充分大,便宜。 缓存(L1, L2),主存
磁盘 内存管理(物理,虚拟)
I/O 设备 包括设备控制器,设备本身。 中断处理,设备驱动

1.2、运行模式

  • 内核态

    • OS 所处的模式。
    • 具有对所有硬件的完全访问权,可执行机器支持的任何指令
  • 用户态

    • OS 以外的软件所处的模式。
    • 仅使用机器指令的一个子集,会影响机器控制或进行 I/O 操作的指令会被禁止。

    image-20220713104841899

1.3、启动

相关知识

  • BIOS:基本输入输出系统,内置底层 I/O 软件。
  • bootloader:加载 OS。
  • 加载:将资源从磁盘载入到内存中。

计算机启动流程

  1. BIOS
    1. 检查 RAM 数量,确认键盘、显卡等基本设备已安装并正常响应。
    2. 扫描总线,查找总线上连接的所有设备。
    3. 根据设备清单决定 boot device(启动设备)。
    4. 加载 boot device 的第一个扇区并执行,确定活动分区。
    5. 从活动分区中读入 bootloader(启动装载模块)。
  2. bootloader:被读入 OS 并启动(可理解为加载 OS)。
  3. OS
    1. 询问 BIOS 以获取配置信息。
    2. 检查每个设备的驱动程序是否存在,不存在则需下载。
    3. 将设备调入内核,初始化有关表格,创建需要的背景进程。
    4. 在每个终端上启动登录程序或 GUI。

2、操作系统(❗)

2.1、理解

操作系统(Operating System, OS)

没有完整、精确、公认的定义,可从功能角度来理解。

  1. 用户视角:为用户程序提供资源集的清晰抽象,隐藏底层复杂的访问细节。

    (OS 封装了对硬件的操作,将简化后的接口提供给用户程序。)

  2. 程序视角管理硬件资源

    (OS 负责在相互竞争的程序之间,有序地控制对 CPU、存储器、IO 等硬件资源的分配。)

2.2、特征

含义 说明
并发 一个时间段内运行多个进程,由 CPU 调度执行。 并行:一个时间点运行多个进程;
串行:一个时间点只能运行一个进程。
共享 硬件资源共享 同时共享:不可修改的资源;
互斥共享:线程相互依赖,或资源不可同时使用。
虚拟 利用程序抽象技术,让用户程序认为自己独享一套硬件资源 CPU:进程
磁盘:文件
内存:地址空间
异步 程序不会一直执行,而是“走走停停” 取决于 CPU 调度

2.3、结构设计

含义 特点
单体系统 整个 OS 在内核态以单一程序方式运行 各过程之间可自由调用,任一过程的崩溃会连累整个系统。
层次化系统 具有层次式结构 上层软件在下层软件的基础上构建
微内核 将 OS 划分为较小的良好定义的模块,微内核运行在内核态,其余模块作为普通用户进程运行 思想:尽可能减少内核态的功能,高可靠性
客户端-服务器模式 将进程划分为服务器(提供服务)和客户端(使用服务) 基于消息传递方式进行通信
虚拟机 裸机硬件的精确复制品 每个虚拟机具有一套完整的硬件资源
外核 为虚拟机分配资源,限制机器只能使用分配到的资源 目的:保持多个虚拟机彼此不发生冲突

2.4、OS 的交互(❗)

来源 场景 时间
中断 外设 需要访问硬件资源 异步:无法确定发生时间
异常 用户程序 执行过程中发生意外 同步:发生异常时立即通知 OS
系统调用 用户程序 执行过程中需要系统服务 同步或异步:发起系统调用请求时立即通知 OS,可以异步等待结果

2.4.1、中断

interrupt

外设需要访问硬件资源时,向 OS 发起中断请求。

  1. 外设:发起中断请求。
  2. 硬件:查询中断表得到中断事件 ID,设置中断标记。
  3. 软件(OS):
    1. 保存进程状态(e.g. 寄存器数据)。
    2. 根据中断事件 ID 跳转到相应中断服务程序,进行处理。
    3. 清除中断标记。
    4. 恢复进程状态。

2.4.2、异常

exception

用户程序执行过程中发生意外(e.g. 非法指令,内存出错)时,通知 OS 发生异常。

  1. 软件(用户程序):发生意外,通知 OS 发生异常。
  2. 软件(OS):保存进程状态,根据异常 ID 进行异常处理。
    • 可处理:处理异常后继续执行,恢复进程状态。
    • 无法处理:杀死进程。

2.4.3、系统调用

system call

用户程序在执行过程中(用户态)需要系统服务时,将控制转移到操作系统。

  1. 软件(用户程序):准备参数,执行 TRAP 或系统调用指令,将控制转移到操作系统(内核态)。
  2. 软件(OS):
    1. 通过指令参数,查找所需的调用进程。
    2. 执行系统调用。
    3. 将控制返回给用户程序。

特点

用户程序通常不会直接调用系统调用指令,而是调用已封装的高级 API。

  • Windows:Win32 API
  • POSIX-based(如 UNIX,LINUX,Mac OS X):POSIX API
  • JVM:Java API
posted @ 2022-07-13 15:20  Jaywee  阅读(224)  评论(0编辑  收藏  举报

👇