Linux学习-进程管理
2014-10-09 10:10
225 查看
创建进程
Linux系统中,调用fork函数通过复制一个现有进程来创建一个新的进程,在调用结束时,再返回点这个相同的位置上,父进程恢复执行,子进程开始执行。Linux的fork使用写时拷贝(copy-on-write)页实现,资源的复制只有在写入时才进行,在此之前,只以只读方式共享,这种技术使地址空间上的页的拷贝被推迟到实际发生写入时才进行。fork的实际开销就是复制父进程的页表以及给子进程创建唯一的进程描述符。vfork与fork功能相似,子进程作为父进程一个单独的线程在它的地址空间里运行,父进程被阻塞,直到子进程退出或执行exec。vfork的好处就仅限于不用拷贝父进程的页表项。
exec函数可以创建新的地址空间,并把新的程序载入。
进程通过exit系统调用退出执行,这个函数会终结进程并释放其占用资源。
进程执行结束后,被保持在已终止状态,直到被它父进程调用wait或waitpid回收,一个终止了但未被回收的进程称为僵死进程。如果父进程没有回收它的僵死子进程就终止了,内核会安排Init进程回收它们。
进程描述符
进程描述符用task_struct结构表示,进程描述符中包含:它打开的文件,进程的地址空间,进程的状态等。进程状态
进程描述符中的state域描述了进程当前状态,有5种状态:TASK_RUNNING(运行):进程是可执行的,或者正在运行,或者在等待队列中等待执行。
TASK_INTERRUPTIBLE(可中断):进程被阻塞,等待某些条件达成。
TASK_UNINTERRUPTIBLE(不可中断):除了接收到信号也不会被唤醒,这个状态与可中断状态相同,通常在进程必须在等待时不受干扰或等待时间很快发生时出现。
_TASK_TRACED:被其他进程跟踪的进程。
_TASK_STOPPED:进程停止运行。
相关文章推荐
- Linux+C学习笔记之进程管理
- Linux——进程管理简单学习笔记(二)
- Linux 程序设计学习笔记----进程管理与程序开发(上)
- linux学习笔记----进程管理----杀死进程and 把进程放入后台
- Linux学习笔记:进程管理
- Linux学习笔记之计划任务、进程管理、磁盘管理
- Linux学习:第六章-Linux服务和进程管理
- Linux 程序设计学习笔记----进程管理与程序开发(下)
- 轻松学习Linux之理解进程的管理与控制
- Linux学习笔记-----进程管理-查看系统健康状态
- 【Linux学习笔记二十三】进程和服务的管理
- Linux学习记录--工作管理与进程管理
- Linux 学习笔记_8_进程管理_1_进程的概念
- Linux内核学习3:进程管理1
- 轻松学习Linux之理解进程的管理与控制
- Linux——进程管理学习简单笔记
- Linux 学习笔记_8_进程管理_3_计划任务
- Linux 学习笔记【4】 进程管理
- linux学习笔记之进程管理
- 学习LINUX高级程序设计之进程存储管理