- 1、本文档共23页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实践报告
课程名称:操作系统实践 年级: 12 上机实践成绩:
指导教师:全红艳 姓名:修阳
上机实践名称:Pintos Project2 学号:10122510325 上机实践日期:
上机实践编号:No.4 组号: 上机实践时间:
一、目的
1) 了解Pintos 的现有用户程序处理的功能
2) 了解Pintos 提供的用户程序处理源代码
3) 完善 Pintos 的用户程序处理的功能
二、内容与设计思想
1、掌握Pintos 的磁盘申请、复制等功能
2 、明确Pintos 的用户程序处理中存在的问题
3、具体完成以下功能
(a )进程终止时输出信息
(b) 参数功能
(c) 系统调用功能
( d) 禁止对可执行文件的写入功能
4 、撰写实验报告及项目说明
三、使用环境
Ubuntu 12,Pinos ,Geany ,C 语言
四、实验过程与分析、调试过程
1、创建虚拟磁盘
在命令行输入 pintos/src/userprog ,进行make—build ,然后输入创建磁盘及对其进行
分区的指令, 初始化磁盘后复制,将可执行文件 elf 装入 disk
pintos-mkdisk filesys.dsk 2
pintos -f –q
pintos -p ../../examples/echo -a echo -- -q
pintos -q run echo x
第 1 页 共 23 页
2.Pintos 的用户程序处理中存在的问题
当系统需要执行一个文件时,就必须先对执行过程的需要的参数进行传递。比如用哪种
模式运行,需要用到的文件名称与路径是什么。用一个数组来进行存储,并且把名字和参数
分开处理。传递参数时,把堆栈里的参数地址存放在一个新的数组里,以备后用。然后执行
字对齐,分别把参数地址、参数的个数、返回地址压栈。
系统调用是由系统提供的一组完成底层操作的函数集合,由用户程序通过中断调用,系
统根据中断向量表和中断服务号确定函数调用,调用相应的函数完成相应的服务。
此外还有没有内部同步,并行的访问会互相影响,需要用到同步来保证同一时间只有一
个进程能访问文件系统代码。一个文件系统被用了多次后会产生大量外部碎片。当操作系统
准备运行某一个程序,而这个程序在磁盘上保存的程序代码被修改,则操作系统在运行是,
可能会出现异常结果等问题
五、实验总结
对于这么大而复杂的工程,着实无从下手,难度太大,需要修改的文档和函数非常多基
本都是借鉴参考,还是有大量问题没有解决,自己的代码编写能力必须加强,通过不断学习
改进提高动手能力,争取以后自己完成项目
第 2 页 共 23 页
项目 2 文档
10122510325
修阳
第 3 页 共 23 页
1. 需求分析(Pintos 中存在的问题 )
使得程序能够通过系统调用来与操作系统交互。当用户程序想要用一些内核的功能时,
需要用到系统调用。现在只是实现了输出一段消息并且终止用户程序,需要更改代码来实现
系统调用所需要的一切。
2.改进的思想及流程
a) 进程终止消息
b) 参数传递
c) 系统调用
d) 实现禁止对可执行文件进行读写
3.实现方法(代码及说明)
a) 进程终止消息
int
process_wait (tid_t child_tid)
{
文档评论(0)