操作系统实验一 Linux基本操作|实验二 进程管理

article/2025/9/7 22:28:40

由于当时没存代码,只有实验文档代码截图,文末也可直接获取实验文档。

操作系统实验

目录

  • 实验一 Linux基本操作
  • 实验二进程管理

实验一 Linux基本操作

1实验目的
1.熟悉在Linux操作系统下的基本操作,对Linux操作系统有一个感性认识。
2.学会使用vi编辑器编辑简单的C语言程序,并能对其编译和调试

2实验内容
(1)练习Linux的基本安装和配置;
(2)以root用户身份登陆,并使用“ls”,“cat”“cd”等常用命令来实现基本的文件操作并观察Linux文件系统的特点;
(3)使用vi编辑器编写一C程序,并用gcc命令进行编译和链接,并用a.out来进行输出结果。

3实验详细操作步骤及程序清单:
3.1常用命令练习
1.登录系统:login用户名称
2.注销(退出)系统:logout
3.关机命令:shutdownnow
4.使用man命令帮助,例如:manls(屏幕显示关于ls命令的帮助信息)
在这里插入图片描述
在这里插入图片描述
5.ls(显示目录内容)
格式:ls[选项][目录或是文件]
其中:-a显示指定目录下所有子目录和文件,包括隐藏文件
-l以长格式来显示文件的详细信息。
-R递归地显示指定目录的各个子目录中的文件
例如:
使用ls查看当前目录内容: l s 使 用 l s 查 看 指 定 目 录 内 容 : ls 使用ls查看指定目录内容: ls使lsls/etc
在这里插入图片描述

使用ls–al查看当前目录内容:$ls-al
在这里插入图片描述

使用dir查看当前目录内容:$dir
在这里插入图片描述

6.cd(改变工作目录)
格式:cd[路径名称]
如:cd…回到上层目录;cd/回到根目录
在这里插入图片描述

7.pwd(显示当前工作目录的绝对路径)
格式:pwd
在这里插入图片描述

8.mkdir(创建目录)
格式:mkdir[目录名称]
例如:mkdir/home/s2001/newdir
在这里插入图片描述

9.rmdir(删除空目录)
格式:rmdir[选项][目录名称]
在这里插入图片描述

10.cp(文件或目录的复制)
格式:cp[选项]源文件或目录目标文件或目录
例如:cp文件名1文件名2
在这里插入图片描述

11.mv(文件或目录更名或将文件由一个目录移到另一个目录中)
格式:mv[选项]源文件或目录目标文件或目录
在这里插入图片描述
12.rm(删除文件或目录)
格式:rm[选项]文件名|目录名
在这里插入图片描述
13.cat(显示文件)
格式:cat[选项]文件列表
例如:cat文件名
在这里插入图片描述
cat命令也可用来建立新文件:cat>文件名,ctrl+d结束输入
在这里插入图片描述
1.3.2vi编辑器的使用
vi提供二种工作模式:输入模式(insertmode)和命令模式(commandmode)。使用者进入vi后,即处在命令模式下,此刻键入的任何字符皆被视为命令,可进行删除、修改、存盘等操作。要输入信息,应转换到输入模式。
1.命令模式
在输入模式下,按ESC可切换到命令模式。
命令模式下,可选用下列指令离开vi:
:q!离开vi,并放弃刚在缓冲区内编辑的内容
:wq将缓冲区内的资料写入磁盘中,并离开vi
:ZZ同wq
:x同wq
:w将缓冲区内的资料写入磁盘中,但并不离开vi
:q离开vi,若文件被修改过,则要被要求确认是否放弃修改的内容,此指令可与:w配合使用。
2.输入模式
在命令模式下,按i或a,进入输入模式,此时可以编辑文件内容。
1.3.3gcc的使用
gcc由GNU之父Stallman所开发的linux下的编译器,全称为GNUCompilerCollection。在linux下可以直接编译c语言源程序,可生成可执行文件。
例如:gcchello.c编译hello.c源文件,若通过,会自动生成名称为a.out可执行文件。
例如:gcchello.c–ohello.exe编译hello.c源文件,若通过,会生成hello.exe可执行文件。
1.3.4使用vi编辑c语言源文件
(1)进入linux的文本模式之后,在命令行键入vifilename.c然后回车。下面作一些简单的解释:首先vi命令是打开vi编辑器。后面的filename.c是用户即将编辑的c文件名字,注意扩展名字是.c;当然,vi编辑器功能很强,可以用它来编辑其它格式的文件,比如汇编文件,其扩展名字是.s;也可以直接用vi打开一个新的未命名的文件,当保存的时候再给它命名,只是这样做不很方便。
在这里插入图片描述

(2)最基本的命令i:当进入刚打开的文件时,不能写入信息,这时按一下键盘上的i键(insert),插入的意思,就可以进入编辑模式了。如下图所示:
在这里插入图片描述

