版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通讯与信息工程学院2015/2016学年第二学期实验报告课程名称:操作系统实验名称:1、LINUX及其使用环境2、进度管理3、进度间通讯4、文件的操作和使用班级学号专业电子信息工程学生姓名指导教师赵成立实验名称试验一LINUX及其使用环境实验种类考证实验学时1实验时间一、实验目的和要求1、认识UNIX的命令及使用格式。2、熟习UNIX/LINUX的常用基本命令。3、练习并掌握UNIX供给的vi编写器来编译C程序。4、学会利用gcc、gdb编译、调试C程序。二、实验环境WindowsXP+VMWare+RedHatEnterpriseLinux(RHEL)4三、实验原理及内容1、熟习LINUX的常用基本命令。如ls、mkdir、grep等,学会使用man、help等其余命令,掌握vi编写器的使用。(1)显示目录文件ls例:ls-al显示目前目录下的全部文件2)建新目录mkdir例:mkdirtest新建一个test目录(3)删除目录rmdir4)改变工作目录地点cd例:cdtest改正工作目录至test目录下5)显示目前所在目录pwd6)查察目录大小du7)文件属性的设置chmod8)命令在线帮助man2、设计一个实现文件拷贝功能的shell程序。(1)在文本编写器里输入shell程序:#!/bin/shecho“pleaseentersourcefile:”readsoucechopleaseenterdestinationfile:”readdestcp$souc$destls$dest将程序保留在主目录下,命名为shell.(2)翻开终端,输入ls-l,显示目录下全部文件的允许权、拥有者、文件大小、修改时间及名称。输入./shell,运转shell程序。输入源文件hello.c,目标文件B13011206.。c(3)输入ls-l,目前目录中包含B13011206.c目标文件。即达成从源文件拷贝至目标文件过程。3、LINUX下C语言程序的编译与调试实验。(1)调试编译代码为了使gdb正常工作,一定使程序在编译时包含调试信息。调试信息里包含程序里的每个变量的种类和在可履行文件里的地点映照以及源代码的行号。gdb利用这些信息使源代码和机器码有关系,在编译时用–g选项翻开调试选项。(2)gdb基本命令命令描述file装入欲调试的可履行文件kill停止正在调试的程序list列出产生履行文件的源代码部分next履行一行源代码但不进入函数内部step履行一行源代码并进入函数内部run履行目前被调试的程序quit停止gdbwatch监督一个变量的值而不论它何时被改变break在代码里设置断点,使程序履行到这里时被挂起make不退出gdb就能够从头产生可履行文件shell不走开gdb就履行UNIXshell命令(3)翻开终端,输入gcchello.c,编译c程序。(4)编译无错后,输入./a.out,运转程序hello.c,显示运转结果“hello”。四、实验小结以前没有接触过Linux操作系统,刚开始用有点不习惯。固然用起来磕磕绊绊,经过本次实验反而得益匪浅。经过这个实验我认识了UNIX的命令及使用格式,熟习了UNIX/LINUX的常用基本命令,同时也认识了在LINUX系统下运转C语言程序的方法,掌握了C语言程序的编译与调试方法。实验名称试验二进度管理实验种类考证实验学时1实验时间一、实验目的和要求1、掌握进度的观点,明确进度的含义2、认识并认识并发履行的实质二、实验环境WindowsXP+VMWare+RedHatEnterpriseLinux(RHEL)4三、实验原理及内容实验内容使用系统调用fork()创立两个子进度。当此程序运转时,在系统中有两个父进度和两个子进度活动。每一个进度在屏幕上显示为:父进度1显示“(1)parentpidsay:A”,父进度2显示“(2)parentpidsay:A”,子进度(1.1)显示(1.1)pid1say:B,子进度(2.1)显示“(2.1)pid2say:C”。2、实验原理fork():创立一个新进度。系统调用格式:pid=fork()参数定义:intfork()fork()返回值意义以下:0:在子进度中,pid变量保留的fork()返回值为0,表示目行进度是子进度。>0:在父进度中,pid变量保留的fork()返回值为子进度的id值(进度独一表记符)。-1:创立失败。假如fork()调用成功,它向父进度返回子进度的PID,并向子进度返回0,即fork()被调用了一次,但返回了两次。此时OS在内存中成立一个新进度,所建的新进度是调用fork()父进度的副本,称为子进度。子进度继承了父进度的很多特征,并拥有与父进度完整同样的用户级上下文。父进度与子进度并发履行。核心为fork()达成以下操作:(1)为新进度分派一进度表项和进度表记符进入fork()后,核心检查系统能否有足够的资源来成立一个新进度。若资源不足,则fork()系统调用失败;不然,核心为新进度分派一进度表项和独一的进度表记符。(2)检查同时运转的进度数量超出早先规定的最大数量时,fork()系统调用失败。(3)拷贝进度表项中的数据将父进度的目前目录和全部已翻开的数据拷贝到子进度表项中,并置进度的状态为“创立”状态。(4)子进度继承父进度的全部文件对父进度目前目录和全部已翻开的文件表项中的引用计数加1。(5)为子进度创立进度上、下文进度创立结束,设子进度状态为“内存中就绪”并返回子进度的表记符。(6)子进度履行固然父进度与子进度程序完整同样,但每个进度都有自己的程序计数器PC,而后依据pid变量保留的fork()返回值的不一样,履行不一样的分支语句。实验步骤(1)在文本编写器输入程序:#include<stdio.h>#include<unistd.h>intmain(){inttemp1,temp2;intpid1,pid2;pid1=fork();temp1=pid1;if(pid1>0){printf(“\n(1)parentpid%dsay:A”,temp1);}else{printf(“\n(1.1)pid1say:B”);}pid2=fork();temp2=pid2;if(pid2>0){printf(“\n(2)parentpid%dsay:A”,temp2);}else{printf(“\n(2.1)pid2say:C”);}}将程序保留在主目录下。(2)翻开终端,使用gcc编译程序,假如犯错,使用vi编写器编写程序。编写无错后再次编译。(3)运转程序,输入./a.out,运转多次后获得下列图结果。四、实验小结经过此次实验,掌握了进度的观点,明确了进度的含义,认识并认识了并发履行的实质。此次实验学会了用fork()函数创立实验,认识到进度与子进度的创立过程。此外还掌握了LINUX系统中输出流重定向的使用,将程序的输出结果输出到文件中,而不是直接显示在屏幕上。实验名称试验三进度间通讯实验种类综合实验学时3实验时间,一、实验目的和要求1、掌握进度此外的创立方法。2、熟习进度的睡眠、同步、取消等进度控制方法。3、认识什么是管道。4、熟习UNIX/LINUX支持的管道通讯方式。二、实验环境WindowsXP+VMWare+RedHatEnterpriseLinux(RHEL)4三、实验原理及内容实验原理编写程序实现进度的管道通讯。用系统调用pipe()成立一管道,二个子进度P1和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进度从管道中读出二个来自子进度的信息并显示(要求先接收P1,后P2)。2.实验步骤(1)在文本编写器输入程序:#include<unistd.h>#include<signal.h>#include<stdio.h>intpid1,pid2;main(){intfd[2];charoutpipe[100],inpipe[100];pipe(fd);
/*创立一个管道
*/while((pid1=fork())==-1);if(pid1==0){lockf(fd[1],1,0);sprintf(outpipe,"child1processissendingmessage!");/*把串放入数组outpipe中*/write(fd[1],outpipe,50);/*向管道写长为50字节的串*/sleep(5);/*自我堵塞5秒*/lockf(fd[1],0,0);exit(0);}else{while((pid2=fork())==-1);if(pid2==0){lockf(fd[1],1,0);/*互斥*/sprintf(outpipe,"child2processissendingmessage!");write(fd[1],outpipe,50);sleep(5);lockf(fd[1],0,0);exit(0);}else{wait(0);/*同步*/read(fd[0],inpipe,50);/*从管道中读长为50字节的串*/printf("%s\n",inpipe);wait(0);read(fd[0],inpipe,50);printf("%s\n",inpipe);exit(0);}}}(2)在终端中,编译程序。(3)输入./a.out履行程序3、实验结果实验输出结果以下延缓5秒后显示child1processissendingmessage!再延缓5秒child2processissendingmessage!四、实验小结(包含问题和解决方法、心得领会、建议与建议等)经过此次实验,熟习了进度的睡眠、同步、取消等进度控制方法,认识什么是管道,认识了UNIX/LINUX支持的管道通讯方式。实验名称实验四文件的操作和使用实验种类考证实验学时1实验时间一、实验目的和要求熟习文件系统的操作和使用方法。二、实验环境WindowsXP+VMWare+RedHatEnterpriseLinux(RHEL)4三、实验原理及内容1、实验内容设计一个程序,经过用密码字符串对文件内容进行逐字符异或操作的方法,实现对一个文件的加/解密。2、实验步骤(1)实验程序:#include<stdio.h>intmain(intargc,char*argv[]){FILE*fd1,*fd2,*fd3;intn;charjiami[4];jiami[0]=’1’;jiami[1]=’2’;jiami[2]=’3’;jiami[3]=’4’;intk=0;chartemp;fd1=fopen(“hello.c”,”r”);//源文件hello.cfd2=fopen(“B13011206”,”w”);//加密后文件B13011206while((n=fgetc(fd1))>0){n=n^jiami[k];k++;if(k>=4)k=0;fputc(n,fd2);}fclose(fd1);fclose(fd2);}(2)翻开终端,使用gcc编译,vi编译程序。生成可履行文件4。(3)输入./4hello.caaa,对hello.c程序加密并保留至aaa(4)使用vi指令进入hello.c和aaa,前者为加密前,后者为加密后程序。3、实验结果:B13011206中的内容_[]W]GWQ_AGPX]_\_8_]_Q_AUW_GEV_]S_[_;[]@__R]___>J8CFX\GR__[Q]^\_m\__8AQEGAZ___>L8四、实验小结(包含问题和解决方法、心得领会、建议与建议等)经过本
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSAE 410-2025温室气体 产品碳足迹量化方法与要求 电动乘用车
- T/UNP 161-2024Mini LED室内商用显示屏先进性评价
- T/GFOA 001-2023展览业数据采集规范
- T/CI 608-2024碳化硅衬底生产工艺技术规范
- T/CADBM 84-2024建筑冷热水输送用不锈钢波纹软管及管件安装验收规范
- T/CSA 083-2024室内调光照明产品节律光谱技术评价规范
- 2025~2026学年甘肃定西市陇西县度北师大版第一册一年级数学阶段学情自测卷【附答案】
- 上海市金山区2027届数学九年级第一学期期末学业质量监测试题含解析
- 2026学年陕西省延安市一年级语文期末自测盲点排查题(详细参考解析)详细答案和解析
- Photoshop四级职业技能考试模拟试卷(含详细答案解析)
- 2026年癌症早诊早治项目实施方案
- 2026新教材语文 六年级上册语文园地三 课件
- 2026秋新教材人教版九年级上册英语Unit 1–8全册各单元语法讲义+练习题(含答案)
- 2026秋新人教版道德与法治四年级上册全册核心素养教案教学设计(含教学反思)
- 2026年法律硕士(法学)考研真题及完整答案解析(统考回忆版)
- 测绘涉密成果管理责任人及岗位安排
- 易流态化固体散装货物安全装运须知培训
- 八年级上册语文课内外古诗词赏析大全
- 酒精肝诊疗指南(2026年版)基层规范化治疗
- 自来水水厂检验工作制度
- 警容风纪培训课件
评论
0/150
提交评论