- 317
- 0
- 约 20页
- 2017-08-18 发布于浙江
- 举报
系统调用实习报告
目录
一:总体概述 3
二:任务完成情况 3
任务完成列表(Y/N) 3
具体Exercise的完成情况 3
三:遇到的困难以及解决方法 18
四:收获及感想 19
五:对课程的意见和建议 19
六:参考文献 19
一:总体概述
自lab4我们完成了虚拟内存的实习,可以运行用户程序之后,我们就考虑加入系统调用。即,用户程序可以通过特定的系统调用,陷入Nachos内核从而完成特定的目标本次需要在阅读和理解源码的基础上知道系统调用的执行流程进一步修增源代码实现新增的系统调用功能
二:任务完成情况
任务完成列表(Y/N)
Exercise1 Exercise2 Exercise3 Exercise4 Exercise5 Yes Yes Yes Yes Yes
具体Exercise的完成情况
Exercise 1:源代码阅读任务
Syscall.h
概述:
定义了每个系统调用对应的系统调用号
声明了每个系统调用
Exception.cc
概述
从
执行对应的操作代码需要自己完成
(如果需要将返回值写回Machine的
Start.s
概述为例
总结
在用户程序中调用
当这条语句被neInstruction函数解析执行
在start.s中找到系统调用对应的入口将系统调用号放入ception.cc
在
必要时将返回值写回
指令回到用户程序系统调用的下一条继续执行系统调用完成
为了执行一条系统调用我们需要完成的部分
自己写一个用于测试的用户程序的c文件并修改file,使得用户程序能够被系统执行
因为本次.h中系统调用号和函数声明也都写好了
补充ercise 2: 系统调用实现
任务
Exercise 3: 编写用户程序
任务EX2+EX3完成情况:
首先在完成了文件系统的file,多
其次我们需要在
void Create(char *name)
概述
从4号寄存器读入文件名指针
利用指针从Machine的
用文件名为参数
将PC前移:(machine.cc中定义)
代码
测试截图
之后在
OpenFileId Open(char *name)
概述
从4号寄存器读入文件名指针
利用指针从Machine的
用文件名为参数File指针在系统中File相当于是文件描述符
将OpenFile指针写回-WriteRegister(2,(int)openfile))
PC前移
代码file写回部分
测试截图pen成功会配合的系统调用再进行测试截图)
void Close(OpenFileId id)
概述
从4号寄存器中读出OpenFile的指针调用lose方法将
PC前移
代码指针关闭
测试截图配合
int Read(char *buffer, int size, OpenFileId id)
概述
从
从
从penFile的指针
调用penfile的
将读出来的内容写回achine的
将openfile的
代码
测试截图
(见write部分,二者配合测试。)
void Write(char *buffer, int size, OpenFileId id)
概述
从
从
从penFile的指针
将读出来的内容enFile的write方法写入文件当中
代码
测试截图
单独测试
配合
Exercise 4: 系统调用实现
Exercise 5: 编写用户程序
任务
EX4+EX5完成情况
首先为了能够使得
SpaceId Exec(char *name))
概述:
从
新创建一个线程在当前线程的
如果没有空位,输出错误信息,将PC前移。
Fork执行的代码参照gtest中startprocess函数先是打开这个用户程序文件然后新创建一个地址空间初始化
代码
Fork之后调用的函数
处理系统调用的代码
测试截图
(和之后的
int Join(SpaceId id)
概述
从4号寄存器中读出要等待的子线程的OpenFile指针
找到自己的
While循环当
跳出while循环后,将子线程的结束状态写入2号寄存器,PC前移
代码
测试截图
(配合一起测
void Exit(int status)
概述
由于lab4虚拟内存中需要在
判断如果当前并且调用如果是主线程PC前移测试截图
(配合之前的ec和
测试函数
测试截图
void Fork(void (*func)())
概述
从新创建一个线程并参照
PC前移。
在tPC值修改为4;将修改完成的这套寄存器值存放到新线程的寄存器当中其中除了两个
Machine-Run(),就可以跳转到用户函数执行了注意
开始时刻子进程和父进程的寄存器值
子进程和父进程使用同样的
子进程和父进程共享栈空间因此子进程不必重设栈空间
代码
您可能关注的文档
- [陕西]高层住宅楼工程监理投标书(技术标和商务标).doc
- “三严三实和忠诚干净担当”专题活动的心得体会.doc
- 201x年住院部护理工作总结.doc
- 2014大学生暑期“三下乡”实践总结报告.doc
- 2015.1.30_新规范监理用表.doc
- 2015年销售合同.doc
- CG设计基础项目实习报告格式模板v1.0.doc
- Nachos同步机制实习报告.doc
- Nachos文件系统实习报告.doc
- Nachos虚拟内存机制实习报告.doc
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
原创力文档

文档评论(0)