操作系统实验二 进程创建

news2024/12/24 20:14:46

百年传承的实验,看不懂题意就对啦

vim写C代码的时候,记得先insetr键,Esc键后:wq保存。

更改后记得gcc重新编译。

代码显示异常,看评论区。

《操作系统》实验报告

姓名

Rhyme_7

学号

1008611

实验序号

实验二

实验名称

实验二进程创建

实验目的

1.加深对进程概念的理解,明确进程和程序的区别。

2.掌握进程的创建方法

实验内容

实验题目(1)

ps命令的使用

实验代码、实验过程(界面方式下的抓图)、实验结果(抓图)

(1)显示所有进程,找出使用当前进程的进程ID号,查看其状态。

ps -aux

当前进程ID号如下图,为5350

(2)列出目前所有面向用户的进程。(进程内可省略)

ps -ef

(3)显示所有自己所在用户的进程,并以长格式输出。

ps -U 用户名 -l

(4)用面向任务的格式显示个人用户中bash命令中的所有实例;并查看其父进程的详细信息。

ps -l|grep bash

Cat /proc/这里填PID/status

实验心得(遇到什么问题,如何解决)

不太理解题目中的一些要求,例如面向任务。询问室友后得知。

实验题目(2)

进程的创建

实验代码、实验过程(界面方式下的抓图)、实验结果(抓图)

(1)编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

#include <stdio.h>
#include <unistd.h>
int main(){
int p1,p2;
while((p1=fork())==-1);        /*创建子进程p1*/
if(p1==0) putchar('b');
else
{
while((p2=fork())==-1);   /*创建子进程p2*/
if(p2==0) putchar('c');
else  putchar('a');
}
return 0;
}

问题1:该程序的运行结果为何?多次运行后结果是否相同,为什么?

多次运行的结果不相同。因为没有同步措施,父进程和两个子进程的输出具有随机性。

问题2:修改该程序,使之在打印结果的同时标出是由哪个程序运行的出来的。(利用getpid()函数)

(2)进程的父进程和子进程

编写一段程序,使用系统调用fork()创建一个子进程。让子进程和父进程并发同时在每个进程中显示其子进程与父进程的PID号。

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(){
pid_t pid;
printf("before calling fork,calling process pid = %d\n",getpid());
pid=fork();
if(pid==-1)         /*创建失败*/
{
printf("fork fail!\n");
exit(1);}               /*表示异常退出.这个1是返回给操作系统的*/
if(pid==0){
printf("this is child process and child's pid = %d,parent'spid %d\n",getpid(),getppid());
    }
if(pid>0){
//sleep(1);    /*表示睡眠1秒*/
printf("this is parent process and pid = %d ,child's pid = %d\n",getpid(),pid);
    }
return 0;
exit(0);                        /*表示正常退出*/
}

分析并运行该程序回答如下问题,将结果与分析写在实验报告中。

问题1:程序中红色部分的作用可以让执行该语句的进程等待一秒钟后继续执行,当不添加改语句时程序的运行结果是什么?为什么?

不添加sleep(1),程序不会等待,不会将CPU给其他线程

问题2:添加sleep(1)语句后程序的运行结果是什么?与不加该语句有何区别?为什么?

加上sleep(1)后,程序会等待1秒,将CPU让给其他线程,但是不会释放锁,因此sleep(1)后自动恢复

问题3:通过PS命令查看各个程序的状态,并分析。

将sleep(1)改为sleep(10)

运行程序

10s内在新终端 ps

10后再ps

第一次ps命令显示有3个名字中含os2-2的程序,第一行状态为S+,表明当前程序正在睡眠,但可被某些讯号唤醒;第二行状态为Z+,表示该程序应该已经终止;第三行状态为S+,表明当前程序正在睡眠。

第二次PS命令显示有1个名字中含有os2-2的程序,状态为S+,可以看出,这个进程和第一次ps命令的第三行是同一个名字,这行的意思是我们查询的grep命令本身。

实验心得(遇到什么问题,如何解决)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1090.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

