操作系统实验报告_第1页
操作系统实验报告_第2页
操作系统实验报告_第3页
操作系统实验报告_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验报告(学生印刷并提交)实验名称:壳编程的基础实验时间: 2012年4月14日受试者:赵俊杰_ (姓名) 1043041254 (学号) 2010 (学年)实验的目的:学习使用Linux的系统调用,管理进程,完成进程间的通信(通过信号和管道进行进程间通信)。了解并发程序同步的问题。精通软件开发工具gcc在Linux上的使用熟练使用man帮助手册实验环境: linux实验步骤:1 .将源文件(程序)复制到Linux系统的目录中阅读有关fork、exec、wait、exit和pipe系统调用的man帮助文档3 .编译并运行程序fork.c,观察结果,分析程序。4 .试运行程序pipe.c,观察结

2、果,分析程序。 (程序的请求和提示请参见pipe.c源文件。)5 .阅读关于函数sigaction、tcsetplanp和setpgid的man帮助手册6 .编译并运行程序signal.c,观察结果并分析程序。7 .编译运行程序process.c,观察结果,分析程序。实验性陈述:1 .基础知识:什么是系统调用所有的Linux系统资源都由内核管理,用于访问系统资源的用户请求或应用请求必须由内核代码来处理。 出于安全原因,用户进程不能自由访问内核代码Linux提供了系统调用,使用户进程可以调用内核代码的执行。 使用这些系统调用,用户可以操作进程、文件和其他系统资源,从用户级别切换到内核级别。的。系

3、统调用与通常的函数调用的区别在于,系统调用的执行导致权限级别的切换,这是用于切换到保护核心的受约束的“函数调用”。fork调用概述:使用它来创建新进程,成为原进程的子进程,原进程成为父进程。 子进程实际上是原始进程的副本,子进程与父进程具有相同代码段的存储器块。父子进程在fork语句之后同时执行,通过fork的返回值移动到不同的代码分支,子进程的返回值为0,父进程fork的返回值为子进程的进程编号(大于0 )。 错误返回-1。如何实现进程间的通信:进程间的通信可以利用管道和信号机制实现。信号机制:信号使得一个进程能够在一个事件发生时与另一个进程(接收进程)进行通信,该进程将与该事件相对应的消息

4、传递给接收进程,并且在接收进程接收到该信号时信号的值表示发生了什么事件。管道机构:管道允许一个命令的标准输出作为一个命令的标准输入,使同一系统上的两个相关进程(通常是父子进程)可以通信,从而使进程通信变得单向。实现进程之间的连接的方法:2 .写下列函数的原型fork: pid=fork ()sigaction:int sigaction (intsignium,const struct sigaction *act )结构触发* old act;管道:管道(管道软盘2 );tcsetplanp : inttcsetppgrp (intfd,pid_t pgrp )3 .运行和观察结果福克. c

5、简要说明程序实现的功能。程序通过制作子进程实现了ls -lh /这一指令的功能,列出了根目录下的文件的详细信息执行结果如下:zjj Ubuntu :/程序$./fork总使用量96Kdrwxr-xr-x2根根4.0 k 2012-04-140033666 bindrwxr-xr-x 3根根4.0 k 2012-04-23013364018引导drwxr-xr-x2 root root 4.0 k 2011-08-19053365018 cdromdrwxr-xr-x 16根根4.0 k 2012-04-2306336059 devdrwxr-xr-x 128根12k 2012-04-23063

6、36059 etcdrwxr-xr-x 3根根4.0 k 2011-08-190533021家庭lrwxrwxrwx1root root 332012-04-23013364018 initrd.img-boot/initrd.img-2.6.32-41 -一般lrwxrwxrwx1root root 332012-04-1400336330 initrd.img.old-boot/initrd.img-2.6.32-40-genericdrwxr-xr-x 20根根12k2012-04-23013364017libdrwx-2根16k 2011-08-19053365014丢失drwxr-x

7、r-x 3根根4.0 k 2012-04-140133688媒体drwxr-xr-x 3根根4.0 k 2012-03-23053365001 mntdrwxr-xr-x2根根4.0 k 2011-08-1905336336 optdr-xr-xr-x 168根根02012-04-2306336058 procdrwx-10根根4.0 k 2011-08-1907335341根drwxr-xr-x2 root root 4.0 k 2012-04-140033666 sbindrwxr-xr-x2 root root 4.0 k 2009-12-0513 33365055 selinuxdrw

8、xr-xr-x2根根4.0 k 2010-08-1602336032 SRVdrwxr-xr-x 12根根02012-04-2306336058 sysdrwxrwt 16根根4.0 k 2012-04-2306336059 tmpdrwxr-xr-X10根根4.0 k 2010-08-1602336032 usrdrwxr-xr-x 15根根4.0 k 2010-08-1602336048 varlrwxrwxrwx 1根根302012-04-23013365018 vmlinuz-boot/vmlinuz-2.6.32-41 -通用lrwxrwxrwx 1根根302012-04-14003

9、36330 vmlinuz.old-boot/vmlinuz-2.6.32-40 -通用程序中区分父进程和子进程的方法:如果pid=fork().pid=0,则子进程。 如果PID=0,则是父进程。PR简要叙述程序实现的功能程序用管道实现了ls -l /etc | more的功能。 输入上一个命令的标准输出作为下一个命令(more )的标准分页显示/etc目录中文件的详细信息。方案的结果如下:zjj Ubuntu :/program $./pipe总使用量1112drwxr-xr-x 3根根40962012-04-1400336330 acpi- rw-r- r- 1根根2981-08-160

10、2336034 adduser.confdrwxr-xr-x2 root root 40962012-04-1402336010备用- rw-r- r- 1根根395-03-041833029 ana crontabdrwxr-xr-x 6根根4096-08-1602336040 APMdrwxr-xr-x 3根根40962011-08-1907335343 app mordrwxr-xr-x7 root root 40962012-04-140033031 app mor.ddrwxr-xr-x 5根根40962012-04-140033032 apportdrwxr-xr-x 6根根4096-08-1905336531 apt-rw-r-1根守护进程1442010-03-0418333035at.denydrwxr-xr-x 3根根4096-08-1907335343 avahi- rw-r- r- 1根根1939-04-181833051 bash.bashrc- rw-r- r- 1根根根517612010-04-1406336032 bash _ completiondrwxr-xr-x2 root root 40962012-04-140033032 bash _ completion.d- rw-r- r- 1根根34420

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论