【操作系统专题】与Linux系统相关的几个问题

本问题对应的项目链接:高频题回答模版训练

PS:这块问的也不多,但是一旦问,可能几个问题就一起问了

1、什么是守护进程?守护进程和普通进程有啥区别?

2、什么是是僵尸进程?僵尸进程会导致哪些问题?

3、如何避免僵尸进程呢?

4、孤儿进程呢?

共以下 2 个回答

  • 終达·斯维达尼亚 永久会员 2024年3月19日 下午11:50

    2、僵尸进程会导致哪些问题?

    因为僵尸进程本身不会在运行,只是会存留一些状态信息。但如果僵尸进程多的话,他们会占用一定的进程表空间,导致进程表耗尽,系统不能再创建新的进程,从而影响系统的正常运行。

    3、如何避免僵尸进程呢?

    由init进程统一对僵尸进程进行回收。

    4、孤儿进程呢?

    孤儿进程会被系统的 init 进程接管,由它来确保孤儿进程的资源释放。孤儿进程本身没啥危害。

    0 赞同 0 条回复
  • 秊 永久会员 2023年9月3日 下午2:20

    1、什么是守护进程?守护进程和普通进程有啥区别?

    守护进程是在操作系统中以后台服务的形式运行的进程,主要执行一些在后台持续运行的任务,如监控硬件状态,网络服务等等。

    它与普通进程的区别在于几个方面,首先是守护进程不与终端或者用户界面相关联,通常伴随着系统的启动而启动,直到系统关闭而退出,相比之下,普通进程通常是由用户来决定启动和退出的。并且守护进程几乎不与用户进行交互,而普通进程通常需要依赖于用户的输入和输出。

    2、什么是是僵尸进程?僵尸进程会导致哪些问题?

    僵尸进程是指,一个子进程执行完毕后,它的父进程没有及时回收该子进程的相关资源,如进程描述符,内存等等,导致子进程的状态信息还存留在进程表中未被清理,但它本身已经不再执行任何操作了。

    因为僵尸进程本身不会在运行,只是会存留一些状态信息。但如果僵尸进程多的话,他们会占用一定的进程表空间,导致进程表耗尽,系统不能再创建新的进程,从而影响系统的正常运行。

    3、如何避免僵尸进程呢?

    僵尸进程产生的根本原因就是父进程未等待子进程结束,解决就是父进程通过一定方式,获取到子进程的退出状态,然后完成子进程状态的清理。

    具体的方式可以使用 wait( ) 或者 waitpid( ) 等系统调用,或者设置一个信号处理函数,当子进程结束时会给父进程发送信号。再有就是比较复杂的「双重 fork 法」,具体的,首先由父进程创建子进程,子进程再创建孙子进程,由孙子进程来处理具体的任务,而子进程在创建完孙子进程后就退出。由于孙子进程的父进程,也就是子进程退出了,那孙子进程变为了一个孤儿进程,Linux 中处理孤儿的进程的方式就是,由 init 进程接管孤儿进程,当孙子进程完成任务后,会直接被 init 进程回收,不会成为僵尸进程。

    4、孤儿进程呢?

    孤儿进程是指子进程还没结束呢,父进程先挂了,导致没有父进程来等待它的退出状态。这种情况下,孤儿进程会被系统的 init 进程接管,由它来确保孤儿进程的资源释放。孤儿进程本身没啥危害。

    0 赞同 0 条回复

# 回答此问题

后才能回答