欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    操作系统实验报告(共4页).doc

    • 资源ID:14359408       资源大小:54.50KB        全文页数:4页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验报告(共4页).doc

    精选优质文档-倾情为你奉上实验报告(学生打印后提交)实验名称: shell编程基础 实验时间: 2012 年4月14日实验人员:赵俊杰_(姓名)(学号)2010(年级)实验目的:学习使用Linux的系统调用,对进程进行管理和完成进程之间的通信(用信号和管道进行进程间通信)理解并发程序中的同步问题熟悉使用Linux下的软件开发工具gcc熟练使用man帮助手册实验环境: linux 实验步骤:1. 把源文件(程序)拷入Linux系统的一个目录中 2. 阅读关于fork、exec、wait、exit、pipe系统调用的man帮助手册 3. 编译程序fork.c并运行,观察结果,分析程序。 4. 试编辑程序pipe.c并运行,观察结果,分析程序。(程序要求及提示见pipe.c源文件) 5.阅读关于函数sigaction、tcsetpgrp和setpgid的man帮助手册 6.编译程序signal.c并运行,观察结果,分析程序。 7.编译程序process.c并运行,观察结果,分析程序。 实验陈述:1、基础知识:² 什么是系统调用:Linux所有系统资源被内核管理,任何涉及访问系统资源的用户请求或应用程序请求,必须由内核代码处理。出于安全考虑,用户进程是不能随意访问内核代码的 Linux提供系统调用,让用户进程能调用内核代码的运行。这些系统调用允许用户操纵进程、文件和其他系统资源,从用户级切换到内核级。系统调用与普通函数调用的区别在于系统调用的执行会引起特权级的切换,是一种受约束的、为切换到保护核心的“函数调用”。² 简述fork调用:用它创建一个新的进程,成为原先进程的子进程,原先进程是父进程。子进程实际上是原先进程的一个副本,即子进程拥有和父进程相同代码段的内存块。父子进程在fork语句后都要继续同时执行,它们通过fork的返回值转向不同的代码分支,对子进程的返回值是0,对父进程fork的返回值是子进程的进程号(大于0)。出错返回-1。² 如何实现进程间的通信: 进程间的通信可以利用管道和信号机制实现。 信号机制:信号允许一个进程在某一事件发生时与另一个进程(接收者进程)通信,该进程把事件对 应的消息传递给接收者进程,接收者进程收到一个信号时,会采取某些相应的动作。信号的值表明发生了哪种事件。管道机制:管道允许一条命令的标准输出作为一条命令的标准输入,允许同一个系统上的两个相关的进程进行通信(典型情形是父子进程),而且进程的通信是单向的。² 如何实现进程间的连接: 2、 写出下列函数的原型fork: pid=fork() sigaction: int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); pipe: int pipe(int pipefd2); tcsetpgrp: int tcsetpgrp(int fd, pid_t pgrp) 3、运行和观察结果² fork.cØ 简述程序实现的功能:程序用创建子进程的方式实现了ls lh / 这个命令的功能,即列出根目录下文件的详细信息. 运行结果如下:zjjubuntu:/program$ ./fork总用量 96Kdrwxr-xr-x 2 root root 4.0K 2012-04-14 00:26 bindrwxr-xr-x 3 root root 4.0K 2012-04-23 01:18 bootdrwxr-xr-x 2 root root 4.0K 2011-08-19 05:18 cdromdrwxr-xr-x 16 root root 4.0K 2012-04-23 06:59 devdrwxr-xr-x 128 root root 12K 2012-04-23 06:59 etcdrwxr-xr-x 3 root root 4.0K 2011-08-19 05:21 homelrwxrwxrwx 1 root root 33 2012-04-23 01:18 initrd.img -> boot/initrd.img-2.6.32-41-genericlrwxrwxrwx 1 root root 33 2012-04-14 00:30 initrd.img.old -> boot/initrd.img-2.6.32-40-genericdrwxr-xr-x 20 root root 12K 2012-04-23 01:17 libdrwx- 2 root root 16K 2011-08-19 05:14 lost+founddrwxr-xr-x 3 root root 4.0K 2012-04-14 01:38 mediadrwxr-xr-x 3 root root 4.0K 2012-03-23 05:01 mntdrwxr-xr-x 2 root root 4.0K 2011-08-19 05:36 optdr-xr-xr-x 168 root root 0 2012-04-23 06:58 procdrwx- 10 root root 4.0K 2011-08-19 07:41 rootdrwxr-xr-x 2 root root 4.0K 2012-04-14 00:26 sbindrwxr-xr-x 2 root root 4.0K 2009-12-05 13:55 selinuxdrwxr-xr-x 2 root root 4.0K 2010-08-16 02:32 srvdrwxr-xr-x 12 root root 0 2012-04-23 06:58 sysdrwxrwxrwt 16 root root 4.0K 2012-04-23 06:59 tmpdrwxr-xr-x 10 root root 4.0K 2010-08-16 02:32 usrdrwxr-xr-x 15 root root 4.0K 2010-08-16 02:48 varlrwxrwxrwx 1 root root 30 2012-04-23 01:18 vmlinuz -> boot/vmlinuz-2.6.32-41-genericlrwxrwxrwx 1 root root 30 2012-04-14 00:30 vmlinuz.old -> boot/vmlinuz-2.6.32-40-generic Ø 程序中如何区分父进程和子进程: Pid=fork(). 如果pid=0,则为子进程。如果pid!=0,为父进程。 ² pipe.cØ 简述程序实现的功能 程序利用管道的形式实现了 ls l /etc | more 的功能。将前一个命令的标准输出当做后一个指令(more) 的标准输入 分页显示/etc目录下文件的详细信息。程序结果如下:zjjubuntu:/program$ ./pipe总用量 1112drwxr-xr-x 3 root root 4096 2012-04-14 00:30 acpi-rw-r-r- 1 root root 2981 2010-08-16 02:34 adduser.confdrwxr-xr-x 2 root root 4096 2012-04-14 02:10 alternatives-rw-r-r- 1 root root 395 2010-03-04 18:29 anacrontabdrwxr-xr-x 6 root root 4096 2010-08-16 02:40 apmdrwxr-xr-x 3 root root 4096 2011-08-19 07:43 apparmordrwxr-xr-x 7 root root 4096 2012-04-14 00:31 apparmor.ddrwxr-xr-x 5 root root 4096 2012-04-14 00:32 apportdrwxr-xr-x 6 root root 4096 2011-08-19 05:31 apt-rw-r- 1 root daemon 144 2010-03-04 18:35 at.denydrwxr-xr-x 3 root root 4096 2011-08-19 07:43 avahi-rw-r-r- 1 root root 1939 2010-04-18 18:51 bash.bashrc-rw-r-r- 1 root root 51761 2010-04-14 06:32 bash_completiondrwxr-xr-x 2 root root 4096 2012-04-14 00:32 bash_completion.d-rw-r-r- 1 root root 344 2010-04-22 07:04 bindresvport.blacklist-rw-r-r- 1 root root 321 2010-03-22 10:50 blkid.conflrwxrwxrwx 1 root root 15 2011-08-19 07:30 blkid.tab -> /dev/.blkid.tabdrwxr-xr-x 2 root root 4096 2010-08-16 02:48 bluetooth-rw-r-r- 1 root root 7135 2010-04-15 04:34 bogofilter.cfdrwxr-xr-x 2 root root 4096 2010-08-16 02:46 bonobo-activation-rw-r-r- 1 root root 33 2010-08-16 02:50 brlapi.key-More- Ø execvp(prog2_argv0,prog2_argv)是否执行,如果没有执行是什么原因: 该指令执行more 的指令 ² signal.cØ 简述程序实现的功能: 程序 利用信号,实现了进程通信。子程序结束,将SIGCHLD信号返回给父进程,父进程再做出相应的处理。程序结果如图:Ø 怎样让函数ChildHandler执行? 在另外一个窗口下,执行kill 命令,杀死子进程,父进程通过sigaction()系统调用,执行ChildHandler函数。 ² process.cØ 简述程序实现的功能: 设置子程序为前台进程组,控制终端调用vi ,输入。 父程序等待子程序结束后,设为前台进程组,控制终端,回显刚才的输入 。 程序结果如下:zjjubuntu:/program$ ./processID(parent=2110)ECHO your inputs.hello worldECHO: hello world Ø 进程列表中有几个process,为什么? 进程列表中有两个process,子程序负责输入,父程序负责回显。 Ø 杀死主进程后,出现什么情况: 杀死主进程后,整个程序退出。 实验总结: 通过此次实验,了解了与进程同步相关的linux系统调用,掌握了gcc相关命令。熟悉了在linux下程序的调试。理解了进程通信相关问题。并阅读了大量man帮助手册,提高了动手能力,和自主学习能力。 专心-专注-专业

    注意事项

    本文(操作系统实验报告(共4页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开