目录
CPU的工作原理
取址执行
获得一个地址,从内存中取出来实行。设好PC初值即可
如何提高CPU利用率
多道程序、交替执行
一个CPU面对多个程序
一个CPU上交替的执行多个程序:并发。
设置初始为50,需要切换到另一个程序时,OS修改PC=200.(需要记录切出去的时候程序执行到的样子)(运行的程序和静态程序不一样了,静态程序不用记录)(类似读书,读过和没读的,下次再读,读的时候大脑所处的状态不同,一个读取以前读到的位置开始读,一个不需要读取)
运行的程序--进程
进程是正在进行(执行)的程序
进程有开始、有结束、程序没有
进程会走走停停,走停对程序无意义
进程需要记录ax,bx,......,程序不用
多进程图像
启动了的程序就是进程,所以是多个进程推进
操作系统只需要把这些进程记录好、要按照合理的次序推进(分配资源、进行调度)
这就是多进程图像。
多进程图像从启动到关机结束
main中的fork()创建了第一个进程
init执行了shell(Windows桌面)
shell再启动其他进程(一个命令启动一个进程,返回shell再启动其他进程)
多进程如何组织
操作系统感知进程靠PCB,多个进程的PCB放在不同地方
有一个进程正在执行
有一些进程等待执行
有一些进程在等待某事件
多进程的组织:PCB+状态+队列
进程状态图
多进程如何交替
交替分为三个部分:队列操作+调度+切换
先写入阻塞态,调用schedule函数,切换进运行态
pCur,pNew实际是PCB
getNext是调度
多进程如何影响
多进程的地址空间分离:内存管理的主要内容(通过映射表)
多进程合作
例:
两个合作都要修改counter
这种假若counter初始是5,结果将会是4,为了解决这种问题
写counter时阻断其他进程访问
检查没成功将无法切换
如何形成多进程图像
读写PCB(OS中最重要的结构,贯穿始终)
要操作寄存器完成切换
要写调度程序
要有进程同步与合作
要有地址映射