cpu应该工作的样子——并发
因为io非常的耗时,当cpu取指执行,在进行到io命令的时候,cpu会暂停工作,这样就导致cpu的利用率非常低,因此在io执行的过程中,cpu应该去做其他事情,多道程序交替执行,这就是并发。
在实现多道程序交替执行,如果两道程序都对共享变量进行访问与修改,就会导致程序出错,因此在切换前需要将参数变量以及返回地址入栈保存,返回的时候弹栈,即保存上下文。在进程中用PCB寄存器来保存上下文,在线程中用TCB保存上下文。每个进程和每个线程都有属于自己的PCB和TCB。
多进程如何组织
将PCB通过队列进行管理,分为工作队列、就绪队列和等待队列,等待队列为需要等待某个事件发生
进程状态图
启动磁盘读写,进入阻塞态,改变pcur的状态并放入磁盘等待队列,切换进程,调度就绪队列中的pcb,切换pcb。
调度策略
FIFO:先进先出 priority:优先级
什么时候用多线程,什么时候用多进程
当对安全性不高,需要共享资源,相互合作和追求效率的时候用线程
当对安全性较高,对资源的开销和效率要求低时用进程
线程该有的样子
首先申请一段内存作为内核栈,申请一段用户态内存(硬件将内存分为用户态和核心态)作为用户栈 ,填写两个栈。将tcb关联内核栈,将tcb入队。