L8 CPU管理的直观想法
操作系统在管理CPU的时候引出了多进程图像。
CPU的工作原理:自动取指执行 如何使用CPU:设置PC初值
问题:IO指令执行很慢,CPU效率不高 解决方法:多道程序,并发交替执行
怎么并发:修改PC,恢复现场(程序的执行状态信息) (每个程序有一个存放信息的结构:进程控制块PCB)
运行的程序和静态程序不一样! 所有的不一样都表现在PCB中。 程序+所有不一样 引出 进程的概念。
进程是进行(执行)中的程序 进程有开始、结束,程序没有 进程会走走停停,走停对程序没有意义 进程需要记录执行时的各种信息,程序不用
CPU工作:启动一个进程,让CPU来执行这个进程 CPU很好的工作:启动多个进程,让CPU来执行这些进程
管理CPU的核心就是让CPU执行多个进程
这一块应该挺好理解的。 进程是进行中的程序,进程是动态的,程序是静态的。 管理CPU就是让CPU高效率的工作,即能并发交替执行多个进程。 |
L9 多进程图像
main 在的 fork() 创建了第一个进程:运行 if(!fork()){init();} init 执行了 shell(Windows桌面) shell再启动其他进程
用户使用计算机就是启动一堆进程, 管理计算机就是管理这一堆进程。
多个进程推进的过程图像就是多进程图像。 | 多进程图像从启动 开始 到关机 结束。就是计算机一开始就会启动一个进程:shell或Windows桌面(用Windows比较好理解:一开机出现桌面,这是一个进程,然后在这个进程中我们可以开启其他进程,所以就是多进程) |
1.多进程如何组织 组织:PCB + 状态 + 队列 操作系统如何组织多个进程:用PCB放在不同的队列中,用这些状态来推进多个进程,进行状态转化
2.多进程如何交替 交替的三个部分:队列操作 + 调度 + 切换
切换时将将寄存器等信息写入PCB时需要精细的控制,要用汇编写,不能用C语言
3.多进程如何影响
问题:一个进程可能访问修改另一个进程内存地址的内容 解决的办法:限制对地址100的读写 多进程的地址空间分离:内存管理的主要内容
4.多进程如何合作 多个进程访问同一个资源有冲突
生产者-消费者问题
核心在于进程同步(合理的推进顺序)
多进程组织:PCB + 状态 + 队列 | PCB是进程存在的唯一标志。 进程有三种基本状态:运行态、就绪态、阻塞态。 根据状态不同,PCB加入不同的状态队列:就绪队列、阻塞队列... 进程:https://blog.csdn.net/tfnmdmx/article/details/119203992(王道笔记) | 多进程交替:队列操作 + 调度 + 切换 | 调度有三个层次,这里讲的是低级调度(进程调度):按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。 选好进程后,CPU将当前进程的现场写入当前进程的PCB,再读取新进程的PCB,就完成了进程切换。 调度:https://blog.csdn.net/tfnmdmx/article/details/119214333 | 多进程影响:某进程修改另一进程内容 | 多进程的地址空间分离:内存管理的主要内容 L20 中讲 内存管理:https://blog.csdn.net/tfnmdmx/article/details/119279673 | 多进程合作:访问同一资源会有冲突 | 核心在于进程同步(合理的推进顺序) L16 L17 https://blog.csdn.net/tfnmdmx/article/details/119242665 |
|