内容发布更新时间 : 2024/12/26 17:50:23星期一 下面是文章的全部内容请认真阅读。
操作系统实验报告——实验三:进程管理(一)
实验内容:
1. 分别从至少三个虚拟终端登录,以树状形式列出你的系统中当前运行的所有进程及其PID。找出你当前运行进程的所有祖先进程,并说明其各自的作用。分析Linux系统中的进程的家族关系。
? 实验室里:
当前运行进程的所有祖先进程是init进程,init是Linux系统操作中不可缺少的程序之一,是内核启动的用户级进程。
内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 init有许多很重要的任务,比如像启动getty(用于用户登录)、实现运行级别、以及处理孤立进程,用pstree命令就看到进程之间的关系了,所有进程都是由最开始的init创建的,父进程逐个创建子进程。 ? 个人电脑:
所有进程的祖先进程为systemd,其是linux下的一种init软件。Systemd(系统管理守护进程),最开始以GNU GPL协议授权开发,现在已转为使用GNU LGPL协议,它是如今讨论最热烈的引导和服务管理程序。Linux系统配置使用Systemd引导程序,取替了传统的SysV init,启动过程将交给systemd处理。Systemd的一个核心功能是它同时支持SysV init的后开机启动脚本。Systemd引入了并行启动的概念,它会为每个需要启动的守护进程建立一个套接字,这些套接字对于使用它们的进程来说是抽象的,这样它们可以允许不同守护进程之间进行交互。Systemd会创建新进程并为每个进程分配一个控制组(cgroup)。处于不同控制组的进程之间可以通过内核来互相通信。systemd处理开机启动进程的方式非常漂亮,和传统基于init的系统比起来优化了太多。
? 终端一:tty3 ///在实验室的电脑上操作
? 终端二:tty5 ///在实验室的电脑上操作