概率论与数理统计学习:数字特征(一)——知识总结与C语言实现案例

hello&#xff0c;大家好 这里是第十期的概率论与数理统计的学习&#xff0c;我将用这篇博客去总结知识点和用C语言实现案例的过程。 本期知识点——期望 离散型随机变量的期望连续型随机变量的期望随机变量函数的期望期望的性质 &#x1f4a6; 期望的引入 随机变量的分布函…

基于正交对立学习的改进麻雀搜索算法-附代码

基于正交对立学习的改进麻雀搜索算法 文章目录基于正交对立学习的改进麻雀搜索算法1.麻雀优化算法2. 改进麻雀算法2.1 正态变异扰动2.2 对立学习2.3 正交对立学习3.实验结果4.参考文献5.Matlab代码6.Python代码摘要&#xff1a;针对麻雀搜索算法种群多样性少&#xff0c;局部搜…

腾讯云 如何设置mysql允许外部连接访问

大家好&#xff0c;本篇文章主要讲的是如何设置mysql允许外部连接访问&#xff0c;感兴趣的同学赶快来看一看吧&#xff0c;对你有帮助的话记得收藏一下 前置 windows在CMD中登陆MySQL 看到大家都如此我就放心了。。。_云草桑的博客-CSDN博客_cmd登录mysql是不是只能在bin文件…

一种经纬度轨迹数据计算物理弯道的方法,轨迹弯道算法

前言 本文使用了纯数学计算的方法计算识别了轨迹中的弯道位置&#xff0c;整体思路较为简单&#xff0c;不过最终效果十分可观&#xff0c;本算法已经在百万级用户的平台稳定运行&#xff0c;在实现过程中对GPS漂移、连续弯道、回旋弯道进行了处理。不过弯道数据仅供页面展示&a…

c语言的三种基本结构——初学者一定要了解哦

文章目录前言一、顺序结构二、选择结构&#xff08;分支语句&#xff09;1.选择语句之→if语句1.1 if语句的基本结构1.2 if语句之多分支&#xff1a;1.3 if语句的常见错误使用。2.选择语句之→switch语句2.1 switch语句基本结构&#xff1a;2.2 switch语句基本应用2.3 break语句…

Python实现视频自动打码,不用担心透露隐私了

准备工作 环境咱们还是使用 Python3.8 和 pycharm2021 即可 实现原理 将视频分为音频和画面画面中出现人脸和目标比对&#xff0c;相应人脸进行打码处理后的视频添加声音 模块 手动安装一下 cv2 模块 &#xff0c;pip install opencv-python 安装 安装遇到报错&#xff0c…

基于javaweb的校园人力人事资源管理系统(java+springboot+ssm+mysql+jsp)

基于javaweb的校园人力人事资源管理系统(javaspringbootssmmysqljsp) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 基…

两种查看电脑连接的wifi密码的办法!

1.使用一行命令行语句 只需要同时按下WinR&#xff0c;打开命令行窗口&#xff0c;输入cmd&#xff0c;然后进入了Dos操作界面&#xff0c;输入 netsh wlan show profiles WIFI名称 keyclear注意&#xff1a;这里的名称是你自己电脑所连接的名称 即可查看电脑锁连接WIF的详细…

【K8S系列】在 Linux 上安装 KubeSphere

目录 1、多节点安装介绍 2、概念介绍 3、安装 3.1 准备主机 系统要求 3.2 下载 KubeKey 3.3 编辑配置文件 文件关键字介绍 3.3 使用配置文件创建集群 3.4 验证安装 3.5 启用 kubectl 自动补全 1、多节点安装介绍 在生产环境中&#xff0c;由于单节点集群资源有限、…

初识C++ (一)

这里写目录标题一. 什么是C &#xff1f;二. 关键字三. 命名空间namespace关键字命名域的使用四. c输入输出hello world输入结语经过一个多月的学习终于进入C啦 希望自己能够保持对编程的热爱 继续学习下去&#xff01; 并且将学习到的知识传递给大家 一. 什么是C &#xff1f;…

