首页 > 编程语言 > 详细

进程与线程

时间:2015-11-01 16:36:35      阅读:283      评论:0      收藏:0      [点我收藏+]

程序是存在磁盘上的可执行文件;

进程是程序的执行实例,是资源(CPU时间、内存等)分配和拥有的实体。

进程ID:进程的唯一数字标识符,用pid_t定义,用getpid()得到,需要头文件unistd.h。PID最大32767。

进程描述符process descriptor:都是task_struct类型结构,它的字段包含了与一个进程相关的所有信息(属性、指针)。

 

用于进程控制的主要函数:fork、exec、waitpid。

创建进程时,接受父进程地址空间等一个(逻辑)拷贝,并从进程创建系统调用的下一条指令开始执行与父进程相同的代码。

 waitpid()会暂时停止目前进程的执行,直到有信号来到或子进程结束。需要头文件sys/types和sys/wait.h

线程:是CPU调度的最小单位。通常一个进程只有一个控制线程thread。在一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性。

一个进程有几个用户线程组成,每个线程都代表进程的一个执行流。(pthread库的标准库函数集编写)

 

进程状态

进程描述符中state字段描述了进程当前所处的状态。用标志表示进程状态,它们是互斥的。

可运行状态 TASK_RUNNING(进程中CPU上执行或准备执行)

可中断的等待状态 TASK_INTERRUPTIBLE(进程被挂起即睡眠,直到某个条件变为真。硬件中断,释放进程正等待的系统资源;或传递一个信号可唤醒进程,进程状态则放回到TASK_RUNNING。)

不可中断的等待状态 TASK_UNINTERRUPTIBLE(信号传递到睡眠进程不能改变它的状态)

暂停状态 TASK_STOPPED(进程的执行被暂停。当进程接收到SIGSTOP、SIGTSTP、SIGTTIN或SIGTTOU信号后,进入暂停状态。)

跟踪状态 TASK_TRACED(进程的执行已由debugger程序暂停)

僵死状态 EXIT_ZOMBIE(进程的执行被终止,但父进程没有发布wait4()或waitpid()系统调用来返回有关死亡进程的信息)

僵死撤销状态 EXIT_DEAD(最终状态:由于父进程刚发出wait4()或waitpid()系统调用,因而由系统删除。)

 

进程与线程

原文:http://www.cnblogs.com/LarryGen/p/4927708.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!