《南京邮电大学操作系统实验报告》由会员分享,可在线阅读,更多相关《南京邮电大学操作系统实验报告(20页珍藏版)》请在人人文库网上搜索。

1、通信与信息工程学院2015 / 2016学年第 二 学期实验报告课程名称:操作系统实验名称:1、LINUX及其使用环境2、进程管理3、进程间通信4、文件的操作和使用班级学号 专 业 电子信息工程 学生姓名 指导教师 赵 建 立 实验名称试验一 LINUX及其使用环境实验类型验证实验学时1实验时间2016.6.2一、 实验目的和要求1、 了解UNIX的命令及使用格式。2、 熟悉UNIX/LINUX的常用基本命令。3、练习并掌握UNIX提供的vi编辑器来编译C程序。4、学会利用gcc、gdb编译、调试C程序。二、实验环境Windows XP + VMWare + RedHat Enterprise。

2、 Linux(RHEL) 4三、 实验原理及内容1、熟悉LINUX的常用基本命令。如ls、mkdir、grep等,学会使用man、help等其它命令,掌握vi编辑器的使用。(1)显示目录文件 ls例:ls -al 显示当前目录下的所有文件(2)建新目录 mkdir例:mkdir test 新建一个test目录(3)删除目录rmdir(4) 改变工作目录位置 cd例:cd test 更改工作目录至test目录下(5)显示当前所在目录pwd(6)查看目录大小du(7)文件属性的设置 chmod (8)命令在线帮助 man2、设计一个实现文件拷贝功能的shell程序。(1)在文本编辑器里输入shel。

3、l程序:#!/bin/shecho “please enter source file:”read soucecho please enter destination file:”read destcp $souc $destls $dest将程序保存在主目录下,命名为shell.(2)打开终端,输入ls -l,显示目录下所有文件的许可权、拥有者、文件大小、修改时间及名称。输入 ./shell,运行shell程序。输入源文件hello.c,目标文件B.c。(3)输入ls -l ,当前目录中包含B.c目标文件。即完成从源文件拷贝至目标文件过程。3、 LINUX 下C语言程序的编译与调试实验。(1。

4、)调试编译代码为了使gdb正常工作,必须使程序在编译时包含调试信息。调试信息里包含程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联,在编译时用 g 选项打开调试选项。(2)gdb基本命令命 令描 述file装入欲调试的可执行文件kill终止正在调试的程序list列出产生执行文件的源代码部分next执行一行源代码但不进入函数内部step执行一行源代码并进入函数内部run执行当前被调试的程序quit终止gdbwatch监视一个变量的值而不管它何时被改变break在代码里设置断点,使程序执行到这里时被挂起make不退出gdb就可以重新产生可执。

5、行文件shell不离开gdb就执行UNIX shell 命令(3)打开终端,输入gcc hello.c,编译c程序。(4)编译无错后,输入 ./a.out ,运行程序hello.c,显示运行结果“hello”。四、 实验小结之前没有接触过Linux操作系统,刚开始用有点不习惯。虽然用起来磕磕绊绊,通过本次实验反而受益匪浅。通过这个实验我了解了UNIX的命令及使用格式,熟悉了UNIX/LINUX的常用基本命令,同时也了解了在LINUX系统下运行C语言程序的方法,掌握了C语言程序的编译与调试方法。实验名称试验二 进程管理实验类型验证实验学时1实验时间2016.6.2一、 实验目的和要求1、掌握进程。

6、的概念,明确进程的含义2、认识并了解并发执行的实质二、实验环境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、实验原理及内容1.实验内容使用系统调用fork( )创建两个子进程。当此程序运行时,在系统中有两个父进程和两个子进程活动。每一个进程在屏幕上显示为:父进程1显示“(1)parent pid say:A”,父进程2显示“(2)parent pid say:A”,子进程(1.1)显示(1.1)pid1 say:B,子进程(2.1)显示“(2.1)pid2 say:C”。2、 实验原理fork( ):创建一个新进程。 系统调用格式。

7、: pid=fork( )参数定义:int fork( )fork( )返回值意义如下:0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。-1:创建失败。如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程的副本,称为子进程。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。核心为fork( )完成以。

8、下操作:(1)为新进程分配一进程表项和进程标识符进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。(2)检查同时运行的进程数目超过预先规定的最大数目时,fork( )系统调用失败。(3)拷贝进程表项中的数据将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。(4)子进程继承父进程的所有文件对父进程当前目录和所有已打开的文件表项中的引用计数加1。(5)为子进程创建进程上、下文进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。(6)子进程执。

9、行虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC,然后根据pid变量保存的fork( )返回值的不同,执行不同的分支语句。3. 实验步骤(1)在文本编辑器输入程序:#include#includeint main()int temp1,temp2;int pid1,pid2;pid1=fork();temp1=pid1;if (pid10)printf(“n(1)parent pid %d say:A”,temp1);elseprintf(“n(1.1)pid1 say:B”);pid2=fork();temp2=pid2;if (pid20)printf(“n(2)par。

