[No000038]操作系统Operating Systems -CPU

2023-07-31,,

管理CPU ,先要使用CPU…

CPU 的工作原理

CPU上电以后发生了什么? 自动的取指 — 执行

CPU 怎么工作?
CPU怎么管理?

管理CPU 的最直观方法

设好PC 初值就完事!

看看这样做有没有问题? 提出问题

怎么解决?

现在变成了这个样子

多道程序、交替执行,好东西啊!

 

单道程序

多道程序

CPU 利用率

40/80=50%

40/45=89%

DEV1 利用率

15/80=18.75%

15/45=33%

DEV2 利用率

25/80=31.25%

25/45=56%

一个CPU面对多个程序?

一个CPU 上交替的执行多个程序: 并发

怎么做到?

修改寄存器PC 就行了吗?

运行的程序和静态程序不一样了…

引入"进程"概念

运行的程序和静态程序不一样!

需要描述这些不一样…(这些不一样就成了进程概念的外延)
程序 + 所有这些不一样 -> 一个概念(所有的不一样都表现在PCB 中…)

进程是进行(执行)中的程序

进程有开始、有结束,程序没有
进程会走走停停,走停对程序无意义
进程需要记录ax,bx,… ,程序不用
…………

多进程图像Multiple Processes…

多个进程使用CPU的图像

如何使用CPU 呢?

让程序执行起来

如何充分利用CPU 呢?

启动多个程序,交替执行

启动了的程序就是进程,所以 是多个进程推进

操作系统只需要把这些进程 记录 好、要按照合理的次序推进(分配资源、进行调度)
这就是多进程图像…

多进程图像从启动开始到关机结束

main 中的fork() 创建了第1 个进程

init 执行了shell(Windows 桌面)

if(!fork()){init();}

shell再启动其他进程

int main(int argc, char * argv[])

{ while(1) { scanf("%s", cmd);

if(!fork()) {exec(cmd);} wait(); } }

一命令启动一个进程,返回shell 再启动其他进程…

多进程图像:多进程如何组织?

有一个进程在执行

有一些进程等待执行

有一些进程再等待某事件

多进程的组织:PCB+ 状态+ 队列

运行 → 等待; 运行 → 就绪; 就绪 → 运行……

该图称为 进程状态图
它能给出进程生存期的清晰描述
它是认识操作系统进程管理的一个窗口

多进程图像:多进程如何交替?

启动磁盘读写;

pCur.state = 'W';

将pCur 放到DiskWaitQueue;

schedule();

schedule()

{

pNew = getNext(ReadyQueue);

switch_to(pCur,pNew);

}

交替的三个部分:队列操作+ 调度+ 切换

就是进程调度,一个很深刻的话题

FIFO?

FIFO 显然是公平的策略

FIFO 显然没有考虑进程执行的任务的区别

Priority?

优先级该怎么设定? 可能会使某些进程饥饿

switch_to(pCur,pNew) {

pCur.ax = CPU.ax;

pCur.bx = CPU.bx;

...

pCur.cs = CPU.cs;

pCur.retpc = CPU.pc;

CPU.ax = pNew.ax;

CPU.bx = pNew.bx;

...

CPU.cs = pNew.cs;

CPU.retpc = pNew.pc; }

多进程图像:多进程如何影响?

多个进程同时在存在于内存会出现下面的问题

解决的办法:限制对地址100 的读写

多进程的地址空间分离: 内存管理的主要内容

进程执行时的100…

进程1 的映射表将访问限制在进程1 范围内
进程1 根本访问不到其他进程的内容
内存管理…

进程带动内存的使用

为什么说进程管理连带内存管理形成多进程图像?

多进程图像:多进程如何合作?

想一想打印工作过程

应用程序提交打印任务
打印任务被放进打印队列
打印进程从队列中取出任务
打印进程控制打印机打印

从纸上到实际:生产者− 消费者实例

两个合作的进程都要修改counter

    

                         

核心在于进程同步(合理的推进顺序)

写counter 时阻断其他进程访问counter

如何形成多进程图像?

读写PCB ,OS 中最重要的结构,贯穿始终
要操作寄存器完成切换
要写调度程序
要有进程同步与合作
要有地址映射

[No000038]操作系统Operating Systems -CPU的相关教程结束。

《[No000038]操作系统Operating Systems -CPU.doc》

下载本文的Word格式文档,以方便收藏与打印。