Linux中进程分类
①交互进程:由一个shell启动的进程,交互进程既可以在前台运行,也可以在后台运行。
②批处理进程:这种进程和终端没有联系,是一个进程序列。
③监控进程:也称守护进程,是一个在后台运行且不受任何终端控制的特殊进程,用于执行特定的系统任务。
进程的状态
①可运行状态:此时进程正在运行或者正在运行队列中等待准备运行。
②等待状态:此时进程在等待一个事件的发生或某种系统资源。在Linux系统中等待状态又细分为两种等待状态:可中断的等待状态和不可中断的等待状态。
③暂停状态:处于暂停状态的进程被暂停运行。
④僵死状态:每个进程在运行结束后都会处于僵死状态,等待父进程调用进而释放系统资源,处于该状态的进程已经运行结束,但是它的父进程还没有释放其系统资源。
至于中断为什么不能进入休眠,今天再网上查阅并总结了一下:中断处理的时候,不应该发生进程切换,因为在中断上下文中,唯一能打断当前中断handler的只有更高优先级的中断,
它不会被进程打断(这点对于softirq,tasklet也一样,因此这些bottom half也不能休眠),如果在中断上下文中休眠,则
没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断上下文中,没有进程的概念,没有相应的
task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了会导致阻塞的例程,内核几乎肯定会死.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)