linux进程状态机由之前的3态模型,后续转换成了5态模型,5态模型主要是软件系统的复杂性越来越高了,不能像3态模型中的将所有的进程全部放到内存,而是引入了一个task_interruptible,task_uninterruptible,将它换到交换区,所谓的可中断,是指进程是否可以因为事件被唤醒,而不是中断的原来语义,最多也只能说是中断进程的状态的这种牵强的解释。
为什么会出现线程模型的概念?
linux早期版本的多线程应用的支持并不好,线程的创建、调度都在用户态完成的pthread库,对于一个单进程的多线程的程序,单个线程阻塞有会导致其他的线程也阻塞,否则就要在开发时都使用非阻塞的技术开发。后来linux提供了LWP来更好的支持多线程应用的开发,轻量级的进程基本可以做到共享一些资源,地址空间,打开的文件等,因此就诞生了轻量级进程与线程的关联的实现方式,这样每个线程就由内核来调度了,一个线程睡眠之后,另一个线程就不用阻塞了。POSIX兼容的pthread库使用linux轻量级进程的情况有linux Threads,Native Posix Thread Library(NTPL),其实兼容二字就表现在pthread与轻量级进程的结合
阅读(904) | 评论(0) | 转发(0) |