• 操作系统复习:引论


    引论

    1. 背景引入

    冯诺依曼机(硬件)组成:

    image-20220829154050264

    Note:《计算机组成原理》这门课就是由冯诺依曼体系机的组成划分,依次介绍说明了计算机。

    现代操作系统组成:
    现代计算机系统的组成 { 硬件设备 { 处理器 主存 磁盘 I O 设备 软件 { 系统软件 { 操作系统 语言处理程序 通用程序 服务支持软件 应用软件 现代计算机系统的组成\begin{cases}硬件设备\begin{cases}处理器\\主存\\磁盘\\IO设备\end{cases}\\软件\begin{cases}系统软件\begin{cases}操作系统\\语言处理程序\\通用程序\\服务支持软件\end{cases}\\应用软件\end{cases}\end{cases} 现代计算机系统的组成 硬件设备 处理器主存磁盘IO设备软件 系统软件 操作系统语言处理程序通用程序服务支持软件应用软件

    1. 1 关于用户态和内核态的简单讨论

    计算机有两种运行模式:内核态(管态、核心态)和用户态。

    • 操作系统运行在内核态

      具有对所有硬件的完全访问权,执行任何机器能够执行的任何指令

    • 其他软件运行在用户态

      用户态只使用了机器指令中的一个子集,特别的,影响机器控制或者IO的指令,在用户态中是禁止的

    用户接口程序(shell或者GUI)处于用太太的最低层次,允许用户运行其他程序。

    image-20220829165959457

    1.2 什么是操作系统

    操作系统是运行在内核态的软件。有两部分的任务:

    • 为应用程序员提供资源集的抽象
    • 管理硬件资源
    1.2.1 作为扩展机器的操作系统

    操作系统的任务是创建好的抽象,并实现和管理它所创建的抽象对象

    example:需要对IO操作深入了解 -> 驱动程序 -> 文件系统(不用在乎细节)

    image-20220829165824190

    注意区别两个接口:

    • 用户与软件的接口:GUI
    • 软件(编写软件的程序员)与硬件机器:操作系统
    1.2.2 作为资源管理者的操作系统

    自顶向下的观点:操作系统是向用户程序提供基本抽象的概念

    自底向下的观点:操作系统用来管理复杂系统的各个部分。——有序处理竞争的程序之间对处理器、存储器以及其他的IO接口设备的分配。

    1.2.2.1 对资源的管理

    多道程序之间存在共享:

    • 共享硬件
    • 共享信息(文件、数据等)

    操作系统的主要任务是记录哪个程序在使用什么资源,对资源进行分配,评估使用代价,为不同的程序和用户调解相互冲突的资源请求。

    1.2.2.2 对资源管理的方法
    • 在时间上复用

      不同的程序轮流使用它。

    • 在空间上复用

      每个客户都得到资源的一部分,example:若干程序之间分割内存

    1.2 操作系统历史

    操作系统的发展是重叠的。

    1.2.1 第一代:真空管和穿孔卡片

    没有程序设计语言,没有汇编语言,没有操作系统

    1.2.2 第二代:晶体管和批处理系统
    • IBM 1401:将卡片读入磁带
    • IBM 7094:完成真正的计算
    image-20220830165044979
    1.2.3 第三代:集成电路和多道程序设计

    计算机发展的两种方向:

    • 大型机
    • 面向商务的计算机
    1.2.3.1 多道程序设计
    image-20220830154908126

    将内存分区,每一部分存放不同的作业。

    当一个作业等待IO完成时,另一个作业可以使用CPU。当作业足够多时,CPU的使用率可以接近100%。

    1.2.3.2 SPOOLing技术

    SPOOLing技术是一种输入输出技术。

    第三代计算机的另一个特点是,卡片被拿到机房后能够很快的将卡片读入磁盘。于是,任何一个时刻,当一个作业结束时,操作系统就能将一个新作业从磁盘读出,装入内存的区域运行。这种技术叫做同时的外部机器联机操作(Simultaneous Perpheral Operation On Line, SPOOLing),该技术也用于输出。

    有了SPOOLing技术后,就不再需要IBM 1401机了。

    1.2.3.3 进一步发展:分时系统

    出现背景:第三代计算机是批处理系统的一个变体,适用于大型科学计算和繁忙的商务数据处理,本质仍是批处理系统。程序员怀念第一代处理的方式,因为可以独占计算机,不断debug。现在从一个作业提交到取回,往往花费较长时间,一个逗号的误用可能造成编译失败,浪费程序员较多时间。

    多道程序的变体,每个用户都有一个联机终端。系统轮流为各个用户服务。用户的指令较为简短,不会很耗时。

    1.2.3.4 MULTICS与云计算

    着眼于制造满足波士顿地区所有用户计算需求的一台机器。

    计算服务以“云计算”的形式回归。

    1.2.3.5 小型机的崛起

    IEEE定义了POSIX规范,大多数的UNIX版本支持它。POSIX定义了一个凡是UNIX必须支持的小型系统调用接口。

    并且提出了MINIX

    1.2.4 第四代:个人计算机
    1.2.5 第五代:移动计算机

    1.3 计算机硬件简介

    image-20220830220010736

    1.3.1 处理器
    1.3.1.1 处理器基本概念

    CPU基本周期:取指->译码->执行

    每个CPU有专属的指令集,故x86不能执行ARM程序;ARM不能执行x86程序。

    寄存器的出现:访存时间较长,使用寄存器暂存数据
    $$
    寄存器的分类\begin{cases}
    程序计数器:保存下一条指令地址\
    堆栈指针:指向堆栈的顶端\
    程序状态字:包含条件码位等\

    \end{cases}
    $$
    OS必须知道所有的寄存器:保存现场

    提高性能:流水线的出现

    image-20220830193819228

    关于内核态和用户态:

    PSW中有一个二进制位控制这两个模式

    • 当在内核态运行时,CPU可以执行指令集中的每一条指令,使用硬件的每一种功能

    • 用户态时,仅允许执行整个指令集的一个子集和访问所有功能的一个子集

      为了从操作系统中获取服务,用户程序必须使用系统调用以陷入内核并调用操作系统

      TRAP指令把用户态切换成内核态,并启用操作系统。

    1.3.1.2 多线程和多核芯片

    多线程和超线程的概念。

    多线程:允许CPU保持两个不同的线程状态,然后再纳秒级别的时间尺度内来回切换。

    GPU:由成千上万的微核组成的处理器,擅长大量并行简单计算,比如在图像应用中渲染多边形

    1.3.2 存储器

    理想存储器:

    • 迅速
    • 充分大
    • 非常便宜

    现有技术无法满足。于是存储器系统采用分层结构:

    image-20220830210516990

    每一层:

    寄存器使用和CPU一样的材料制成,非常快,没有时延。

    高速缓存被分割成高速缓存行,高速缓存甚至有两级或者三级,每一级比前一级容量大且慢。

    L1缓存:CPU中,存储解码的指令

    第二个L1缓存:频繁使用的数据字

    L2缓存:若干兆字节内存字

    RAM:随机访问存储器

    ROM:只读存储器;用于启动计算机的引导模块放在ROM中

    1.3.3 磁盘

    成本低,随机访问数据时间慢了3个数量级。低速的原因是磁盘是一种机械装置:

    image-20220830211255285

    磁道,柱面的概念

    虚拟内存机制:使得运行大于物理内存的程序称为可能,其方法是将程序放在磁盘上,而将主存作为一种缓存,用来保存使用最为频繁的部分。这种机制需要快速映像内存地址,内存映像由存储器管理单元(MMU)完成

    一个程序切换到另一个程序,有时称为上下文切换,有必要对来自缓存的所有修改写回磁盘。

    1.3.4 I/O设备

    I/O设备包括两个部分:

    • 设备控制器:为操作系统提供一个简单的接口
    • 设备本身

    1.4 操作系统大观园

    1.4.1 大型机操作系统
    1.4.2 服务器操作系统

    通过网络同时为多个若干个用户服务,允许用户共享硬件和软件资源。

    1.4.3 多处理器操作系统

    1.5 操作系统概念

    常见问题

    Q:为什么要系统调用?

    • 当在内核态运行时,CPU可以执行指令集中的每一条指令,使用硬件的每一种功能

    • 用户态时,仅允许执行整个指令集的一个子集和访问所有功能的一个子集

      为了从操作系统中获取服务,用户程序必须使用系统调用以陷入内核并调用操作系统

      TRAP指令把用户态切换成内核态,并启用操作系统。

    Q:系统调用的过程?

    • 参数传递:由于用户空间和内核空间使用不同的栈空间,因此系统调用的参数需要使用寄存器进行传递。

    • 执行陷入指令(readfork等等),引发一个内中断,使 CPU 进入内核态

    • 在内核态,执行相应的请求,内核程序处理系统调用

    • 返回应用程序

  • 相关阅读:
    php定时任务
    Debian 11启用大页
    Python语言:字典的使用
    GIT提示Another git process seems to be running in this repository
    初级算法_数组 --- 有效的数独
    渗透测试之Web安全系列教程(二)
    CrossOver软件2023官方破解版本下载
    [计算机组成原理] 考试前突击挂科训练
    MHA+MYCAT 高可用架构
    【Vue3.0移动端项目--旅游网】--项目初始化搭建
  • 原文地址:https://blog.csdn.net/weixin_45745854/article/details/126615215