基于javaweb的在线心理测评系统设计和实现(java+springboot+ssm+mysql+jsp)

基于javaweb的在线心理测评系统设计和实现(javaspringbootssmmysqljsp) 运行环境 Java≥8、MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可配置运行 适用 课程设计&#xff0c;大作业&#xff0c;毕业设计&#xff0c;项目练习&#xff0c;学习演示等 功能说明 …

类和对象 (三)

目录 <一>const成员 <二> 取地址及const取地址操作符重载 <三>再谈构造函数&#xff08;初始化列表&#xff09; 1.构造函数体赋值 2.初始化列表 <四>explicit关键字 <五>static成员 概念 <六>友元函数 <七>友元类 <八>内部类…

2021年上半年软件设计师上午真题及答案解析(五)

41、42、43、当UML状态图用于对系统、类或用例的动态方面建模时&#xff0c;通常是对&#xff08; &#xff09;建模。以下UML状态图中&#xff0c;假设活动的状态是A&#xff0c;事件b0发生并且a>5&#xff0c;发生条件是c状态到d状态的转换条件的是&#xff08; &#xff…

HTTP缓存

http缓存分为&#xff1a;强制缓存和协商缓存 强缓存 不需要客户端就不需要向服务器发送请求&#xff0c;直接使用本地缓存 对于强缓存的资源&#xff0c;可以看到返回的状态码是 200&#xff0c;并且会显示 from memory cache/from disk cache&#xff0c;强缓存是通过 Exp…

Go语言开发k8s-04-Service操作

文章目录1. 结构体1.1 ServiceList1.2 Service1.3 TypeMeta1.4 ObjectMeta1.5 ServiceSpec1.6 ServiceStatus1.7 对照yml文件示例2. Get List语法完整示例3. Create语法完整示例4. Get Service语法完整示例5. Update Service语法完整示例6. Delete Service语法完整示例1. 结构体…

python基于PHP的个人信息管理系统

随着现代工作的日趋繁忙,人们越来越意识到信息管理的重要性与必要性,而具有个性化特色的个人信息管理系统能够高速有效的管理个人信息,从而提升自己的工作效率 社会的发展给人们的生活压力越来越大,每天所要面临的问题也越来越多,面对如此多的事情需要去处理往往会顾此失彼,将很…

SpringCloud-Hystrix服务治理

简介 Hystrix是用于服务熔断&#xff0c;容错管理工具&#xff0c;旨在通过熔断机制控制服务和第三方库的节点&#xff0c;从而对延迟和故障提供更强大的容错能力。 服务降级 当服务器压力剧增的情况下&#xff0c;根据实际业务情况及流量&#xff0c;对一些服务和页面有策略的…

Web前端入门(十八)圆角边框及盒子阴影

总目录&#xff1a;https://blog.csdn.net/treesorshining/article/details/124725459 文章目录1.圆角边框2.盒子阴影2.1 开发中阴影常用语句2.2 文字阴影1.圆角边框 在 CSS3 中&#xff0c;新增了圆角边框样式&#xff0c;这样盒子就可以变圆角了。border-radius 属性用于设置…

牛客刷题总结——Python入门03:运算符

&#x1f935;‍♂️ 个人主页: 北极的三哈 个人主页 &#x1f468;‍&#x1f4bb; 作者简介&#xff1a;Python领域优质创作者。 &#x1f4d2; 系列专栏&#xff1a;《牛客题库-Python篇》 &#x1f310;推荐《牛客网》——找工作神器|笔试题库|面试经验|实习经验内推&am…

【Linux】分析缓冲区,刷新机制,FILE

文章目录一、Linux的缓冲区(一) 用户层缓冲区(二) 内核层缓冲区&#xff08;Kernel Buffer Cache&#xff09;验证buffer增加和减少释放缓存二、缓冲区的刷新策略(一) 用户层缓冲区刷新策略(二) 内核层缓冲区刷新策略三、探究缓冲区常见问题的产生(一) 由于缺失换行符导致内容没…