10、ent pid %d say:A”,temp2);elseprintf(“n(2.1)pid2 say:C”);将程序保存在主目录下。(2)打开终端,使用gcc编译程序,如果出错,使用vi编辑器编辑程序。编辑无错后再次编译。(3)运行程序,输入./a.out,运行多次后得到下图结果。四、实验小结通过这次实验,掌握了进程的概念,明确了进程的含义,认识并了解了并发执行的实质。这次实验学会了用fork()函数创建实验,了解到进程与子进程的创建过程。另外还掌握了LINUX系统中输出流重定向的使用,将程序的输出结果输出到文件中,而不是直接显示在屏幕上。实验名称试验三 进程间通信实验类型综合实验学时3实验。

11、时间2016.6.2,2016.6.9一、 实验目的和要求1、掌握进程另外的创建方法。2、熟悉进程的睡眠、同步、撤消等进程控制方法。3、了解什么是管道。4、熟悉UNIX/LINUX支持的管道通信方式。二、实验环境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、实验原理及内容1.实验原理编写程序实现进程的管道通信。用系统调用pipe( )建立一管道,二个子进程P1和P2分别向管道各写一句话:Child 1 is sending a message!Child 2 is sending a message!父进程从管道中读出二个来自子进。

12、程的信息并显示(要求先接收P1,后P2)。2.实验步骤(1)在文本编辑器输入程序:#include #include #include int pid1,pid2;main( ) int fd2;char outpipe100,inpipe100;pipe(fd); /*创建一个管道*/while (pid1=fork( )= =-1);if(pid1= =0)lockf(fd1,1,0);sprintf(outpipe,child 1 process is sending message!); /*把串放入数组outpipe中*/write(fd1,outpipe,50); /*向管道写长为。

13、50字节的串*/sleep(5); /*自我阻塞5秒*/lockf(fd1,0,0);exit(0);elsewhile(pid2=fork( )= =-1);if(pid2= =0) lockf(fd1,1,0); /*互斥*/sprintf(outpipe,child 2 process is sending message!);write(fd1,outpipe,50);sleep(5);lockf(fd1,0,0);exit(0);else wait(0); /*同步*/read(fd0,inpipe,50); /*从管道中读长为50字节的串*/printf(%sn,inpipe);w。

14、ait(0);read(fd0,inpipe,50);printf(%sn,inpipe);exit(0);(2)在终端中,编译程序。(3)输入./a.out执行程序3、实验结果实验输出结果如下延迟5秒后显示child 1 process is sending message!再延迟5秒child 2 process is sending message!四、实验小结(包括问题和解决方法、心得体会、意见与建议等)通过这次实验,熟悉了进程的睡眠、同步、撤消等进程控制方法,了解什么是管道,了解了UNIX/LINUX支持的管道通信方式。实验名称实验四 文件的操作和使用实验类型验证实验学时1实验时间2。

15、016.6.9一、 实验目的和要求熟悉文件系统的操作和使用方法。二、实验环境Windows XP + VMWare + RedHat Enterprise Linux(RHEL) 4三、实验原理及内容1、实验内容设计一个程序,通过用密码字符串对文件内容进行逐字符异或操作的方法,实现对一个文件的加/解密。2、实验步骤(1)实验程序:#includeint main(int argc,char *argv)FILE *fd1, *fd2, *fd3;int n;char jiami4;jiami0=1;jiami1=2;jiami2=3;jiami3=4;int k=0;char temp;fd1。

16、=fopen(“hello.c”,”r”); /源文件hello.cfd2=fopen(“B”,”w”); /加密后文件Bwhile (n=fgetc(fd1)0)n=njiamik;k+;if (k=4)k=0;fputc(n,fd2);fclose(fd1);fclose(fd2);(2)打开终端,使用gcc编译,vi编译程序。生成可执行文件4。(3)输入 ./4 hello.c aaa ,对hello.c程序加密并保存至aaa(4)使用vi指令进入hello.c和aaa ,前者为加密前,后者为加密后程序。3、实验结果:B中的内容_WGWQ_AGPX__8__Q_AUW_GEV_S__;_。

17、_R___J8CFXGR__Q_m__8AQEGAZ___L8四、实验小结(包括问题和解决方法、心得体会、意见与建议等)通过本次实验,我将课本上的理论知识应用于实践,加深了对操作系统基本概念的理解。在实验过程中,查询了不少相关资料,不断的发现问题、提出问题、解决问题。在对自己所编写的源程序段的纠错的过程中,使我更好的理解了操作系统中文件系统的理论知识。这几次操作系统的实验让我学到很多,不仅仅是加深了我对理论知识的印象,更重要的是能够将理论知识应用于实践。希望以后的专业课程都能够开设一定的实践课程,亲自实践跟书本学习真的是完全不同的两种感受。最后,感谢老师的耐心教导和实验指导,这次实验我收获了很多。指导教师评语成 绩批阅人日 期。

