cpu管理的直观想法
CPU通过取值执行来运行。
当没有fprintf这一句的时候,执行10000000次循环需要的时间大约为0.015s,但是当有fprintf时,执行100次循环却需要0.859s。说明使用这样的IO操作相比运算操作对于CPU的运行来说是一种负担。
具体原因如下,也可以查看博主的计算机组成原理的中断的相关内容
怎么实现并发呢
当切换进程的时候,将进程的各个信息保存下来,当下一次切换到这个线程的时候,将保存下来的信息复原,就可以接下去执行这个被保存的进程了。
多进程图像:
当我们的1号进程开始运行,就不断的通过fork函数,来执行其他的任务
维护一个就绪队列,我们需要在就绪队列中选择一个PCB块,让其执行;同时维护一个阻塞队列,这些队列中的各个PCB需要等待一个事件的发生,当发生完了就可以加入就绪队列了
schedule();切换函数,找到下一个合适的进程,将合适的进程切换到执行状态。
我们需要将不同的进程的地址进行隔离,保证不会有出现一个进行修改了其他进程的数据
通过映射表,将不同的不同进程的相同地址映射到不同的物理地址上去
我们的电脑只需要将要打印的文件放入打印队列中,然后打印进程控制打印,中间遇到打印机的工作而不需要CPU参与,就将打印进程阻塞,CPU调用其他进程执行;当时当进程1和进程2都需要将打印文件放入队列中,就需要竞争。
当我们进行对共享内存的操作的时候,就需要上锁,保证内存不会同时被两个进程修改 或者 覆盖,需要保证操作的唯一
Tips:想要做实验4的同学,建议去了解一个文件描述符,相信如果你知道了这个东西会对计算机的输入输出有耳目一新的感觉