(3)a与i是相同的用法
(4)当文件编辑完后,需要保存退出,这时需要经过以下几个步骤:1)按一下键盘上的Esc键;2)键入冒号(:),紧跟在冒号后面是wq(意思是保存并退出)。如果不想保存退出,则在第二步键入冒号之后,键入q(不带w,不保退出)。
(5)退出vi编辑器的编辑模式之后,要对刚才编写的程序进行编译。编译的命令是:gccfilename.c[-ooutputfilename],其中gcc是c的编译器。参数:filename.c是刚才编辑的c源文件(当然也可以是以前编写好的c文件);后面中括号里面的参数是可选的,它是一个输出文件。如果不选,默认的输出文件是a.out,选了之后输出文件就是outputfilename.out.
(6)最后一步是运行程序,方法如下:./outputfilename.out
在这里插入图片描述

4、问题
Linux系统在用户登陆和操作界面以及文件系统上有哪些特点?
linux是真正的多用户:同一时刻,可以有多个用户同时登录一台linux(可以远程,也可以本地,本地只能有一个(废话)),而且linux下的大多程序是支持多用户的,比如vim, A,B,C三个用户同时登录linux,则可以同时使用vim,只要不用他来编辑同一个文档就可以了。    
   Linux操作界面是命令行式的,黑底白字的DOS样子。  Linux最重要的特征之一就是支持多个不同的文件系统,前面我们已经看到,Linux目前支持的文件系统 多达十余种,随着时间的推移,这一数目还在不断增加。在Linux中,一个分离的文件系统不是通过设备标识 (如驱动器号或驱动器名)来访问,而是 把它合到一个单一的目录树结构中,通过目录来访问,这一点与Unix十分相似。Linux用 安装命令将一个新的文件系统安装到系统单一目录树的某一目录下,一旦安装成功,该目录下的所有内容将 被新安装的文件系统所覆盖,当文件系统被卸下后,安装目录下的文件将会被重新恢复。
5、总结
这部分Linux的基本操作,基本了解了”man”,”ls”,”cat”,”cp”,”mv”等命令的使用方法,也使用了vi编辑器进行C语言编辑,并用gcc进行了成功编译。
在实验过程中我也遇到了问题,例如不知道命令参数的具体含义,导致任务不能被命令正确执行,在创建目录时未进入root身份导致权限不够,创建不成功。但这些问题在查阅资料后都一一解决了,在之后的学习生活中会更注意实践的重要性。

实验二 进程管理
1实验目的
1.加深对进程概念的理解,明确进程和程序的区别。
2.进一步认识并发执行的实质。
3.分析进程争用资源的现象,学习解决进程互斥的方法。
2.实验内容
(1)进程的创建

编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。

(2)进程的控制

1)修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。

2)如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
3实验详细操作步骤及程序清单:
3.1进程创建
编写一段程序,利用系统调用fork()创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。

分析:从进程并发执行来看,输出bac,acb或bca都有可能。
原因:fork()创建进程所需要的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了”b”,而进程2和主程序的输出次序是有随机性的,所以会出现多种可能结果。
3.2进程控制
修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。

分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。但是,由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,处处字符串的顺序和先后随着执行的不同而发生变化。
如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。

输出 child 块, son 块, daughter块的顺序可能不同,但是每个块的输出过程不会被打断。

分析:因为上述程序执行时,lockf(1,1,0)锁定标准输出设备,lockf(1,0,0)解锁标准输出设备,在lockf(1,1,0)与lockf(1,0,0)中间的for循环输出不会被中断,加锁与不加锁效果不相同。
4、相关问题及思考
(1)系统是怎样创建进程的?
首先,fork() 函数拷贝当前进程创建子进程。产生的子进程与父进程的区别仅在与 PID 与 PPID 以及某些资源和统计量,例如挂起的信号等。准备好进程运行的地址空间后,exec() 函数族负责读取可执行程序,并将其加载到相应的位置开始执行。
(2)可执行文件加载时进行了哪些处理?
可执行文件加载时首先是创建一个新进程的fork系统调用,然后用于实现进程自我终止的exit系统调用;改变进程原有代码的exec系统调用;用于将调用进程挂起并等待子进程终止的wait系统调用;获得进程标识符的getpid系统调用等处理过程。

(3)当首次调用新创建进程时,其入口在哪里?
在进程队列的ready状态下,由离自己最近的父进程执行调度,即入口在最近的父进程处。

5总结
这次实验加深了我对进程概念的理解,明确进程和程序的区别,进一步认识并发执行的实质,通过分析进程争用资源的现象,学习了解决进程互斥的方法。
实验过程中也到了代码方法不理解的情况,导致不明白实验结果的实际意义,但在仔细阅读代码和查找相关方法后明白了此次实验的目的内容。

