操作系统实验2
操作系统实验二实验报告
操作系统实验二实验报告一、实验目的本次操作系统实验二的主要目的是深入理解和掌握进程管理的相关概念和技术,包括进程的创建、执行、同步和通信。
通过实际编程和实验操作,提高对操作系统原理的认识,培养解决实际问题的能力。
二、实验环境本次实验使用的操作系统为 Windows 10,编程环境为 Visual Studio 2019。
三、实验内容及步骤(一)进程创建实验1、首先,创建一个新的 C++项目。
2、在项目中,使用 Windows API 函数`CreateProcess`来创建一个新的进程。
3、为新进程指定可执行文件的路径、命令行参数、进程属性等。
4、编写代码来等待新进程的结束,并获取其退出代码。
(二)进程同步实验1、设计一个生产者消费者问题的模型。
2、使用信号量来实现生产者和消费者进程之间的同步。
3、生产者进程不断生成数据并放入共享缓冲区,当缓冲区已满时等待。
4、消费者进程从共享缓冲区中取出数据进行处理,当缓冲区为空时等待。
(三)进程通信实验1、选择使用管道来实现进程之间的通信。
2、创建一个匿名管道,父进程和子进程分别读写管道的两端。
3、父进程向管道写入数据,子进程从管道读取数据并进行处理。
四、实验结果及分析(一)进程创建实验结果成功创建了新的进程,并能够获取到其退出代码。
通过观察进程的创建和执行过程,加深了对进程概念的理解。
(二)进程同步实验结果通过使用信号量,生产者和消费者进程能够正确地进行同步,避免了缓冲区的溢出和数据的丢失。
分析结果表明,信号量机制有效地解决了进程之间的资源竞争和协调问题。
(三)进程通信实验结果通过管道实现了父进程和子进程之间的数据通信。
数据能够准确地在进程之间传递,验证了管道通信的有效性。
五、遇到的问题及解决方法(一)在进程创建实验中,遇到了参数设置不正确导致进程创建失败的问题。
通过仔细查阅文档和调试,最终正确设置了参数,成功创建了进程。
(二)在进程同步实验中,出现了信号量使用不当导致死锁的情况。
操作系统实验二:银行家算法
操作系统实验⼆:银⾏家算法实验⼆银⾏家算法⼀、实验⽬的1、了解什么是操作系统安全状态和不安全状态;2、了解如何避免系统死锁;3、理解银⾏家算法是⼀种最有代表性的避免死锁的算法,掌握其实现原理及实现过程。
⼆、实验内容根据银⾏家算法的基本思想,编写和调试⼀个实现动态资源分配的模拟程序,并能够有效避免死锁的发⽣。
三、实验原理进程申请资源时,系统通过⼀定的算法判断本次申请是否不可能产⽣死锁(处于安全状态)。
若可能产⽣死锁(处于不安全状态),则暂不进⾏本次资源分配,以避免死锁。
算法有著名的银⾏家算法。
1、什么是系统的安全状态和不安全状态?所谓安全状态,是指如果系统中存在某种进程序列<P1,P2,…,Pn>,系统按该序列为每个进程分配其所需要的资源,直⾄最⼤需求,则最终能使每个进程都可顺利完成,称该进程序列<P1,P2,…,Pn,>为安全序列。
如果不存在这样的安全序列,则称系统处于不安全状态。
2、银⾏家算法把操作系统看作是银⾏家,操作系统管理的资源相当于银⾏家管理的资⾦,进程向操作系统请求分配资源相当于⽤户向银⾏家贷款。
为保证资⾦的安全,银⾏家规定:(1) 当⼀个顾客对资⾦的最⼤需求量不超过银⾏家现有的资⾦时就可接纳该顾客;(2) 顾客可以分期贷款,但贷款的总数不能超过最⼤需求量;(3) 当银⾏家现有的资⾦不能满⾜顾客尚需的贷款数额时,对顾客的贷款可推迟⽀付,但总能使顾客在有限的时间⾥得到贷款;(4) 当顾客得到所需的全部资⾦后,⼀定能在有限的时间⾥归还所有的资⾦。
操作系统按照银⾏家制定的规则设计的银⾏家算法为:(1)进程⾸次申请资源的分配:如果系统现存资源可以满⾜该进程的最⼤需求量,则按当前的申请量分配资源,否则推迟分配。
(2)进程在执⾏中继续申请资源的分配:若该进程已占⽤的资源与本次申请的资源之和不超过对资源的最⼤需求量,且现存资源能满⾜该进程尚需的最⼤资源量,则按当前申请量分配资源,否则推迟分配。
(3)⾄少⼀个进程能完成:在任何时刻保证⾄少有⼀个进程能得到所需的全部资源⽽执⾏到结束。
操作系统实验二并发与调度
实验二并发与调度一、实验目的在本实验中,通过对事件和互斥体对象的了解,来加深对Windows 2000线程同步的理解。
通过分析实验程序,了解管理事件对象的API。
了解在进程中如何使用事件对象,在进程中如何使用互斥体对象,线程如何通过文件映射对象发送数据。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows 2000 Professional,Visual C++ 6.0专业版或企业版。
三、实验内容和步骤第一部分:互斥体对象本程序中显示的类CCountUpDown使用了一个互斥体来保证对两个线程间单一数值的访问。
每个线程都企图获得控制权来改变该数值,然后将该数值写入输出流中。
创建者实际上创建的是互斥体对象,计数方法执行等待并释放,为的是共同使用互斥体所需的资源(因而也就是共享资源) 。
1、利用互斥体保护共享资源程序参见实验指导书分析程序的运行结果,可以看到线程(加和减线程) 的交替执行(因为Sleep() API允许Windows切换线程) 。
在每次运行之后,数值应该返回初始值(0) ,因为在每次运行之后写入线程在等待队列中变成最后一个,内核保证它在其他线程工作时不会再运行。
1)请描述运行结果(如果运行不成功,则可能的原因是什么?) :2) 根据运行输出结果,对照分析程序,可以看出程序运行的流程吗?请简单描述:_____逆向运行__________第二部分线程通过文件对象发送数据Windows 2000提供的线程间通讯类内核对象允许同一进程或跨进程的线程之间互相发送信息,包括文件、文件映射、邮件位和命名管道等,其中最常用的是文件和文件映射。
这类对象允许一个线程很容易地向同一进程或其他进程中的另一线程发送信息。
1、演示线程通过文件对象发送数据程序参见实验指导书运行结果(如果运行不成功,则可能的原因是什么?) :阅读和分析程序,请回答问题:1) 程序中启动了多少个单独的读写线程?__________100__________________________________________________________2) 使用了哪个系统API函数来创建线程例程?_________ CreateThread()________________________________3) 文件的读和写操作分别使用了哪个API函数?_______ ReadFile()______ WriteFile()_____________ 每次运行进程时,都可看到程序中的每个线程从前面的线程中读取数据并将数据增加,文件中的数值连续增加。
实验2 Windows操作系统基础
2.查看硬盘,在图2-2-1中记录D盘的相关信息。
3.在C盘根目录下创建如图2-2-2所示的 三级文件夹,并完成如下操作:
(1)在桌面上,用“记事本”程序创建 文本文件t1ห้องสมุดไป่ตู้txt;然后在桌面的快捷菜单 中选择“新建”→“文本文档”命令,创 建文本文件t2.txt、t3.txt、t4.txt。四 个文件的内容任意输入。 (2)将桌面上的t1.txt复制到C: \JSJ11\Sub1\mmm中。 (3)将桌面上的t2.txt复制到C: \JSJ11\Sub2\nnn中。
(3)分别按“名称”、“类型”、“大小”、 “递增”和“递减”对Windows主目录进行排序, 观察5种排序方式的区别。 (4)选择“设置”或“取消”下列文件和文件 夹的“查看”选项,并观察两者之间的区别。 ①鼠标指向文件夹和桌面项时显示提示信息。 ②隐藏受保护的操作系统文件。 ③显示隐藏的文件、文件夹和驱动器。 ④先隐藏后显示已知文件类型的扩展名。
2.掌握磁盘管理的基本方法。
3..掌握Windows7中库的操作。
【实验内容】
1.“Windows 资源管理器”的查看与使用
(1)在桌面双击“计算机”,打开“计算 机”窗口,请仔细观察窗口。 (2)分别选择“超大图标”、“大图标”、 “中图标”、“小图标”、“列表”、“详 细信息”、“平铺”和“内容”等8种方式浏 览Windows主目录,观察各种显示方式之间的 区别。
8.启动“磁盘碎片整理程序”,分析C盘,
查看报告。
(1)碎片:( )%。
(2)如果时间允许,对 C盘进行碎片整理。
9.库的设置 10.库的创建
实验2 Windows7操作系统基础
实验2.1 Windows7的基本操作
操作系统原理实验2-Linux操作系统命令接口
《操作系统原理》实验报告
实验序号:2 实验项目名称:Linux操作系统命令接口
挑战3:历史命令
挑战4:数据提取
四、实验结果与数据处理
1.查看用户
2.检查权限
3.创建文件
4.创建目录
5.复制文件
6.删除文件
7.预声明变量
8.变量赋值
9.查看变量
10.查找文件
11.打包文件
12.解压文件
13.检查磁盘
14.查看ls命令的帮助信息
15.进入文件添加任务
16.顺序执行多条命令
17.打印全部文件
18.使用管道一行一行查看
19.打印某个字段的某一行
20.默认字典排序
21.删除"hello shiyanlou" 中所有的'o','l','h'
22.将"hello" 中的ll,去重为一个l
23.将输入文本,全部转换为大写或小写输出
24.数据流重定向
25.进程 = 可执行程序 + 该进程对应的内核数据结构
26.linux操作系统基本概念:操作系统按用户数量可以分为单用户系统和多用户系统。
比如Windows就是典型的单用户系统,Linux就是典型的多用户系统。
多用户系统就是一台能并发和独立地执行分别属于两个和多个用户的若干应用程序的计算机。
27.显示环境变量
28.列出指定用户的所有进程
29显示所有进程
30.将在后台运行的作业放到前台运行
31.访问日志
32.历史命令
33.寻找文件,提取数据见上
五、分析与讨论
上机的命令有很多,要重复操作,才能熟练掌握
六、教师评语成绩。
操作系统实验二(进程管理)
操作系统进程管理实验实验题目:(1)进程的创建编写一段程序,使用系统调用fork( )创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和字符“c”。
试观察记录屏幕上的显示结果,并分析原因。
(2)进程的控制修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。
(3)编制一段程序,使其实现进程的软中断通信。
要求:使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按Del键);当捕捉到中断信号后,父进程调用系统调用kill( )向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止: Child process 1 is killed by parent! Child process 2 is killed by parent! 父进程等待两个子进程终止后,输出如下的信息后终止: Parent process is killed! 在上面的程序中增加语句signal(SIGINT, SIG_IGN)和signal(SIGQUIT, SIG_IGN),观察执行结果,并分析原因。
(4)进程的管道通信编制一段程序,实现进程的管道通信。
使用系统调用pipe( )建立一条管道线;两个进程P1和P2分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
要求父进程先接收子进程P1发来的消息,然后再接收子进程P2发来的消息。
实验源程序及报告:(1)、进程的创建#include <stdio.h>int main(int argc, char *argv[]){int pid1,pid2; /*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "b\n" );}/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!"); exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "c\n" );}/*parent process*/else{wait(NULL);printf( "a\n" );exit(0);}return 0;}(2)、进程的控制#include <stdio.h>int main(int argc, char *argv[]){ int pid1,pid2;/*fork first child process*/if ( ( pid1=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid1=fork() ) == 0 ){printf( "This is my Unix OS program!\n" ); }/*fork second child process*/if ( ( pid2=fork() ) < 0 ){printf( "ProcessCreate Failed!");exit(-1);}if ( ( pid2=fork() ) == 0 ){printf( "This is the second Child process!\n" ); }/*parent process*/else{wait(NULL);printf( "This is the Parent process\n" );exit(0);}return 0;}(3)编制一段程序,使其实现进程的软中断通信。
操作系统实验报告(2)
计算机实验报告(2)操作系统部分一、基本要求和内容1.了解操作系统的基本功能.2.认识WINDOWS桌面的各部分组成,掌握基本的桌面操作.3.掌握各种基本操作对象的操作方法.4.学会使用WINDOWS帮助.5.了解基本的DOS命令和基本的命令行操作方法.6.熟练掌握文件操作方法.7.掌握对图标的操作方法(移动/拖曳/单击/双击/右击等等).8.熟悉资源管理器窗口和”我的电脑”(“计算机”)窗口.9.掌握启动控制面板的方法,了解控制面板的主要功能,掌握使用控制面板对软硬件进行设置的方法。
10.掌握“运行”对话框的使用方法。
11.了解“任务管理器”的简单使用方法。
12.熟悉“画图”“记事本”“计算器”“写字板”等常用应用程序。
13.开始POWERPOINT的基本使用.二、通过上机实验解决下列问题1. CTRL+ALT+DEL 组合键的功能是:打开【任务管理器】窗口2.全角和半角的区别是:半角是一个字符,全角是两个字符3. CTRL+A组合键的功能是:全部选中CTRL+C组合键的功能是:复制CTRL+V组合键的功能是:粘贴CTRL+X组合键的功能是:剪切CTRL+Z组合键的功能是: 撤销ALT+PRINTSCREEN组合键的功能是:复制当前窗口、对话框或其他对象到剪贴板中任务栏隐藏时通过什么组合键可以看到任务栏:Ctrl+Alt+Del进行窗口切换的组合键是:ALT+Tab4.“画图”应用程序默认保存文件类型是:*.png“记事本”应用程序默认保存文件类型是: *.txt.DOC是什么文件类型Word文档.EXE是什么文件类型可执行文件(程序文件)5.鼠标的基本操作方法包括:指向、单击、双击和拖动鼠标指针附近有漏沙钟表示当前的状态是: 沙漏是等待,因为程序先是从硬盘上读取,然后再到内存,芯片在其期间进行运算,再没真正的打开程序时,系统认为它没正真的启动6.资源管理器左下角窗格(即”文件夹”窗口)显示的是:系统中的所有资源以分层树型的结构显示出来7.一般情况下,对文件进行重命名时,不应该修改文件的扩展名,因为: 如果修改了后缀名则会导致文件属性更改,文件无法打开8.文件的属性主要包括哪些:“只读”、“存档”、“隐藏”9.选择多个连续的文件可以采用哪些方法:使用鼠标先选定第一个文件或文件夹,然后按住Shift键,用鼠标单击最后一个文件或文件夹,这样在第一个对象和最后一个对象之间的所有文件或文件夹将全部被选中,包括第一个和最后一个文件或文件夹。
操作系统实验答案-实验2Linux的基本操作及vi的使用(答案)
实验二Linux的基本命令操作及vi的使用实验目的:1、熟悉Linux操作系统环境2、熟悉Linux操作系统的文件结构3、熟悉Linux操作系统的基本命令4、熟悉Linux操作系统的文件组织方式5、学习使用vi编辑器建立、编辑、显示以及加工处理文本文件。
实验内容及要求:1、登陆实验室的Linux服务器。
启动电脑,进入Windows操作系统,在“开始”-〉“运行”中输入“Telnet 10.200.41。
178”,即可登陆实验室的Linux服务器.在“Login:”提示后输入“stu”+学号(如02号同学输入stu02),按下回车键。
在“Password:”提示后输入“123”(注意输入密码时屏幕上不会有“*”等符号出现,这和Windows 不同),按下回车键,若出现“[os@root os]$”或“-bash—2。
05b$”,表示已成功登陆系统,可以开始输入指令操作。
思考:(用pwd指令)查看自己登陆后位于Linux的哪个目录,写出该目录的路径,与自己周围的同学比较,看是否相同.(可查阅Linux资料了解“/home"目录的功能介绍)2、在Linux中进行以下基本操作:1)在当前目录下新建一个名为(自己姓名首字母缩写+学号后3位数)的子目录。
写出你所用的指令.(例如:mkdir zq000 )2)进入刚创建的子目录环境下.(提示:指令cd)3)在刚创建的子目录下新建一个名为abc.txt的文件。
写出你所用的指令。
(提示:新建文件的指令是touch)4)将/目录下(即根目录下)的welcome.txt文件复制到自己的子目录下,写出你所用的指令.cp –i /root/stu62/abc.txt /home/welcome.txt5)写出welcome.txt文件的内容。
(提示:用cat指令查看)Hello, Boys and girls ,welcome to the wonderful Linux world!3、在Linux中进行以下基本操作:1)进入自己的主目录。
电大操作系统实验2:进程管理实验
电大操作系统实验2:进程管理实验
实验目的:
1.加深对进程概念的理解,特别是进程的动态性和并发性。
2.了解进程的创建和终止。
3.学会查看进程的状态信息。
4.学会使用进程管理命令。
实验要求:
1.理解有关进程的概念,能够使用ps命令列出系统中进
程的有关信息并进行分析。
2.理解进程的创建和族系关系。
3.能够使用&,jobs,bg,at等命令控制进程的运行。
实验内容:
1.使用ps命令查看系统中运行进程的信息。
实验环境:
实验步骤和结果:
1.输入ps命令,可以报告系统当前的进程状态。
2.输入ps-e命令,可以显示系统中运行的所有进程,包括系统进程和用户进程。
3.输入ps-f命令,可以得到进程的详细信息。
进程控制:
1.后台进程
1) $grep "注册用户名" /etc/passwd。
/tmp/abc &
2.作业控制
1) 进程休眠60秒Sleep 60 &
2) 进程休眠30秒Sleep 30 &
3) 查看进程状态Jobs
4) 将睡眠30秒的sleep命令放在前台执行fg%2
3.发送中断信号
1) 后台运行sleep命令$sleep 120 &
2) 查看sleep进程的状态$ps-p pid
3) 终止sleep命令$kill -9 pid。
操作系统实验二Windows任务管理器的进程管理
实验二 Windows任务管理器的进程管理一实验目的1)在Windows 任务管理器中对程序进程进行响应的管理操作;2)熟悉操作系统进程管理的概念;3)学习观察操作系统运行的动态性能。
二实验环境需要准备一台运行Windows XP操作系统的计算机。
三背景知识Windows XP的任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,也显示了最常用的度量进程性能的单位。
使用任务管理器,可以打开监视计算机性能的关键指示器,快速查看正在运行的程序的状态,或者终止已停止响应的程序。
也可以使用多个参数评估正在运行的进程的活动,以及查看CPU 和内存使用情况的图形和数据。
四实验内容与步骤启动并进入Windows环境,单击Ctrl + Alt + Del键,或者右键单击任务栏,在快捷菜单中单击“任务管理器”命令,打开“任务管理器”窗口。
当前机器中由你打开,正在运行的应用程序有:1) 实验二Windows 任务管理器的进程管理2) 管理工具3) 可移动磁盘(I:)Windows“任务管理器”的窗口由 5 个选项卡组成,分别是:1) 应用程序2) 进程3) 性能4)联网5)用户当前“进程”选项卡显示的栏目分别是(可移动窗口下方的游标/箭头,或使窗口最大化进行观察) :1) 映像名称2) 用户名3) CPU4)内存使用1. 使用任务管理器终止进程步骤1:单击“进程”选项卡,一共显示了33 个进程。
请试着区分一下,其中:系统(SYSTEM) 进程有19 个,填入表2-1中。
表2-1 实验记录服务(SERVICE) 进程有_ 4___个,填入表2-2中。
表2-2 实验记录用户进程有__9____个,填入表2-3中。
表2-3 实验记录步骤2:单击要终止的进程,然后单击“结束进程”按钮。
终止进程,将结束它直接或间接创建的所有子进程。
例如,如果终止了电子邮件程序(如Outlook 98) 的进程树,那么同时也终止了相关的进程,如MAPI后台处理程序mapisp32.exe。
《操作系统》实验二
《操作系统》实验二一、实验目的本实验旨在加深对操作系统基本概念和原理的理解,通过实际操作,提高对操作系统设计和实现的认知。
通过实验二,我们将重点掌握进程管理、线程调度、内存管理和文件系统的基本原理和实现方法。
二、实验内容1、进程管理a.实现进程创建、撤销、阻塞、唤醒等基本操作。
b.设计一个简单的进程调度算法,如轮转法或优先级调度法。
c.实现进程间的通信机制,如共享内存或消息队列。
2、线程调度a.实现线程的创建、撤销和调度。
b.实现一个简单的线程调度算法,如协同多任务(cooperative multitasking)。
3、内存管理a.设计一个简单的分页内存管理系统。
b.实现内存的分配和回收。
c.实现一个简单的内存保护机制。
4、文件系统a.设计一个简单的文件系统,包括文件的创建、读取、写入和删除。
b.实现文件的存储和检索。
c.实现文件的备份和恢复。
三、实验步骤1、进程管理a.首先,设计一个进程类,包含进程的基本属性(如进程ID、状态、优先级等)和操作方法(如创建、撤销、阻塞、唤醒等)。
b.然后,实现一个进程调度器,根据不同的调度算法对进程进行调度。
可以使用模拟的方法,不需要真实的硬件环境。
c.最后,实现进程间的通信机制,可以通过模拟共享内存或消息队列来实现。
2、线程调度a.首先,设计一个线程类,包含线程的基本属性(如线程ID、状态等)和操作方法(如创建、撤销等)。
b.然后,实现一个线程调度器,根据不同的调度算法对线程进行调度。
同样可以使用模拟的方法。
3、内存管理a.首先,设计一个内存页框类,包含页框的基本属性(如页框号、状态等)和操作方法(如分配、回收等)。
b.然后,实现一个内存管理器,根据不同的内存保护机制对内存进行保护。
可以使用模拟的方法。
4、文件系统a.首先,设计一个文件类,包含文件的基本属性(如文件名、大小等)和操作方法(如创建、读取、写入、删除等)。
b.然后,实现一个文件系统管理器,包括文件的存储和检索功能。
操作系统实验二处理机调度-实时调度算法EDF和RMS实验报告
实验报告
姓
名:
学号:日期:2011-1-10 实验
题
目:
实验二:处理机调度---实时调度算法EDF和RMS
实验目的:
深入理解处理机调度算法,了解硬实时概念,掌握周期性实时任务调度算法EDF(Earliest Deadline First)和RMS(Rate-Monotonic Scheduling)的可调度条件,并能在可调度的情况下给出具体调度结果。
实验内容:
在Linux环境中采用用户级线程模拟实现EDF和RMS两种实时调度算法。
给定一组实时任务,按照EDF算法和RMS算法分别判断是否可调度。
在可调度的情况下,创建一组用户级线程,分别代表各个实时任务,并按算法所确定的调度次序安排各个线程运行,运行时在终端上画出其Gantt图。
为避免图形绘制冲淡算法,Gantt图可用字符表示。
实验步骤:1.启动虚拟机,在Linux系统终端中找到代码
2.仔细阅读教材相关内容和实验指导书中实验准备;
3.将代码在Linux系统上编译并运行。
4.根据实验结果分析。
5.结束实验,退出保存。
实验结果:实验结果如实验指导书上所示。
EDF算法结果:
RMS算法结果:。
操作系统实验
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
《操作系统》实验报告(2)
c.将subdir目录的读权限去掉,看看是否能用ls命令看到其中内容?
权限不够
(三)Shell程序设计
1.上机编辑、执行实验内容中的例1~例6过程,写出每个脚本(例1~例5)的功能和执行结果;
然后把t01.txt复制一个新文件t03.txt,catt01.txt>t02.txt;
用cat命令将f01.txt的内容追加到t01.txt的末尾,catf01.txt>> t01.txt;
再用diff命令比较t01.txt,t02.txt和t03.txt,比较t01.txt,t02.txt:diff t01.txt t02.txt,结果是否相同:__相同___;比较t01.txt,t03.txt:diff t01.txt t03.txt,结果是否相同:不相同;比较t02.txt,t03.txt:diff t02.txt t03.txt,结果是否相同:不相同。出现上述结果的原因是:______________________________________________________________________________。
2.修改例5,使脚本中不出现break循环控制语句;
3.编写一个Shell过程完成如下功能:
a.合并两个$1、$2文件为$3,并显示内容。
b.如果缺少$3,那么先报告缺少$3,将合并后的内容输出到totaltext.txt,并显示内容。
c.如果缺少$2、$3那么先报告缺少$2、$3,只显示$1的内容。
b.用ln命令给t03.txt建立一个符号链接t04.txt,ln–st03.txt t04.txt;用cat命令看看t04.txt,___cat t04.txt_____;然后删去t03.txt,___rm t03.txt____;再用cat命令看看t04.txt,___cat t04.txt___;结果是:___t04.txt为空____
Windows操作系统实验二实验报告
Windows操作系统C/C++ 程序实验姓名:_____王晨璐_____学号:____1131000046____班级:____1班_____院系:___信息工程学院_____2015__年_10_月_26_日实验二Windows 2000/xp进程控制一、背景知识二、实验目的三、工具/准备工作四、实验内容与步骤请回答:Windows所创建的每个进程都是以调用CreateProcess()API函数开始和以调用TerminateProcess()或ExitProcess() API函数终止。
1. 创建进程步骤5:编译完成后,单击“Build”菜单中的“Build 2-1.exe”命令,建立2-1.exe可执行文件。
操作能否正常进行?如果不行,则可能的原因是什么?可以正常运行。
清单2-1展示的是一个简单的使用CreateProcess() API函数的例子。
首先形成简单的命令行,提供当前的EXE文件的指定文件名和代表生成克隆进程的号码。
大多数参数都可取缺省值,但是创建标志参数使用了:CREATE_NEW_CONSOLE标志,指示新进程分配它自己的控制台,这使得运行示例程序时,在任务栏上产生许多活动标记。
然后该克隆进程的创建方法关闭传递过来的句柄并返回main() 函数。
在关闭程序之前,每一进程的执行主线程暂停一下,以便让用户看到其中的至少一个窗口。
CreateProcess() 函数有10个核心参数?本实验程序中设置的各个参数的值是:a. LPCSTR lpApplivetionName szFllenameb. LPCSTR lpCommandLine szCmdLinec. LPSECURITY_ATTRIBUTES lpProcessAttributes NULLd. LPSECURITY_ATTRIBUTES lpThreadAttributes NULLe.BOOL bInherithandle Falsef. DWORD dwCreationFlage CREATE_NEW_CONSOLEg. LPVOID ipEnvironment NULLh. LPCTSTR lpCurrentDirectory NULLI. STARTUPINFO lp startupinfo &siJ. LPPROCESS_INFORMATION lpProcessInformation &pi 程序运行时屏幕显示的信息是:提示:部分程序在Visual C++环境完成编译、链接之后,还可以在Windows 2000/xp的“命令提示符”状态下尝试执行该程序,看看与在可视化界面下运行的结果有没有不同?为什么?界面是一样的2. 正在运行的进程步骤10:编译完成后,单击“Build”菜单中的“Build 2-2.exe”命令,建立2-2.exe可执行文件。
最新操作系统实验报告实验二
最新操作系统实验报告实验二实验目的:1. 熟悉最新操作系统的架构和特性。
2. 掌握操作系统的基本操作和配置方法。
3. 分析操作系统的性能和稳定性。
实验环境:- 硬件环境:Intel Core i7处理器,16GB RAM,256GB SSD。
- 软件环境:最新操作系统版本X.Y.Z,图形界面和命令行界面。
实验步骤:1. 安装最新操作系统X.Y.Z,记录安装过程中的关键步骤和遇到的问题。
2. 配置系统环境,包括网络设置、显示设置、用户账户管理等。
3. 测试文件系统的性能,包括文件的创建、复制、删除和搜索操作。
4. 测试多任务处理能力,通过同时运行多个应用程序来观察系统响应时间和资源分配情况。
5. 检验系统的安全性,包括用户权限管理、防火墙设置和病毒防护功能。
6. 评估系统的稳定性,进行长时间运行测试,记录是否有崩溃或异常行为发生。
7. 对系统进行基准测试,使用专业工具如SPEC CPU测试套件来评估系统性能。
实验结果:1. 安装过程中,系统顺利识别硬件并完成驱动安装,未遇到兼容性问题。
2. 系统配置简便,图形用户界面直观易用,网络配置通过向导快速完成。
3. 文件系统测试显示,读写速度达到预期标准,搜索操作响应迅速。
4. 多任务处理测试中,系统在开启多个资源密集型应用时仍保持流畅,未出现明显延迟。
5. 安全性测试表明,用户权限分级明确,防火墙和病毒防护均能有效工作。
6. 稳定性测试中,系统连续运行72小时无故障,表现出良好的稳定性。
7. 基准测试结果显示,系统性能较前一版本有显著提升,特别是在多线程处理方面。
实验结论:最新操作系统X.Y.Z在本次实验中表现出了良好的性能和稳定性。
系统的用户界面友好,配置和管理方便。
文件系统和多任务处理能力均达到预期目标,安全性和稳定性也符合最新的操作系统标准。
推荐对性能和稳定性有较高要求的用户进行升级。
操作系统实验二报告-时间片轮转进程调度算法1
操作系统实验报告实验二时间片轮转进程调度算法学号:班级:姓名:【实验题目】: 时间片轮转进程调度算法【实验目的】通过这次实验, 加深对进程概念的理解, 进一步掌握进程状态的转变、进程调度的策略与对系统性能的评价方法。
【实验内容】问题描述:设计程序模拟进程的时间片轮转RR 调度过程。
假设有n 个进程分别在T1, … ,Tn 时刻到达系统, 它们需要的服务时间分别为S1, … ,Sn 。
分别利用不同的时间片大小q, 采用时间片轮转RR 进程调度算法进行调度, 计算每个进程的完成时间, 周转时间和带权周转时间, 并且统计n 个进程的平均周转时间和平均带权周转时间。
程序要求如下:1)进程个数n ;每个进程的到达时间T 1, … ,T n 和服务时间S 1, … ,S n ;输入时间片大小q 。
2)要求时间片轮转法RR 调度进程运行, 计算每个进程的周转时间, 带权周转时间, 并且计算所有进程的平均周转时间, 带权平均周转时间;3)输出: 要求模拟整个调度过程, 输出每个时刻的进程运行状态, 如“时刻3: 进程B开始运行”等等;4)输出:要求输出计算出来的每个进程的周转时间, 带权周转时间, 所有进程的平均周转时间, 带权平均周转时间。
实现提示:用C++语言实现提示:1)程序中进程调度时间变量描述如下:int ArrivalTime[100];int ServiceTime[100];int PServiceTime[100];int FinishTime[100];int WholeTime[100];double WeightWholeTime[100];double AverageWT,AverageWWT;bool Finished[100];➢2)进程调度的实现过程如下:➢变量初始化;➢接收用户输入n, T1, … ,Tn, S1, … ,Sn;时间片大小q;➢按照时间片轮转RR算法进行进程调度, 计算进程的完成时间、周转时间和带权周转时间;➢计算所有进程的平均周转时间和平均带权周转时间;➢按格式输出调度结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
( 2014/ 2015 学年第一学期)
课程名称操作系统A
实验名称进程间通信实验
实验时间2014 年11 月 5 日指导单位计算机学院计算机科学与技术系
指导教师徐鹤
学生姓名王生荣班级学号B12040809 学院(系) 计算机学院专业软件工程
实验名称进程间通信实验指导教师徐鹤
实验类型验证实验学时 2 实验时间2014.11.5
一、实验目的和要求
1.学习和了解进程控制的基本和常用的系统调用,掌握进程创建系统调用的使用
fork wait sleep exit exec等等
2. 查看 /usr/src/include/sched.h中的task_struct 数据结构,并分析Linux 操作系统进程状态。
3.通过进程创建的应用实例,深刻理解进程创建的过程:从一个进程中创建两个子进程,主进程等待,先从两个子进程中输出信息,最后从主进程中输出信息。
4.掌握建立调用者/服务者的关系和进程通信的方法,通过编程实验在两个进程之间实现进程间消息传递功能。
二、实验环境(实验设备)
Windows XP + VMWare + RedHat Linux 8
三、实验过程描述与结果分析
1、编写一C语言程序,实现在程序运行时通过系统调用fork()创建两个子进程,使父、子三进程并发执行,父亲进程执行时屏幕显示“parent”,儿子进程执行时屏幕显示“son”,女儿进程执行时屏幕显示“daughter”。
2、多次连续反复运行这个程序,观察屏幕显示结果的顺序,直至出现不一样的情况为止。
记下这种情况,试简单分析原因。
3、修改程序,在父、子进程中分别使用wait,exit等调用“实现”其同步推进,多次反复运行改进后的程序,观察并记录运行结果。
实验一:
1、fork()系统调用:
创建一个新进程。
系统调用格式:pid=fork()
参数定义: int fork()
Fork()返回值意义如下:
0:在子进程中,pid变量保存的fork()返回值为0,表示当前进程是子进程。
>0:在父进程中,pid变量保存的fork()返回值为子进程的pid值(进程唯一标识符)。
-1:创建失败。
2、wait()系统调用
等待子进程运行结束。
如果子进程没有完成,父进程一直等待。
Wait()将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。
系统调用格式:int wait(status)
参数定义: int *status;
其中,status是用户空间的地址,为0表示子进程顺利结束,非0则表示出现了各种各样的问题。
3、exit()系统调用
终止进程的执行。
系统调用格式:void exit (status)
参数定义: int status;
其中,status是返回父进程的一个整数。
Exit(0)表示进程正常终止,exit(1)表示进程运行有错,异常终止。
源代码:
#include<stdio.h>
main()
{
int p1,p2,i;
while((p1=fork())==-1);
if (p1==0)
for (i=0;i<4;i++)
printf("daughter%d\n",i);
else
{
while((p2=fork())==-1);
if (p2==0)
for(i=0;i<4;i++)
printf("son%d\n",i); else
for(i=0;i<4;i++)
printf("parent%d\n",i);
}
}
修改后代码:
#include<stdio.h>
main()
{
int pid;
pid=fork();
switch(pid)
{
case -1:
printf("fork fail!\n");
exit(1);
case 0:printf("subprocess!\n"); exit(0);
default:
wait(0);
printf("completed!\n"); exit(0);
}
}
实验一结果:
实验二:
1、消息的创建,发送和接受。
使用系统调用msgget(),msgsnd(),msgrev(),及msgctl()编制消息的发送和接受程序。
2、server.c程序后台运行,client.c程序前台运行,server.c先于client.c运行。
源代码:
顾客程序
#include <sys/types.h>
#include <sys/ipc.h>
#include<sys/msg.h>
#define MSGKEY 75
struct msgform
{
long mtype;
char mtext[256];
}
main()
{
struct msgform msg;
int msgqid, pid,*pint;
msgqid=msgget(MSGKEY,0777);
pid=getpid();
pint=(int*)msg.mtext;
*pint=pid;
msg.mtype=1;
msgsnd(msgqid,&msg,sizeof(int),0);
msgrcv(msgqid,&msg,256,pid,0);
printf(“client:receive from pid%d\n”,*pint);
exit(0);
}
服务者程序
#include <sys/types.h>
#include <sys/ipc.h>
#include<sys/msg.h>
#define MSGKEY 75
struct msgform
{
long mtype;
char mtext[256];
}
main()
{
int j,pid,*pint;
extern cleanup();
for (j=0;j<20;j++)
signal(j,cleanup);
msgqid=msgget(MSGKEY,0777|IPC_CREAT);
for(;;)
{
msgrcv(msgqid,&msg,256,1,0);
pint=(int*)msg.ntext;
pid=*pint;
printf(“server:receive from pid %d\n”,pid);
msg.mtype=pid;
*pint=getpid();
msgsne(msgqid,&msg,sizeof(int),0);
}
}
cleanup()
{
msgctl(msgqid,IPC_RMID,0);
exit(0);
}
实验二结果:
实验报告
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
这次Linux的试验让我学会了如何使用进程间的通信,虽然还有好多不懂的地方,但是我通过询问同学和老师来学习和了解进程控制的基本和常用的系统调用,掌握进程创建系统调用的使用,最终能够顺利的完成实验。
但是在实验中,我发现自己在编程时对于命令符的掌握不够熟练,常常发生一些错误,这使我不得不重新开始编写,这造成了很大的麻烦,浪费了许多时间。
通过这次试验,我学到了很多东西,但是也认识到自己的。
知道了不足,我会去弥补,以后我会常编程来提高自己的熟练度,减少在编程中由于不能熟练掌握编程语言而发生的错误。
五、指导教师评语
成绩批阅人日期
10。