1.cpu
多核CPU,例如四核八C,指的是四个物理CPU,八个逻辑CPU,说明每个物理CPU上有两个逻辑CPU。
并发:进程之间抢占式的与CPU进行计算。每个进程都独占CPU一小会,然后让出CPU资源。
并行:每个进程都占有一个CPU进行运算。
2.PCB
进程标识符:即pid,进程号。
进程状态:
程序计数器:保存进程即将执行的下一条语句。
上下文数据:保存进程上一次执行的时候,寄存器中的数据。
内存指针:保存进程的地址,地址指向虚拟内存地址。
IO信息与记账信息:当前进程启动的时间,当前进程占用CPU的时间,显示的IO请求等。
优先级:PR(new)=PR(old)+NI
3.如何在代码中创建一个进程
系统调用:pid_t getpid(void),获取当前进程的pid的接口
系统调用:int fork();用来创建进程。如果创建子进程成功,则fork函数给父进程返回子进程pid,给子进程返回0。创建失败则返回小于0的值。子进程会拷贝父进程的PCB,因此可以说与父进程一毛一样,那么子进程从何处开始执行代码呢,答案是从int fork语句后面,因为子进程同样有程序计数器,子进程与父进程虽然具有同样的PCB,因此虚拟地址空间也是相同的,但是子进程和父进程是两个独立分开的进程,这点要时刻记住。
4.僵尸状态与孤儿进程
僵尸状态: 僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程 。
孤儿进程:没有孤儿状态,只要孤儿进程。因为孤儿进程产生的原因是父进程先于子进程结束,子进程就会被1号进程领养。