操作系统的基本概念

操作系统的特征

  • 并发

  • 共享

    • 并发和共享的关系

      两个进程同时执行 , (并发性)

      需要共享的访问硬盘资源(共享性)

  • 虚拟

​ 虚拟存储器 和空分复用技术

​ 空分复用技术

​ 时分复用技术

  • 异步

    在多道程序环境下, 允许多个程序并发执行, 但是由于资源的有限, 进程的执行不是一贯到底的, 而是走走停停

操作系统底层

指令

image-20240101102157883

使用寄存器0, 和1 表示内核态, 还是用户态( 这个叫做PSW的标志位)

当出现中断信号之后就会修改cpu的控制权为内核态

image-20240101102649719

image-20240101102740305

中断和异常

image-20240101103008848

  • 内中断

    ​ 指令非法就会触发内中断 比如黑客 入侵或者 除0

    ​ 应用程序想要请求操作系统内核的服务,此时就会执行一条 特殊的指令-陷入指令(也可以叫做Trap指令/访管指令)

    image-20240101103305619

  • 外中断

    时钟中断 - 由时钟部件发送的中断信号

​ io设备中断: 外部设备发送的中断信号

判断 两个中断的差别: 与当前执行的指令无关中断信号的来自cpu内外

中断机制的基本原理

image-20240101103803796

系统调用

image-20240101104001404

image-20240101104234813

操作系统体系结构

image-20240101104802845

image-20240101104857365

微内核转换的时候需要状态转换6次

image-20240101105057918

  • 外核

image-20240101105742186

操作系统的引导

image-20240101111126088

虚拟机

image-20240101111322588

区别在于是否分配在宿主操作系统

image-20240101111759170

image-20240101112144666

对于第一种vmm 中 我们还可以继续进行划分特权

image-20240101112649807

对于ring1, 2的指令 vmm不需要检查直接执行, 对于ring0的请求在进行检查即可

进程

  • PCB 进程控制块

image-20240101113319618

  • 进程由 : PCB 程序段, 数据段组成

image-20240101113840982

image-20240101114133031

状态

创建态

就绪态

image-20240102103128708

运行态

CPU会执行该进程对应的程序

阻塞态

image-20240102103315933

终止态

image-20240102103428769

image-20240102103530901

image-20240102103611823

  • 注意: 不能从阻塞态 直接转换到运行态, 也不能由就绪态直接转换到阻塞态

  • 运行态, 也可以转换为就绪态 (时间片到了,处理机被抢占)

  • 单个CPU环境下,同一时刻只有一个进程被执行, 但是在多核环境下,可能会有多个进程处于运行态

  • 在进程控制块中有一个变量state 用于表示当前进程的状态

进程组织

链式方式组织

image-20240102104156458

索引方式组织

进程控制

  • 进程控制由原语控制

原语

  • 不可被中断, 原子性

  • 原理 : 使用了关中断指令和开中断指令这两个特权指令来实现原子性

    image-20240102104911211

出现时机

image-20240102105119631

撤销原语

步骤

从PCB集合中找到终止进程的PCB

若进程正在运行, 立刻剥夺CPU, 将CPU分配给其他的进程

终止其所有的子进程

将该进程拥有的所有资源归还给父进程或者操作系统

删除PCB

  • 触发撤销原语的时机

image-20240102105548292

切换原语

image-20240102105832436

  • PSW 程序状态字寄存器image-20240102110056183

当别的线程抢断之后, 寄存器的值被覆盖, 当进程切回来的时候, 原本的信息就消失了, 这个时候就需要把数据存储到硬盘中。

进程通信

  • 进程不能直接去访问其他的进程

共享通信

  • 通过共享存储, 进程P 和 进程Q就可以共享信息了

image-20240102111104810

直接通信

间接通信

image-20240103085358098

管道通信

image-20240103085951048

和 共享通信的区别, 就是 管道通信时半双工, 当然我们可以设置两个管道, 实现全双工

  • 管道一旦读出, 就会彻底消失, 一个管道允许多个写进程, 一个读进程。( 当然linux 也可以实现 多个读进程)

image-20240103090651467

线程模型

  • 什么是线程( 程序执行流的最小单位)
  • 引入线程后, cpu调度的对象就是线程了

image-20240103091630062

线程的实现方式

用户线程

image-20240103092357218

内核线程

image-20240103092605935

多线程模型

  • 一对一模型

    image-20240103092735235

  • 多对一模型

    • 退化成了用户级线程
    • image-20240103092830997
  • 多对多

image-20240103093107663

线程的状态和转换

image-20240103093742675

处理机调度

高级调度

image-20240103094151321

低级调度

image-20240103094251859

中级调度

image-20240103094530033

七状态模型

image-20240103095054875

进程调度的时机

低级进程调度

image-20240103095524250

进程调度方式

image-20240103100053547

image-20240103100430750

调度器(Scheduler)

image-20240103101114859

  • 如果系统支持内核级线程的话, 那么调度的基本单位就是内核级的线程

闲逛进程

  • 优先级最低
  • 反复的执行0地址指令,占用一个完整的指令周期
  • 能耗低

一些进程的评价公式

  • CPU利用率

  • 系统吞吐量

  • 周转时间

  • 带权周转时间

  • 等待时间

  • 响应时间 : 用户提交请求到首次产生响应所用的时间

image-20240103101919686

调度算法

先来先服务方式

image-20240103120103601

  • 对长作业有利, 对短作业无力

短进程优先算法

  • SJF (非抢占式)

每次调度选择当前已经到达的且运行时间最短的作业

  • SRTN (抢占式)

每当有新的进程进入就绪队列的时候,就需要重新使用调度算法

高响应比优先(HRRN) (非抢占式)

  • 抉择策略

image-20240103121332730

image-20240103121433676

调度算法(二)

时间片轮转调算法(RR)

优先级调度算法

调度算法