当前位置: 首页 > 面试题库 >

Linux进程状态

容宏逸
2023-03-14
问题内容

在Linux中,当需要从磁盘读取块时,进程状态会发生什么变化?被封锁了吗?如果是这样,如何选择另一个流程来执行?


问题答案:

在等待文件描述符返回read()write()从文件描述符返回时,该过程将进入一种特殊的睡眠状态,称为“
D”或“磁盘睡眠”。这很特别,因为在这种状态下不能终止或中断该进程。等待ioctl()返回的进程也将以这种方式进入睡眠状态。

例外情况是,当文件(例如终端或其他字符设备)以O_NONBLOCK模式打开时,如果假定文件(例如调制解调器)需要时间来初始化,则通过该文件。但是,您在问题中指出了阻止设备。另外,我从未尝试过以ioctl()非阻塞模式打开的fd很可能会阻塞的(至少是在不知情的情况下)。

如何选择另一个进程完全取决于您使用的调度程序,以及其他进程可能在该调度程序中修改其权重的方法。

已知某些情况下的某些用户空间程序会一直保持这种状态,直到重新启动为止。这些通常与其他“僵尸”归为一类,但由于它们在技术上并未失效,因此该术语不正确。



 类似资料:
  • 根据进程的定义,我们知道进程是代码运行的实体,而进程有可能是正在运行的,也可能是已经停止的,这就是进程的状态。 网上有人总结进程一共5种状态,也有总结是8种,究竟应该怎么算呢,最好的方法还是看Linux源码。进程状态的定义在fs/proc/array.c文件中。 /* * The task state array is a strange "bitmap" of * reasons to slee

  • 进程状态 在此次实验中,进程的状态之间的转换需要有一个更为清晰的表述,在 ucore中,runnable的进程会被放在运行队列中。值得注意的是,在具体实现中,ucore定义的进程控制块struct proc_struct包含了成员变量state,用于描述进程的运行状态,而running和runnable共享同一个状态(state)值(PROC_RUNNABLE。不同之处在于处于running态的进

  • 或许您会这样想,Linux 命令的句型确实不难,但是那么多命令,我怎么知道它们都是作什么的呢?而且不同的系统中,可以使用的命令似乎也不太一样,这真让人困惑…… 其实 Linux 的命令,运行的是 Linux 系统中的程序。只要您已安装了程序,您就可以通过命令来运行它,并且可以使用选项来精细的调整它的运行状态。也可以通过点击启动图标来运行,不过启动图标不能够方便的调整选项,并不是很方便。 举一个例子

  • ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,并且,如果管理员需要实时监控进程运行情况,就必须不停地执行 ps 命令,这显然是缺乏效率的。 为此,Linux 提供了  top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。 top 命令的基本格式如下:

  • 我试了所有我能在网上找到的东西。添加了rep,尝试从软件中心和终端安装,结果相同。 进程已终止,状态为-1

  • 问题内容: 我正在编写Linux守护程序。我发现了两种方法。 通过调用和设置守护进程。 使用运行程序。 哪个是正确的方法? 问题答案: 来自http://www.steve.org.uk/Reference/Unix/faq_2.html#SEC16 以下是成为守护程序的步骤: 1. fork(),以便父级可以退出,这会将控制权返回给命令行或shell来调用您的程序。需要执行此步骤,以确保新流程不