实验二进程管理

实验二 进程管理
1实验目的
1.加深对进程概念的理解,明确进程和程序的区别。
2.进一步认识并发执行的实质。
3.分析进程争用资源的现象,学习解决进程互斥的方法。
2.实验内容
(1)进程的创建

编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。

(2)进程的控制

1)修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。

2)如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
3实验详细操作步骤及程序清单:
3.1进程创建
编写一段程序,利用系统调用fork()创建两个进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。
在这里插入图片描述 在这里插入图片描述

分析:从进程并发执行来看,输出bac,acb或bca都有可能。
原因:fork()创建进程所需要的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了”b”,而进程2和主程序的输出次序是有随机性的,所以会出现多种可能结果。
3.2进程控制
修改已经编好的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。
在这里插入图片描述
在这里插入图片描述

分析:由于函数printf()输出的字符串之间不会被中断,因此,字符串内部的字符顺序输出时不变。但是,由于进程并发执行时的调度顺序和父子进程的抢占处理机问题,处处字符串的顺序和先后随着执行的不同而发生变化。
如果在程序中使用系统调用lockf()来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
在这里插入图片描述输出 child 块, son 块, daughter块的顺序可能不同,但是每个块的输出过程不会被打断。
分析:因为上述程序执行时,lockf(1,1,0)锁定标准输出设备,lockf(1,0,0)解锁标准输出设备,在lockf(1,1,0)与lockf(1,0,0)中间的for循环输出不会被中断,加锁与不加锁效果不相同。
4、相关问题及思考
(1)系统是怎样创建进程的?
首先,fork() 函数拷贝当前进程创建子进程。产生的子进程与父进程的区别仅在与 PID 与 PPID 以及某些资源和统计量,例如挂起的信号等。准备好进程运行的地址空间后,exec() 函数族负责读取可执行程序,并将其加载到相应的位置开始执行。
(2)可执行文件加载时进行了哪些处理?
可执行文件加载时首先是创建一个新进程的fork系统调用,然后用于实现进程自我终止的exit系统调用;改变进程原有代码的exec系统调用;用于将调用进程挂起并等待子进程终止的wait系统调用;获得进程标识符的getpid系统调用等处理过程。

(3)当首次调用新创建进程时,其入口在哪里?
在进程队列的ready状态下,由离自己最近的父进程执行调度,即入口在最近的父进程处。

5总结
这次实验加深了我对进程概念的理解,明确进程和程序的区别,进一步认识并发执行的实质,通过分析进程争用资源的现象,学习了解决进程互斥的方法。
实验过程中也到了代码方法不理解的情况,导致不明白实验结果的实际意义,但在仔细阅读代码和查找相关方法后明白了此次实验的目的内容。
关注公众号:Time木
回复:操作系统实验
可获得相关代码,数据,文档
回复:操作系统试卷
可获取操作系统试卷整理
更多大学课业实验实训可关注公众号回复相关关键词
学艺不精,若有错误还望指点


http://chatgpt.dhexx.cn/article/XVWJdlGw.shtml

相关文章

Linux系统介绍及熟悉Linux基础操作

一、什么是Liunx Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯本纳第克特托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发&am…

操作系统——实验一(Linux基本操作)

操作系统——实验一(Linux基本操作) (1)练习Linux的基本安装和配置; (2)以root用户身份登陆,并使用“ls”,“cat”“cd”等常用命令来实现基本的文件操作并观察Linux文件系统的特点; &#xff…

Linux系统基础操作命令

目录 一、基本使用 1.编辑Linux命令行的辅助操作 2.常用的基础命令 1.切换用户(su) 2.pwd 查看当前工作目录 3.cd 切换工作目录 4.cp 复制 5.mkdir 创建目录 6.touch 创建文件 7.创建链接文件ln(软链接、硬链接) 8.alia…

Linux的基本操作

Linux的基本操作 文章目录 Linux的基本操作cd命令ls命令pwd命令touch命令cat命令mkdir命令rm命令cp命令mv命令man命令less命令head命令tail 命令date命令grep命令ps命令netstat命令 cd命令 语法:cd 目录名 功能:改变当前所在目录,将当前工作…

Linux基本操作之vi编辑器

Linux基本操作之vi编辑器 一、Vi编辑器的启动和退出启动退出 二、Vi编辑器的工作模式编辑模式插入模式命令模式 三、Vi编辑器的基本命令文件相关命令字符串搜索、替换和删除文本的复制、删除和移动 四、C/C编辑器gcc的使用1.编写代码2.使用命令编译和运行 一、Vi编辑器的启动和…

LINUX的基本操作学习总结

前言 从2020年11月定下了以后所打算从事的方向开始,就开始学习LINUX基础和LINUX环境编程,故谨以此文来记录LINUX的基础操作 声明:因个人能力有限,本文仅是个人的学习记录笔记,有错误之处还望指出 目录 1.LINUX的基础…

