所有程序都有CPU和io这两部分,即使没有用户输入也有输出。
CPU最好特别忙,io空闲无所谓。
程序/数据/状态 三个维度来看进程。
等待的资源可能是io资源或者通信资源(别的进程的答复)。
一个进程对应一个PCB,进程消亡,pcb也消亡。pcb驻留在内存,要把尽量少的放到pcb里面,不然占用大量空间。
操作系统的管理就是把pcb在各个队列移来移去。
jjob queue还不是进程,希望执行但是还没装入内存执行。
进程都希望把变量放到寄存器里面,进程运行一定会用到寄存器,把一些关键的,使用频繁的变量放到寄存器。
保存寄存器的值到pcb里面,pcb本身是在内存的。 保存现场,布置现场。
完全看操作系统设计者是怎么实现。unix创建子进程使用继承,执行是用的wait for.
linux 子进程和父进程除了pid,其他都一样。子进程返回的pid是0,父进程返回的是子进程的pid。
总结下来线程的优势:1、有效表达程序执行的线索。2、资源共享的时候开销小,切换的时候时间小没有进程间上下文切换的时间开销,3、可以有效表达多cpu,多核的情形。
1、响应快。2、资源共享。3、经济效应。4、多CPU表达。