os实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北电力大学
实验报告
|
|
实验名称 EOS操作系统实验
课程名称操作系统
|
|
专业班级:网络1202 学生姓名:李忠明
学号:************ 成绩:
指导教师:王德文实验日期:
2.2生成项目
2.3执行项目
在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的2. 在“调试”菜单中选择“启动调试”,Windows
3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,
调试命令
2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,其中
表示IP寄存器的值为0xfff0。

3. 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。

在物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。

查看EOS启动后的进程和线程的信息:
1)在控制台中输入命令“pt”后按回车。

2)输出的进程和线程信息如下图所示
6. 查看有应用程序运行时进程和线程的信息:
1)待 EOS启动完毕,在EOS控制台中输入命令“hello”后按回车。

此时
Hello.exe应用程序就开始执行。

2)迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。

输出的进程和线程信息如下图所示
四、实验总结
通过本次试验,对操作系统的启动有了一定了解,对后面的实验有了最基本的认识,实验过程中只要对照课本就可以很好地完成,需要细心操作。

实验三进程的创建
一、实验目的及要求
练习使用EOS API函数CreateProcess创建进程,掌握创建进程的方法,理解程序和进程的区别,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源的分配单位。

二、所用仪器、设备
OS Lab实验环境
三、实验原理
四、实验方法与步骤
1.启动OS Lab、新建一个EOS Kernel项目,用debug和release模式分别生成项目,新
建EOS应用程序项目;
2.练习使用控制台命令创建EOS应用程序的进程
3.调试CreateProcess函数
4.调试PsCreateProcess函数
5.练习通过编程的方式创建应用程序的多个进程去
在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建5个进程。

五、实验总结
通过本实验,对进程的创建过程及组成有了很好地认识,虽然实验不是很困难,但是仍需要自己认真操作。

实验四线程的状态和转换
一、实验目的
调试线程在各种状态间的转换过程,熟悉线程的状态和转换。

通过为线程增加挂起状态,加深对线程状态的理解。

二、实验器材
OS Lab实验环境
三。

、实验原理
三,实验内容
1、线程由阻塞状态进入就绪状态。

2、线程由运行状态进入就绪状态。

3、线程由就绪状态进入运行状态。

4、线程由运行状态进入阻塞状态。

5、为进程增加挂起状态
EOS已经实现了一个suspend命令,其命令函数为ConsoleCmdSuspendThread。

在这个命令中调用了Suspend原语。

Suspend原语可以将一个处于就绪状态的线程挂起。

以loop线程为例,当使用suspend 命令将其挂起时,loop线程的执行计数就会停止增长。

EOS已经实现了一个resume命令,其命令函数为ConsoleCmdResumeThread。

在这个命令中调用了Resume原语。

Resume原语可以将一个被Suspend原语挂起的线程(处于静止就绪状态)恢复为就绪状态。

但是PsResumThread函数中的这部分代码还没有实现,要求读者在这个练习中完成这部分代码。

四、实验结果
增加代码后:
实验五进程的同步
一、实验目的
使用EOS的信号量,编程解决生产者—消费者问题,理解进程同步的意义。

调试跟踪EOS信号量的工作过程,理解进程同步的原理。

修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。

二、实验器材
OS Lab实验环境
三、实验内容
1、使用EOS的信号量解决生产者-消费者问题
在本实验文件夹中,提供了使用EOS的信号量解决生产者-消费者问题的参考源代码文件pc.c。

使用OS Lab打开此文件(将文件拖动到OS Lab窗口中释放即可打开),仔细阅读此文件中的源代码和注释。

思考在两个线程函数(Producer和Consumer)中,哪些是临界资源?哪些代码是临界区?哪些代码是进入临界区?哪些代码是退出临界区?进入临界区和退出临界区的代码是否成对出现?
2、调试EOS信号量的工作过程
创建信号量,等待信号量(不阻塞),释放信号量(不唤醒/唤醒),等待信号量(阻塞)
3、修改EOS信号量算法
在目前EOS Kernel项目的ps/semaphore.c文件中,PsWaitForSemaphore函数的Milliseconds参数只能是INFINITE,PsReleaseSemaphore函数的ReleaseCount参数只能是1。

现在要求同时修改PsWaitForSemaphore函数和PsReleaseSemaphore函数中的代码,使这两个参数能够真正起到作用,使信号量对象支持等待超时唤醒功能和批量释放功能。

修改后:
if (Semaphore->Count>0){
Semaphore->Count--;
修改ps/sched.c文件中的PspRoundRobin函数(第337行),在其中实现时间片轮转调度算法。

实验八分页存储器管理。

相关文档
最新文档