Linux基本操作之重定向文件

文章目录 RedirectionAppending to a fileRedirecting the Input通配符“*”和“?”文件名约定操作 Redirection 上一节 cat 命令的功能是将文件或标准输入组合输出到标准输出。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入…

实验一 Linux基本操作

实验一 Linux基本操作 1. 实验要求 (1)掌握启动和退出Linux 操作系统方法; (2)了解与熟悉Linux 操作系统常用的Shell命令使用; (3)掌握Linux 操作系统下C程序的编辑、编译…

Linux介绍及基本操作

嵌入式之路,贵在日常点滴 ---阿杰在线送代码 目录 一、Linux简介 二、Linux介绍 三、Linux特点 四、常用命令 命令口终端 窗口分屏率 ​编辑配置串口大小 字体大小 ​编辑清屏 VI的使用 建立文件 模式 ​编辑编译文件 ​编辑运行编译文件 常用指令 …

Linux基本操作命令

Linux基本操作命令 我们介绍一些linux常用命令: 一、查看及文件目录的命令:pwd、cd、ls、du 二、创建目录和文件:mkdir、touch、ln 三、复制、删除、移动目录和文件:cp、rm、mv 四、查找目录和文件:which、find 下面…

Linux常用操作命令大全

目录 一、目录及文件操作 1.1创建目录 1.2删除目录或文件 1.3重命名目录或文件名称 1.5目录及文件列表查看 1.6复制目录或文件 1.7剪切目录或文件 1.8搜索目录或文件 1.9创建文件 1.10查看及修改文件内容信息 1.11查看文件内容信息(仅支持查看&#xff0…

Linux基础操作

目录 1.os概念,定位 2.查看Linux主机ip和使用XSHell登陆主机、XSHell下的复制黏贴 3.ls指令 4.pwd指令 5.cd指令 6.touch指令 7.mkdir指令 8. rmdir指令&&rm指令 9.man指令 10.cp指令 11.mv指令 12.cat 13.more指令 14.less指令 15.head指令…

Linux的基础操作

Linux基础操作 linux在我们工作中是经常用的,那么具体怎么操作呢,下面我来给大家陈述一些linux的基础操作,仅供大家参考和学习 1、目录切换命令 linux是通过cd命令进行切换目录,但在学习cd命令之前,我们要分清楚linu…

软件安全测试-软件安全测试概述

目录 1. 写在前面 2. 什么是安全测试? 3. 安全测试和渗透测试的区别? 4. 何为安全漏洞? 4.1. 常见的漏洞类型 4.2. 漏洞等级 5. 安全漏洞的危害? 6. 如何发现或预防安全漏洞? 6.1 安全测试方法 6.2 安全测试…

动态应用安全测试(DAST)

什么是DAST安全测试? 动态应用程序安全测试(DAST)从web应用程序外部测试安全性。一个很好的类比是通过攻击银行保险库来测试其安全性。DAST要求安全测试人员不了解应用程序的内部。这被称为“黑盒”测试方法——因为测试人员看不到隐喻性的“盒子”内部。它的目的是…

安全基础--22--安全测试

一、安全漏洞评估 1、评估方式 自动化扫描:系统层漏洞大部分情况下使用自动化扫描 手工评估:耗时、不全面、技术要求高 2、评估流程 二、安全配置评估 1、安全配置评估分类 评估说明基础安全配置评估在了解现状和基本需求的情况下,定义业…

常规测试、安全测试、渗透测试的区别

安全测试是在IT软件产品的生命周期中,检查产品,检验产品符合安全需求定义和产品质量标准的过程,功能测试是检验产品各功能,根据功能测试用例,逐项测试,检查产品是否符合用户要求的功能。 安全测试是在IT软…

安全测试(初测)报告

安全测试(初测)报告 系统名称 版本号 V1.0 送测单位 送测时间 20XX年XX月XX日 复测时间 XXXX有限责任公司 20XX年XX月XX日 有效性声明 1、本测试报告封面及结论未盖章无效; 2、本测试报告需经审批和授权签字人签字,…

做好安全测试的方法

目录 摘要: 一.安全性测试 二.常见的软件安全性缺陷和漏洞 三.做好安全性测试的建议 总结 摘要: 今天主要跟大家讲一下什么是安全测试和怎么做好安全测试的几种方法。还有安全测试的优缺点及过程,最后会给大家几条建议,希望对…

AppScan 安全测试详解+实操

定义:AppScan是IBM的一款web安全扫描工具,主要适用于Windows系统。该软件内置强大的扫描引擎,可以测试和评估Web服务和应用程序的风险检查,根据网站入口自动对网页链接进行安全扫描,扫描之后会提供扫描报告和修复建议等…