线程与进程
线程定义
1. 线程是进程中的一个实体,是被系统独立调度和分派的基本单位。 2. 线程本身不拥有系统资源,只拥有一点儿在运行中必不可少的资源。 3. 但它可与同属一个进程的其它线程共享进程所拥有的所有资源。 4. 线程也有就绪、阻塞和运行三种基本状态。
引用异步
Linux进程状态解析
R (TASK_RUNNING):可执行状态。 1.正在CPU上执行的进程 2.可执行可是还没有被调度执行的进程 S (TASK_INTERRUPTIBLE):可中断的睡眠状态 处于这个状态的进程由于等待某某事件的发生(好比等待socket链接、等待信号量),而被挂起。 这些进程的task_struct结构被放入对应事件的等待队列中。 当这些事件发生时(由外部中断触发、或由其余进程触发),对应的等待队列中的一个或多个进程将被唤醒 D (TASK_UNINTERRUPTIBLE),不可中断的睡眠状态 存在的意义就在于,内核的某些处理流程是不能被打断的。 若是响应异步信号,程序的执行流程中就会被插入一段用于处理异步信号的流程
T (TASK_STOPPED or TASK_TRACED),暂停状态或跟踪状态 向进程发送一个SIGSTOP信号,它就会因响应该信号而进入TASK_STOPPED状态。 当进程正在被跟踪时,它处于TASK_TRACED这个特殊的状态。 “正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操做。 好比在gdb中对被跟踪的进程下一个断点,进程在断点处停下来的时候就处于TASK_TRACED状态。 而在其余时候,被跟踪的进程仍是处于前面提到的那些状态。 Z (TASK_DEAD - EXIT_ZOMBIE),退出状态,进程成为僵尸进程 进程在退出的过程当中,处于TASK_DEAD状态。 在这个退出过程当中,进程占有的全部资源将被回收,除了task_struct结构(以及少数资源)之外。 因而进程就只剩下task_struct这么个空壳,故称为僵尸。 之因此保留task_struct,是由于task_struct里面保存了进程的退出码、以及一些统计信息。 而其父进程极可能会关心这些信息。 X (TASK_DEAD - EXIT_DEAD),退出状态,进程即将被销毁。