系统相关
首页 > 系统相关> > 操作系统学习笔记4 | CPU管理 && 多进程图像

操作系统学习笔记4 | CPU管理 && 多进程图像

作者:互联网

操作系统的核心功能就是管理计算机硬件,而CPU就是计算机中最核心的硬件。而通过学习笔记3的简史回顾,操作系统通过多进程图像实现对CPU的管理。所以多进程图像是操作系统的核心图像


参考资料:


1. 从使用CPU开始直观理解CPU管理

要想管理CPU,就要知道如何使用CPU。

CPU的工作原理已经很熟悉:

所以,管理CPU最直观的方法就是,设置PC的初值,CPU就能按照规则依次执行下去。

这一点在计组实验的前四周手摇实验室设备进行指令执行,也可以有类似的印象。

这样做有什么问题?

怎么办?

2. CPU管理的核心:并发

image

可见,上图两个程序A、B充分利用了CPU的计算资源,总时长从80降到了45.

注意两个名词:并行和并发:

并行多人同时工作,并发一个人交替工作。

并且这里一个隐含条件是切换程序的开销要小于运行程序的开销。

如何实现并发呢?

!进程! 这个概念就用来刻画运行中的程序。比如上图中的程序1 和程序2,就是两个进程

也即进行中的程序,名字其实很形象。

  • 进程有开始、结束,程序没有;
  • 进程会走走停停,是动态的,有状态的,而程序没有;
  • 进程需要记录ax,bx..... 程序不用;

3. 简单总结1

4. 多进程图像

前文讲到,为了让CPU更好的工作,我们需要让CPU执行多进程,而这个过程如何表征呢?

多进程图像从开机一直存在到关机结束。

4.1 开机到关机过程中的多进程图像

4.2 查看当前进程情况 | 任务管理器

在 win10 以上版本中,Ctrl + Shift + Esc 就可看到任务管理器。

4.3 操作系统如何实现多进程图像

为了实现多进程图像,操作系统都应该解决哪些问题?

  1. 多进程如何组织?
  2. 多进程如何切换?
  3. 多进程交替时,如何相互影响?
  1. 多进程如何组织?也即多进程如何存放?

    • 操作系统感知进程依赖于PCB,组织和存放进程也靠PCB,通过PCB形成一些数据结构(队列),来组织多进程;如下图:

      PCB在这里相当于结构体,组成数据结构的基本单位。

    • 组织好多进程,才能合理推进多进程。

      image.png

  2. 如何推进多进程?

    • 一个进程正在执行

    • 另一些进程在排队(就绪队列)等待执行

    • 还有一些在等待触发事件,即使排到也不能调度执行

      比如上图中的第三列PCB,在等待磁盘操作。

      PCB是用来记录进程信息的数据结构

    • 总结:多进程对应的PCB分别放在不同的地方,执行不同的处理。

    • 把进程通过状态区分开来,通过操作系统对进程状态的转移控制,多进程就向前推进了。

      image.png

  3. 多进程如何交替/切换?

    这部分后续会详细讲解,下面还是简略的过程。

    • 情境:一个进程启动磁盘读写,等待时进行切换。

      下图展示了关键代码,代码注释见图中红色字体;

    • schedule()函数是重点,即调度函数;

    • 下图中的getNext从就绪队列中挑出下一个需要占用CPU的进程;

      选择哪一个进程合适,即进程调度问题,也会用一讲来讲解。

    • switch_to就是用 PCB 进行进程上下文的切换pCurpNew分别指当前进程的 PCB 和调度得到的下一个进程的 PCB ,即进行执行现场的更替。

      交替的三部分:

      • 队列操作+调度+切换
    • image.png

  4. 进程如何调度?

    • 这里先讲两个基础调度算法。
      • FIFO,First In First Out.
        • 显然是比较公平的策略,但是没有考虑进程执行的任务轻重缓急;
      • Priority.
        • 对进程赋予优先级,但如何赋予也是个问题。
  5. 切换进程

    • 调度找到下一个占用CPU的进程后,就要进行切换;

      这个过程需要精细控制,所以需要 汇编代码,下图为伪代码;

    • 做的事情也不难想象,先把将要停下的进程信息保存到PCB1中(将当前CPU的各种信息(寄存器等)保存到pCur中),

      再从将要进行的进程的PCB2中取出信息赋到对应寄存器/位置(将pNew中的寄存器等信息恢复到CPU中

    • image.png
  6. 多进程交替时,如何相互影响?

    互斥、锁的概念。

    • 多进程看似不打照面,但实际上它们同时在一个内存来存放。

      多个进程交替执行会相互影响,包括正面的多进程合作,负面的内存地址冲突等等

      image.png

    • 比如,进程1中,修改了某个地址的值,而这个地址,正好时进程2 包含的地址,这时就会引起进程2崩溃。

    • 如何解决进程间矛盾?

      限制对进程2地址的读写。即:!内存映射!

      其实涉及内存管理了,可见内存管理也服务于CPU管理的多进程图像。

      通过一个映射表,将真实物理地址转化为虚拟存储地址

      image.png

      两个进程的100内存地址,是虚拟逻辑地址,会映射到不同的物理内存;下图中展示了两个进程的100地址分别映射到了物理地址780和1260

      image.png

    • 还有一些时候,进程之间需要进行合作,如何进行进程间合作?

5. 简单总结2

image.png

标签:操作系统,counter,程序,&&,进程,执行,CPU
来源: https://www.cnblogs.com/Roboduster/p/16607037.html