摘要: Linux操作系统内核态对进程线程不做严格区别 从内核角度看根本就没有线程的概念,线程仅仅被视为一个使用某些共享资源的进程如地址空间,文件系统,打开的文件,信号处理程序等 进程0 内核是一个大的程序,可以控制硬件,也可以创建、运行、终止、控制所有的进程。当内核被加载到内存后,首先就会有完成内核初始化的函数start_kernel()从无到有的创建一个内核线程swap,并设置其PID为0,即进程0;它也叫闲逛进程;进程0执行的是cpu_idle()函数,该函数仅有一条hlt汇编指令,就是在系统闲置时用来降低电力的使用和减少热的产生。同时进程0的PCB叫做init_task,在很多链表中起了表头的 阅读全文
posted @ 2013-07-29 20:59 herry_tu 阅读(2879) 评论(0) 推荐(0) 编辑
摘要: 在每个进程退出如调用exit或return的时候,内核释放该进程所有的资源,包括打开的文件,占用的内存等,但是进程并没有立马就消失,而是仍然为其保留一定的信息(包括进程号,退出状态,运行时间, 直到父进程通过wait/waitpid来处理时才进行释放。此时该进程处于僵尸状态,该进程成为僵死进程(Zombie Process)。它需要它的父进程来为它收尸,如果他的父进程没安装SIGCHLD信号处理函数调用wait或waitpid()等待子进程结束,又没有显式忽略该信号, 那么它就一直保持僵死状态,此时即使是root用户也无法清理,如果这时父进程结束了,僵死的子进程成为"孤儿进程&quo 阅读全文
posted @ 2013-07-29 20:56 herry_tu 阅读(424) 评论(0) 推荐(0) 编辑