操作系统进程实验一
2021/4/7 7:06:34
本文主要是介绍操作系统进程实验一,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
操作系统进程实验一
一、实验目的:
理解进程定义:进程是一个程序的一次执行的过程,同时也是资源分配的最小单元。
程序与进程的区别:程序是静态的,是一些指令的有序集合。进程是动态的,是程序的执行过程,包括动态创建、调度和消亡的整个过程。一个程序可以被执行多次,可以对应多个进程。
理解进程状态:进程在运行中不断地改变其运行状态。通常,一个运行进程必须具有以下三种基本状态:运行态、就绪态、阻塞态。实际操作系统中都超过三种状态,例如Linux操作系统中一般有6种状态。
二、实验内容:
- 使用各种系统命令查看进程的相关信息
- 使用进程的创建函数、退出函数
三、实验步骤:
第1步 感受进程的存在,观察进程的状态。
部分列标题含义
USER:用户
PID:进程号
%CPU:进程占用的CPU百分比
%MEM:占用内存的百分比
STAT:进程状态 例如S 处于休眠状态;R 正在运行;Z 僵尸进程不存在但暂时无法消除
COMMAND:命令
通过多次运行ps aux命令,观察如下现象:
(1)进程号不重复,唯一。
(2)进程状态:多种
(3)1号进程的命令init不变
第2步 在终端输入top,回车,查看动态进程信息。
使用下列命令更新top
按下P:按%CPU排序
按下M:按%MEM排序
按下空格:马上刷新(默认3秒)
按下q:退出(默认的top会一直占用当前端口)
按空格手动刷新,按P实现按%CPU排序,观察现象:
(1)观察大部分情况下只有一个进程处于R状态,大部分情况下CPU的占用率都不高,意思是CPU比较闲。在单核CPU中,某一个时刻只能有一个进程占用CPU即处于运行态R,操作系统书上的理论都是指的单核CPU。
(2)但实际中是多核的CPU,所以实际中应该有一个时刻运行多个进程的情况即并行。使用top命令动态观察是否有出现两个及以上的进程处于R态,并捕捉类似的截图。
(3)进程号不重复,唯一。
第3步 利用管道增加条件查询
(1)ps aux | grep init,多次执行得到的结果都是init的进程号是1号。
(2)启动firefox后,查询firefox对应的进程号是多少?
3)关闭firefox,再启动后,查询firefox对应的进程号是多少?两次进程号一样吗?
第4步 自己编写程序测试,一个程序可以对应多个进程。
(1)编写测试程序:pstest.c
(2)编译测试程序
(3)开始测试
打开3个终端,都运行这一个程序,再打开第4个终端查询这个名字的进程有几个,会发现有3个进程号不同的进程,而最后一列却是同一个可执行文件。
第5步 kill -9 进程号,杀死上一题创建的进程./pstest,要先查询进程号。
第6步 使用proc文件系统查看进程信息
Proc只存在于内存当中,它以文件系统的方式提供应用程序访问系统内核数据的操作接口。Proc动态地从系统内核读出所需要信息并提交给应用程序。
(1)运行/home/tarena/pstest文件,打开另一个终端观察ls /proc中有一个它的进程号文件夹。
(2)如果使用kill杀死pstest对应的进程,则/proc下对应的进程号文件夹也消失
(3)cat /proc/self/status 查看系统当前进行状态,状态信息非常的多,相当于是进程控制块PCB的内容。
第7步 使用进程的创建函数、退出函数编写程序
第8步 测试程序截图
这篇关于操作系统进程实验一的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南