南京邮电大学c语言实验报告3v2,南京邮电大学操作系统实验报告相关推荐

  1. 南京邮电大学c语言实验报告5,南京邮电大学C语言大一上期末复习.pdf

    南京邮电大学C语言大一上期末复习.pdf 高级语言程序设计期末总复习高级语言程序设计期末总复习 课程的全部内容可分为五大模块课程的全部内容可分为五大模块 1 1基础知识基础知识 2 2三种基本结构及流 ...

  2. 南京邮电大学C语言中文文本分析处理

    南京邮电大学C语言中文文本分析处理 程序设计题2:中文文本分析处理 1问题描述 编写一个程序,对一篇中文文章进行分析和处理. 2功能要求 要能提供以下几个基本功能: (1)从硬盘读入事先录入的中文文档 ...

  3. 南京邮电大学c语言实验报告4,南京邮电大学算法设计实验报告——动态规划法...

    <南京邮电大学算法设计实验报告--动态规划法>由会员分享,可在线阅读,更多相关<南京邮电大学算法设计实验报告--动态规划法(12页珍藏版)>请在人人文库网上搜索. 1.实 验 ...

  4. 南京邮电大学C语言实验报告6v2(仅供参考)

    实验六 结构体与文件实验 一. 实验目的和要求 (1)掌握结构体类型以及结构体变量的定义与使用. (2)综合运用结构体.数组.指针等知识,解决相关问题. (3)会正确定义FILE*指针,掌握文件操作从 ...

  5. 南京邮电大学C语言实验报告五

    实验五:指针与字符串实验 实验题目(1)[见实验教材实验六的题目2]:编程exp6_2.c,现有整型变量x,y,调用交换函数以期实现两个值的交换.下表中4种不同的定义及调用分别进行测试并填写表格. 表 ...

  6. 南京邮电大学c语言程序设计平台,程序设计报告-南京邮电大学-学生管理系统-c语言.doc...

    程序设计报告-南京邮电大学-学生管理系统-c语言.doc 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 ...

  7. 南京邮电大学c语言程序报告,程序设计报告南京邮电大学学生管理系统 c语言.doc...

    程序设计报告南京邮电大学学生管理系统 c语言 程序设计报告 题 目: 学生信息管理系统 专 业 电子信息科学与技术 学 生 姓 名 孟祥熙 班 级 学 号 指 导 教 师 王蔚 指 导 单 位 南京邮 ...

  8. 南京邮电大学c语言期末考试试卷答案,c语言期中考试试题

    <c语言期中考试试题>由会员分享,可在线阅读,更多相关<c语言期中考试试题(6页珍藏版)>请在人人文库网上搜索. 1.南京邮电大学通达学院 2014-15 学年第 一 学期高级 ...

  9. 南京邮电大学操作系统——实验三:页面置换算法

    文章目录 实验内容 实验源码 实验结果 结果分析 实验内容 理解请求分页式虚拟存储管理方案中的页面置换算法,理解缺页中断率的概念并可以进行正确地统计.具体要求如下: 使用数组存储一组页面请求,页面请求 ...

最新文章

  1. Python之Scrapy爬虫的常用命令
  2. ReduceTask工作机制
  3. raid5坏了一块盘怎么办_服务器阵列信息丢失,数据怎么办?先不要慌,也许很快就能恢复...
  4. python的特征提取实验一_在opencv3中使用ORB进行特征提取实验-Python版
  5. php 获取图片字节,php内置函数获取图片类型-exif_imagetype
  6. skysat重访周期_重访小恶梦
  7. 骨牌覆盖(51Nod-1031)
  8. wgs-84,gcj-02,bd-09的相互转换,高德,世界测量,百度坐标系的相互转换,坐标系转换
  9. android 程序更换字体,Android修改自己程序字体的方法详解
  10. 4月第三周国内域名解析商Top10:万网升至20.32%
  11. 中国主要城市的DNS列表
  12. 06-4.部署高可用 kube-scheduler 集群
  13. QCon杭州2012技术开发大会感受
  14. 神通广大、卓有奇效的“mini-KMS_Activator_v1.051”(迷你KMS)初现江湖
  15. 通过命令行安装egret引擎
  16. python中mysqldb模块_Python学习之MySQLdb模块
  17. 学生证选课系统c语言大作业,学生选课管理系统c语言程序
  18. 新书封面初稿,征集意见ing【人人都是产品经理:9066】
  19. python大学课程-Coursera上Python课程(公开课)汇总
  20. uni-app 页面切换间的动画,页面跳转之中的动画

热门文章

  1. 叶新伟 php,基于php+mysql技术bbs论坛设计的开发与实现最终版(样例3)
  2. 【开源】java做游戏之QQ连连看java单机高仿版(算是目前最高仿的了)
  3. SAP SHDB 录制BDC并程序调用BDC教程
  4. Google Chrome 试用感受
  5. 免费的视频转换软件。包括qlv全可以转
  6. Yelp Dataset(Yelp业务-评论-用户数据集)
  7. iOS的键盘种类(不同的键盘布局)
  8. AWS-小型企业-服务架构设计
  9. HDOJ 1814 Peaceful Commission
  10. 云课堂计算机教室怎么使用,云课堂计算机教室解决方案 3.0