操作系统实验报告_实验三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
操作系统实验报告——实验三:进程管理(一)
实验内容:
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
///在实验室的电脑上操作
终端三:tty1
///在实验室的电脑上操作
实验室三个终端:tty3 tty5 tty1
终端四:tty4
///在个人电脑上操作
终端五:tty3 ///在个人电脑上操作
个人电脑两个终端:tty3 tty5 tty1
2.执行下列命令和操作:
解释命令的作用:
$sleep180 //执行挂起(睡眠)180秒
^Z(ctrl+Z)//强制当前进程转为后台,使之挂起(暂停)$jobs //查看后台运行的程序及运行状态
$sleep 240& //以后台方式启动挂起(睡眠)240秒
$sleep 300& //以后台方式启动挂起(睡眠)300秒
$sleep 330& //以后台方式启动挂起(睡眠)330秒
$sleep 630& //以后台方式启动挂起(睡眠)630秒
$jobs //查看后台运行的程序及运行状态
$fg 4 //将第四个任务切换到前台
^C(ctrl+C)//强制结束当前进程
$bg 1 //将第一个任务切换到后台运行
$kill 5 //结束后台任务5
执行结果截图:
3.利用/proc文件系统,选择一个进程,如-bash,列出并解释/proc/$PID/cmdline, /proc/$PID/stat, /proc/$PID/status文件的内容。
/proc/$3166/cmdline结果截图:
进程的命令行参数:bash^@
/proc/$PID/stat结果截图:
包含了进程的状态信息,例如:进程PID=3166,应用进程或命令的名字=bash,任务的状态:S(sleep),父进程:3158,线程组号:3166等等。
/proc/$PID/status结果截图:
进程的状态信息:包括进程名name、状态state、线程组内第一个线程id :tgid、父进程:ppid、跟踪调试进程id :Tracerpid、进程对应的程序的Uid、进程对应程序的Gid 、FDSize进程使用文件句柄大小、Groups 组信息、以及进程所使用的虚拟内存以及实际内存、信号机制方面的信息:VmPeak、kBVmSize、kBVmLck、kBVmpin……
4.分别以root和普通用户身份运行一个进程,使用nice、renice和top设置或者改变其优先级,并验证是否成功。
普通用户下:
●nice:
●renice:
●top:
root用户下:●nice:
●renice:
top: