- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验报告
专业名称:
学生年级:
软件工程
2018 级本科
指导教师:
课程性质:
专业必修
研修时间:
2019~2020
学年第
1 学期
实验地点:
软件学院
2020年 1月 1日
Pintos 实验统计
请自评你的项目完成情况,在表中相应位置划√。
Pintos Project1
内容 完成情况
完成
基本
完成
还有很多
圆满
完成
大部分
没完成
1.
消除忙等
√
2.
优先级调度
√
3.
高级调度
√
Pintos Project2
内容 完成情 完成 基本 完成 还有很多
2
况
圆满
完成
大部分
没完成
1.
进程终止
√
的终端提示
2.
参数传递
√
3.
系统调用
√
运行文件 √ 禁止写操作
目 录
摘 要 4
基础实践 1 6
基础实践 2 7
Pintos 项目 1 10
Pintos 项目 2 79
3
摘 要
4
5
基础实践 1
一、目的
掌握虚拟机安装方法
掌握 Linux 的基本使用方法
掌握 Pintos 的安装方法
掌握 Pintos 的编译、跟踪及动态调试方法
二、内容与设计思想
1、下载软件 Vitualbox 及虚拟机映像文件
2、安装虚拟机
3、熟悉 Linux 的基本命令和使用方法
4、学会使用 Linux 系统的常用命令
5、学会 Pintos 的编译、跟踪及动态调试方法
三、使用环境
Ubuntu 10.04, Pintos,C 语言
四、实验过程与分析、调试过程
下载 Oracle VM VirtualBox ,下载虚拟机映像文件,安装虚拟机
2.
安装 pintos:在官网下载 bochs,bochs-2.6.7.tar.gz,下载 pintos,pinots.tar.gz,移动到虚拟机中,执行 tar zxvf bochs-2.6.7.tar.gz,执行 tar zcvf pintos.tar.gz
更新一些脚本, $ sudo apt-get install buid-essential
$ sudo apt-get install xorg-dev
$ sudo apt-get install bison
$ sudo apt-get install libgtk2.0-dev
$ sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386 libstdc++5:i386 libstdc++6:i386
$ sudo apt-get install libncurses5:i386
$ sudo apt-get install g++-multilib
安装 bochs: cd bochs-2.6.7 ./configure –enable-gdb-stud make sudo make
install
安装和运行 pintos: tar zxvf pintos2011.tar.gz cd pintos/src/tjreads make cd
build ../../utils/pintos –rum alarm-multiple
五、实验总结
实验的开端,安装,配置环境。
六、附录
6
基础实践 2
7
一、目的
巩固 Ubutu 系统命令;
通过例程了解进程、线程的创建及主要函数的使用方法;
掌握用户程序的编辑、编译、调试程序的方法;
学会利用 gdb 跟踪程序的方法;
了解 Pintos 工程的结构,学会 Pintos 的跟踪方法。
二、内容与设计思想
1、编辑几个例程,了解进程、线程的创建及主要函数的使用方法。
2、利用 gdb 对上述的进程、线程的基本例程进行调试和跟踪,学会断点设置和取消方法,学会在断点处观察变量的方法。
3、了解 Pintos 工程的结构,学会 Pintos 的编译、运行及跟踪方法。
三、使用环境
Ubuntu 12,Pinos,gedit 或 vi ,gdb
四、实验过程与分析、调试过程
1. tid_t
thread_create (const char *name, int priority,
thread_func *function, void *aux)
{
struct thread *t;
struct kernel_thread_frame *kf;
struct switch_entry_frame *ef;
struct switch_threads_frame *sf;
tid_t tid;
enum intr_level old_level;
ASSERT (function != NULL);
/* Allocate thread. */
t = palloc_get_page (PAL_ZE
文档评论(0)