进程ID
进程ID的分配
进程的层次结构
运行新进程
exec系列调用:加载指定的程序到内存
fork:写了copy,不共享。
vfork:共享数据段,并且子进程先执行。子进程必须立即发出一个成功的exec调用或是调用_exit()以便结束执行。
终止进程
exit():先完成进程的用户空间中所需进行的所有工作,接着调用_exit()系统调用
_exit():内核处理终止进程的其余工作
......
等待已终止子进程
unix的原设计者决定,若子进程的死亡时间先于它的父进程,则内核应该让子进程进入一个特殊的进程状态(zombie). (包含有用数据的基本内核数据结构),父进程取得子进程信息,正式结束。
pid_t wait(int *status)
pid_t waitpid(pid_t 皮的, int* status, int options)
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options)
int system(const char *command)
僵尸进程
父进程先于子进程死亡,子进程会重新指派给init进程(pid为1)。 init会周期性的等待它的所有的子进程,这样确保僵尸进程不会停留太久的时间。
守护进程
必须是init的子进程,而其不的链接到一个终端。
int daemon(intnochdir,noclose)
高级进程管理
进程调度:抢占多任务,多处处理器。。。。。。。
查看kernel/sched.c
时段
i0密集型与处理器密集型进程
线程
让出处理器
进程主动让出执行权
int sched_yield(void)
实时系统
软硬实时
转载于:https://blog.51cto.com/baigoogledu/395816