




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学生学号0121110680125实验课成绩武汉理工大学学 生 实 验 报 告 书实验课程名称 操作系统 开 课 学 院 计算机科学与技术学院 指导老师姓名 刘军 学 生 姓 名 李帅 学生专业班级 软件1101 2013 2014 学年 第 一 学期实验课程名称: 操作系统 实验项目名称Linux键盘命令和vi实验成绩实验者李帅专业班级软件工1101 组别同组者实验日期第一部分:实验分析与设计(可加页)一、 实验内容描述(问题域描述)Linux键盘命令和vi1.要求:掌握Linux系统键盘命令的使用方法 1. 使用mkdir命令建立一个子目录subdir 2. 使用cat或more命令查看file1文件的内容。3. 将date命令的用法附加到文件file1的后面:4. 利用ls -l file1命令列出文件file1的较详细的信息。5. 利用rm fa命令将文件fa删除。再利用ls -l命令查看工作目录内容。6. 运行mv file1 file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中2.vi操作1.了解vi编辑器的作用和功能2.熟悉vi的操作环境和切换方法3.掌握vi操作的方式(几个常用键)4.了解常用的快捷键二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)VI编辑器的常见命令:vifilename:打开或新建文件,并将光标置于第一行首 vi+nfilename:打开文件,并将光标置于第n行首 vi+filename:打开文件,并将光标置于最后一行首 vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处 vi-rfilename:在上次正用vi编辑时发生系统崩溃,恢复filename vifilename.filename:打开多个文件,依次进行编辑 键盘命令:1.cat, more, less命令2.Is命令3.cp命令4.rm命令5.mv命令VI命令:1.vi 进入vi缓冲区2.vi file1:进入文件file13.退出vi三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1 使用mkdir命令建立一个子目录subdir 2 使用cat或more命令查看file1文件的内容。3 将date命令的用法附加到文件file1的后面:4 利用ls -l file1命令列出文件file1的较详细的信息。5 利用rm fa命令将文件fa删除。再利用ls -l命令查看工作目录内容。6 运行mv file1 file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中?显然,只有file_a在工作目录中,而file1不在工作目录中 二、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)Free 显示系统中已用空闲内存数量 Rm:删除文件或目录三、 实验小结、建议及体会Linux对比Windows有些不同需要时间去适应。通过这次实验对Linux操作系统有了进一步的了解。初步掌握了一些Linux系统常用的命令。通过这仅一个周时间的学习,我们只是了解了linux的一些最基本知识,我会在后的学习中不断完善和加以扩充linux知识的学习。实验课程名称: 操作系统 实验项目名称Linux下C编程实验成绩实验者李帅专业班级软件1101组别同组者实验日期第一部分:实验分析与设计(可加页)一、 实验内容描述(问题域描述) Linux下的C编程要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#includeusing namespace std;int main()int begin, end;int temp = 0;coutPlease enter two number:beginend;if(beginend)temp = begin;begin = end;end = temp;for(int i=begin; i=end; i+)couti ;coutendl;return 0;三、主要仪器设备及耗材 Ubuntu操作体统 Vi编辑器 G+编译第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1).先用vi JamesJi.c 建立文件(2).在vi的插入界面输入#include int main(void)printf(JamesJi.gcc!rn); return 0;(3).编译生成JamesJi文件:gcc -o JamesJi JamesJi.c(4).运行JamesJi文件:./JamesJi二、 实验小结、建议及体会通过这次实验vi编辑器有了进一步的应用,同时学会了在Linux进行简单的C语言编程,掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。在以后的学习中会加大努力加强自己的编程能力。加深了对linux的印象,linux的兼容性很强。C/C+仍旧可以在上面编译成功。实验课程名称: 操作系统 实验项目名称SHELL编程和后台批处理实验成绩实验者李帅专业班级软件1101组别同组者实验日期第一部分:实验分析与设计(可加页)三、 实验内容描述(问题域描述)SHELL编程和后台批处理要求:掌握Linux系统的SHELL编程方法和后台批处理方法。内容: (1) 将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。(2) 将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。(3) 修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。四、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)test.cpp文件如下:#includeusing namespace std;int main()int i, j;int a1010 = 0;a00 = 1;for(i=1; i=9; i+)for(j=0; j=i; j+)if(j=0) | (i=j)aij = 1;elseaij = ai-1j-1 + ai-1j;for(i=0; i=9; i+)for(j=0; j=i; j+)cout aij;coutendl;return 0;test.sh文件如下#!/bin/bash#Program:# This program is used to compile and run a file of cpp#History#2011/06/01g+ -o test.out test.cppchmod u+x test.out./test.out三、主要仪器设备及耗材Ubuntu操作系统Vi编辑器第二部分:实验调试与结果分析(可加页)四、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 调试过程中未发现任何问题 五、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)六、 实验小结、建议及体会通过这次实验熟悉了shell编程,对Linux下的编程有了进一步的了解。也对Linux系统终端方式使用的编辑器vi有进一步的认识,如何使用命令来打开文件以及在编辑器vi里面编写内容等,。总之,通过这次实验,对课本上的知识有了进一步的理解以及巩固。实验课程名称: 操作系统 实验项目名称Linux系统调用(time)实验成绩实验者李帅专业班级软件1101组别同组者实验日期第一部分:实验分析与设计(可加页)一、 实验内容描述(问题域描述)学习Linux内核的系统调用,理解、掌握Linux系统调用的实现框架、用户界面、参数传递、进入/返回过程。阅读Linux内核源代码,通过添加一个简单的系统调用实验,进一步理解Linux操作系统处理系统调用的统一流程。Linux系统调用使用方法。要求:掌握Linux系统调用使用方法。内容:学习使用time, ctime, sleep, exit等Linux系统调用使用方法。二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#include#include#include#includeusing namespace std;int main()while(1) char timebuf100; time_t t; time(&t); strftime(timebuf, sizeof(timebuf),%Y 年 %m 月 %d 日 %H: %M: %S,localtime(&t); couttimebufendl; fflush(stdout); sleep(1); return 0;在现有的系统中添加一个不用传递参数的系统调用。这个系统调用的功能是实现遍历进程。实验主要内容: 添加系统调用的名字利用标准C库进行包装添加系统调用号 在系统调用表中添加相应表项 sys_mysyscall的实现三、主要仪器设备及耗材Ubuntu操作系统Vi编辑器G+编译器第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) #include # include #define _NR_ mysyscall 223int main()syscall(_NR_mysyscall); /*或syscall(223) */在此加入在屏幕输出每个进程相关信息的代码;l 用gcc编译源程序# gcc o test test.cl 运行程序# ./testl 用shell命令查看遍历进程输出的信息#dmesg 二、 实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)三、 实验小结、建议及体会这次实验有点难度,但是通过查找资料和与老师的交流之后还是顺利完成了实验,希望以后相关能力能够得到加强。实验课程名称: 操作系统 实验项目名称Linux进程控制(fork)实验成绩实验者李帅专业班级软件1101组别同组者实验日期第一部分:实验分析与设计(可加页)一、 实验内容描述(问题域描述)Linux系统进程控制要求:掌握Linux系统中进程控制原语fork的使用方法。内容:设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。二、 实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#include#include#includeusing namespace std;int main()coutParent process id:getpid()endl;pid_t iRet = fork();if(iRet0) coutCreate child process fail!endl;else if(iRet = 0) coutIm child process, and id isgetpid()ppid is:getppid()endl;else coutCreate child process success childthe id is:iRetendl;return 0;三、主要仪器设备及耗材Ubuntu操作体统Vi编辑器G+编译第二部分:实验调试与结果分析(可加页)一、 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)(1)【进程的创建】 编写一段程序,使用系统调用fork()创建两个子进程,当此进程运行时,在系统中有一个父进程和两个子进程活动,让每一个进程在屏幕上显示一个字符,父进程显示字符“a”;子进程分别显示字符“b”和字符“c”,试观察记录屏幕上的显示结果,并分析原因。【源程序】:#includeint main() int p1, p2; while (p1 = fork() = -1); if (p1 = 0) /第一子进程 putchar(b); else while (p2 = fork() = -1); if (p2 = 0) putchar(c); /第二子进程 else putchar(a); /父进程 return 0;运行多次:主要输出有bca,偶尔输出cab和cba,abc,bac,acb会有如此多种不同输出,主要是因为fork()生成的子进程和父进程是并行运行的,所以先运行哪个进程是由系统的调度算法决定的,ubuntu9.04很大概率系统会先输出bca是因为ubuntu 9.04在fork()运行之后很大概率先运行子进程,再运行父进程。当然也有可能先运行父进程后子进程,再加上进程间的并发性;导致了输出的多样性。输出次序带有随机性。(2)【进程的控制】 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因。【源代码】:#includeint main() int p1, p2; while (p1 = fork() = -1); if (p1 = 0) ;第一个子进程 printf(Child1 is running!n); else while (p2 = fork() = -1); if (p2 = 0) ;第二子进程 printf(Child2 is running!n); else ;父进程 printf(Father is running!n); return 0;运行多次,大部分运行后输出:Child1 is running!Child2 is running!Father is running!少数输出:Child2 is running!Child1 is running!Father is running!Father is running!Child1 is running!Child2 is running!理论上是有6种不同的结果,还是由于系统的调度算法,程序的并发性影响;但由于函数printf( )在输出字符串时不会被中断,因此,字符串内部字符顺序输出不变。所以与打印单字符的结果相同。创建进程,使用 exec 函数族使子进程执行新的目标程序,观察并分析出现的现象。【源代码】:#include #include int main()printf(=system call execl testing =n);execlp(date,date,0);printf(exec error !n);return 0;输出:=system call execl testing =2009年 12月 04日 星期五 21:35:18 CST输出结果分析: execlp是一种exec函数,当进程调用一种exec函数时,用指定的目标进程更好进程的执行映像。Exec调用成功后,调用进程的正文段被指定的文件的正文段所覆盖。调用成功时,exec不返回,从而不执行exec以后的所有语句,所以本例就只有输出“2009年 12月 04日 星期五 21:35:18 CST”的情况。如果调用失败,返回-1,执行剩余指令。(3)【进程信号处理】 编写程序使用系统调用 fork()创建两个子进程,再用系统调用 singal()让父进程捕捉键盘上来的中断信号(即按 Ctrl+c 键);当捕捉到中断信号后,父进程用系统调用 Kill()向两个子进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:Child Process11 is Killed by Parent!Child Process12 is Killed by Parent!父进程等待两个子进程终止后,输出如下的信息后终止:Parent Process is Killed!【源代码】:#include#includeint wait_mark;void waiting() while (wait_mark = 1);void stop() wait_mark = 0;int main() int p1, p2; while (p1 = fork() = -1);if (p1 = 0) ;第一个子进程 wait_mark = 1; signal(SIGINT, SIG_IGN); signal(16, stop); waiting(); lockf(1,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年乡镇环保工作成效评价与考核标准
- 2025年互联网大厂产品经理面试秘籍面试预测题与实战指南
- 抢救车内管理课件
- 2025年旅行社服务合作协议书
- 2025年旋挖钻机项目合作计划书
- 2025年飞机维修船坞项目建议书
- 2025年低噪声对旋式局部通风机项目建议书
- 抗癫痫与抗惊厥药课件
- 抗生素使用相关课件
- 2023年山东省滨州市经开区中考语文三模试卷(含答案)
- 数控机床概述
- 《高一数学开学第一课:学好高中数学》课件
- 五年级美术 《感受漫画造型》 公开课比赛一等奖
- 管理学基础(第3版)全套教学课件
- 红帽认证管理员RHCSA(习题卷1)
- 2021地质灾害治理工程施工质量验收规范
- 煤矿重大危险源的辨识与控制课件
- 劳务服务施工组织方案
- 08878动漫产业概论模拟试题答案
- 电子水准仪二等水准测量记录表
- 《水声学原理》8.1.1噪声和混响背景下信号的检测 - 噪声和混响背景下信号的检测
评论
0/150
提交评论