进程就绪,运行,阻塞在什么情况下回发生变迁
时间: 2024-05-30 07:09:24 浏览: 15
在操作系统中,进程状态会发生如下三种变迁:
1. 就绪 -> 运行:当进程获得了 CPU 资源时,就可以从就绪状态变为运行状态。
2. 运行 -> 阻塞:当进程需要等待某些条件满足时,例如等待 IO 完成或等待信号量,就会从运行状态变为阻塞状态。
3. 阻塞 -> 就绪:当进程等待的条件满足时,例如 IO 完成或信号量释放,就会从阻塞状态变为就绪状态。
这些变迁通常由操作系统内核根据进程的执行情况和系统资源的分配情况来决定。
相关问题
什么情况下会出现进程由就绪态转化为运行态?
进程由就绪态转化为运行态的情况有以下几种:
1. 当前运行的进程时间片用完,需要进行进程切换,将就绪态的进程切换到运行态。
2. 当前正在运行的进程发生阻塞,例如等待某个输入输出操作完成,此时需要将其转为阻塞态,同时选择一个就绪态的进程切换到运行态。
3. 新的进程创建并准备好运行时,如果此时没有正在运行的进程,新的进程可以直接从就绪态转换为运行态。
4. 操作系统发生中断,需要执行相应的中断处理程序时,当前正在运行的进程需要被挂起,将其转为就绪态,然后执行中断处理程序,处理完成后再选择一个就绪态的进程切换到运行态。
以上是进程由就绪态转化为运行态的一些情况,具体情况还需根据操作系统的实现方式和具体的应用场景来确定。
linux 2.4时候 什么情况下会发生调度
在 Linux 2.4 内核中,进程调度通常发生在以下三种情况下:
1. 当前进程放弃 CPU 时间。这种情况通常发生在当前进程主动调用 sleep() 等函数让出 CPU 时间,或者在执行完当前时间片后,进程需要等待 I/O 操作等事件的发生。
2. 当前进程被阻塞。这种情况通常发生在当前进程需要等待 I/O 操作或其他事件的发生,进入睡眠状态,并将 CPU 时间分配给其他进程。当 I/O 操作完成或者事件发生时,操作系统会将进程唤醒,并将其重新放入就绪队列中等待调度。
3. 一个新的进程加入到就绪队列中。这种情况通常发生在新的进程被创建并加入到就绪队列中,此时调度器会选择下一个将要运行的进程,并将 CPU 时间分配给该进程。
需要注意的是,在 Linux 2.4 中,调度器是非抢占式的,也就是说,当一个进程正在执行时,只有在进程主动放弃 CPU 时间或进程阻塞时才会将 CPU 时间分配给其他进程。因此,在 Linux 2.4 中,进程的调度通常是由进程自身控制的。