2023年操作系统实验报告6.docx





《2023年操作系统实验报告6.docx》由会员分享,可在线阅读,更多相关《2023年操作系统实验报告6.docx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、华北电力大学实验报告实验名称操作系统实验课程名称 操作系统综合实验专业班级:学 号:指导教师:学生姓名:成 绩:实验日期:的线程也应当可以被挂起并被恢复,读者可以参考第节中的内容以及图5 - 5来完毕 此项改善。注意要设计一些方案对所修改的代码进行全面的测试,保证所做的改善是对的的。假如完毕了以上改善,请思考一下控制台命令pt需要进行哪些相应的修改?设计代码STATUSPsRe s u m Thr e ad(4N HANDLE h Thr e ad。)(STATU S St a t u s ;B OOL In t State; oPTHREAD Thread:S tatus = ObR e f
2、 0 bject B yHandle (hThre a d , P sp T hrea d T ype, (PVOID*) &T h read);if(EOS.SU CCESS ( Sta t us) ) 。I n t Slate = KeEnab 1 e I nt e rru p t s (FA L SE) ; / / 关中断A f (Z e ro = T h readState)“ Li s tR e moveEntr y (&Thread- S t ateL i stEnt r y);。 P spR e ady T hread ( T hread);。gPspT h readS c he
3、du 1 e();。S ta t us = STATUS_S UCCESS; o else 。Status = S T A TUS_ N 0T_ S UPPOR T ED;)KeEnab 1 elnt e r r up t s(I n tS t a te)?/ 开中断oObD e r e f Object ( T h read);)o r et u rn Statu s ;)实验5进程的同步实验目的和规定.使用EOS的信号量,编程解决生产者一消费者问题,理解进程同步的意义。2.通过为线程增长挂起状态,加深对线程状态的理解。1 .调试跟踪EOS信号量的工作过程,理解进程同步的原理。2 .修改EO
4、S的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步 的原理。二.实验内容及环节.实验准备1)启动 OS Lab。2 )新建一个EOS Kernel项目。3)生成EOS Kerne 1项目,从而在该项目文献夹中生成S DK文献夹。4)新建一个EO S应用程序项目。5 )使用在第3步生成的SDK文献夹覆盖E OS应用程序项目文献夹中的S DK文献 夹。2.使用E OS的信号量解决生产者消费者问题1)使用P文献中的源代码港换之前创建的EOS应用程序项目中EOSApp.c文献内的 源代码。2)按F 7生成修改后的EOS应用程序项目。3)按F5启动调试。OS Lab会一方面弹出一个调
5、试异常对话框。4 )在调试异常对话框中选择否“,继续执行。5)立即激活虚拟机窗口查看生产者消费者同步执行的过程,如图16)待应用程序执行完毕后,结束本次调试。CONSOLE-1 (Press Ctr1+F1F8 to switch console window.)Meleone to EOS shellAutorun A AEOSApp.exeProducea 0Consumea0Producea 1Producea ZProducea 3Producea 4Consumea1Producea 5Producea 6Producea 7Producea 8ConsumeazProducea 9
6、Producea 10Producea 11Producea 12Consumea3Producea 13Consumea4Producea 14113调试EOS信号量的工作过程.1 .创建信号量:信号量结构体(S E M A PHO R E)中的各个成员变量是由API函数 C r e a teS e m叩h o re的相应参数初始化的,查看main函数中创建Emp t y和Full 信号量使用的参数有哪些不同,又有哪些相同,思考其中的因素。2 .等待、释放信号量1)等待信号量(不阻塞):生产者和消费者刚开始执行时,用来放产品的缓冲区都 是空的,所以生产者在第一次调用Wait For S i
7、ngleObj ect函数等待Empty信号 量时,应当不需要阻塞就可以立即返回2)释放信号量(不唤醒):生产者线程通过等待Empty信号量使空缓冲区数量减 少了 1,通过释放Ful 1信号量使满缓冲区数量增长了 1,这样就表达生产者线程生产 了一个产品并占用了一个缓冲区。3)等待信号量(阻塞):由于开始时生产者线程生产产品的速度较快,而消费者线程消费 产品的速度较慢,所以当缓冲池中所有的缓冲区都被产品占用时,生产者在生产新的产品时 就会被阻塞.4 )释放信号量(唤醒):只有当消费者线程从缓冲池中消费了一个产品,从而产生一 个空缓冲区后,生产者线程才会被唤醒并继续生产14号产品.4.修改E O
8、S的信号量算法1)规定:在目前 EOS Ke rne 1 项目的 p s/sema pho re. c 文献中,PsW a it F o r Sema phore 函数的 M i llisec onds 参数只能是 INFINIT E , PsRelea s eS e m叩hore函数的Rei easeCount参数只能是1。现在规定同时修改PsW a itFo r Sem叩hore函数和P s Relea seSema phore函数中的代码,使这两个参数可以真 正起到作用,使信号量对象支持等待超时唤醒功能和批量释放功能。2 )测试:a.使用修改完毕的EOS Ker nel项目生成完全版本的
9、SDK文献夹,并覆盖之前 的生产者消费者应用程序项目的S DK文献夹。b.按F5调试执行原有的生产者消费者应用程序项目,结果必须仍然与图1 一致。假 如有错误,可以调试内核代码来查找错误,然后在内核项目中修改,并反复环节a。实验六时间片轮转调度一 .实验目的及规定1 .调试EOS的线程调度程序,熟悉基于优先级的抢先式调度。2 .为EOS添加时间片轮转调度,了解其它常用的调度算法。二 .实验内容及环节1 .准备实验2 .阅读控制台命令rr”相关的源代码3 .调试线程调度程序a)调试当前线程不被抢先的情况b)调试当前线程被抢先的情况=.为EOS添加时间片轮转调度a )规定:修改p s/sched.
10、c文献中的PspRoundRobin函数(第337行),在其中 实现时间片轮转调度算法。b)测试:三 .实验内容问题及解答修改线程时间片的大小:在成功为E OS添加了时间片轮转调度后,将ps / psp.h第10 4行定义的TICKS. 0尸尸1/_51的值修改为1。在EOS控制台中输入命令rr后按回车。观测执行 的效果。还可以按照上面的环节为TICKS_OF_TIME _SLICE取一些其它的极 端值,例如20或100等,分别观测rr”命令执行的效果。通过度析导致执行效果 不同的因素,理解时间片的大小对时间片轮转调度导致的影响。a) TICKS_OF_TIM E _ SUCE 的值为 1。O
11、S Lab PC - Microsoft Virtual PC 2007I Action_Edit_CD_Floppy_Help-CONSOLE-1 (Press Ctrl+F1F8 to switch console uindow.Thread0 (8):22238Thread1 (8):ZZ181ThreadZ (8):ZZ157Thread3 (8):22294Thread4 (8):Z1706Thread5 (8):ZZ393Thread6 (8):22573Thread? (8):Z1871Thread8 (8):22394Thread9 (8):22540Thread10 (8):
12、Z1858Thread11 (8):Z2176Thread1Z (8):22240Thread13 (8):22297Thread14 (8):Z253ZThread15 (8):21618Thread16 (8):22409Thread17 (8):22407Thread18 (8):22436Thread19 (8):2187522b) TICKS _OF_TIME_SL ICE 的值为 2 0-YCONSOLE-1(Press Ctr1+F1F8 to switch console window.Thread 0(8): ZZ480Thread 1(8): 22819Thread Z(8
13、): Z3356Thread 3(8): Z3117Thread 4(8): 22749Thread 5(8): 21021Thread 6(8): 2244sThread 7C8): ZZZ97Thread 8(8): 23403Thread 9C8): 22612Thread 10(8): Z3757Thread 11(8): ZZZ76Thread 12(8): 21966Thread 13(8): 20924Thread 14(8): Z0550Thread 15(8): ZZ111Thread 16(8): 20848Thread 17(8): Z09Z0Thread 18(8):
14、21869Thread 19(8): 20701-Microsoft Virtual PC 2007:ion Edit CD Floppy Helpc) TICKS_OFJ工 ME_SLICE 的值为 100$ OS Lab PC- Microsoft Virtual PC 2007I Action Edit CD Floppy HelpCONSOLE-1 (Press Ctrl*FlF8 to switch console window.)Thread 0 (8): 21992Thread 1 (8): 22242Thread 2 (8): 22530Thread 3 (8): ZZ073T
15、hread 4 (8): 22124Thread 5 (8): 21815Thread 6 (8): 21308Thread 7 (8): 22443Thread 8 (8): 22279Thread 9 (8): 21856Thread 10 (8): 22304Thread 11 (8): 21989Thread 12 (8): 21740Thread 13 (8): 22471Thread 14 (8): 2Z053Thread 15 (8): 21952Thread 16 (8): 22166Thread 17 (8): 2Z133Thread 18 (8): 22247Thread
16、19 (8): 2247411实验七物理存储器与进程逻辑地址空间的管理-实验目的及规定1 .使用EO S的信号量,编程解决生产者一消费者问题,理解进程同步的意义。2 .通过为线程增长挂起状态,加深对线程状态的理解。2 .调试跟踪EOS信号量的工作过程,理解进程同步的原理。3 .修改EOS的信号量算法,使之支持等待超时唤醒功能(有限等待),加深理解进程同步的原理。二.实验内容及环节(1)、准备实验(2)、执行控制台命令pm”,查看物理存储器的信息(3)、分派物理页和释放物理页:a.在pm命令函数中添加分派物理页和释放物理页的代码b.单步调试分派物理页和释放物理页(4)、执行控制台命令vm”,直看
17、系统进程的虚拟地址描述符信息执行控制台命令vm,查看当创建了一个应用程序进程后,系统进程和应用程 序进程中虚拟地址描述符的信息(5)、在系统进程中分派虚拟页和释放虚拟页(6)、在应用程序进程中分派虚拟页和释放虚拟页(7)、结束实验.实现代码及其说明:INT *d;if(d = Virt ualAllo c(O,si z eof(i nt) , MEM_R ESER VE|MEM_ COMM IT)/调用API函数V i r t ua 1A1 loc,分派一个整型变量所需的空间,并使用一 介整型变量的指针指向这个空间printf ( Allocated %d by t es virtual me
18、mory of 0x%xnnfs izeo f (in t ),d);p r in t f (vi r t ual memory origin a 1 v a I u e: 0 x%x n n,*d);*d = OxFFFFFFFF;/ 修改整型变量的值为OxFFF F FFFFpr i nt f (vir t u a I memory n e w val u e:0x%xnn, * d );printf(n Wait for 10 s eco n d s n );S leep( 10000);/调用AP工函数S1 eep,等待10秒钟。if(Vir t ua 1 F ree(dr0,M E
19、M_R E L E A S E )/ 调用 API 函数 Vir t ua 1 Free,释放之前分派的整型变量的空间print f ( n Real ease virt ual memory s u c c ess!n );e 1 sep rintf(re a lease errorn );print f (nEndless 1 oop!);for (;);)e 1 s e(printf ( er r o r n );retu r n -l;g不能成功分派,打印出e rror ,返回-1.)printf(H ello world!n);re t u rn 0 ;.心得体会本次实验重要问题在于
20、如何解决异常情况,也就是程序的健壮性。最开始调试结果不对 的,在老师指导下进行了分步调试,修改了部分代码,最后成功了。最大的收获是:纯熟对 代码分步调试,找犯错误。实验八分页存储器管理一.实验目的与规定1 .学习i386解决器的二级页表硬件机制,理解分页存储器管理原理。2 .查看EOS应用程序进程和系统进程的二级页表映射信息,理解页目录和页表的管 理方式。3 .编程修改页目录和页表的映射关系,理解分页地址变换原理。二.实验环节与代码:设计代码PRIVAT EVOIDCo nso 1 eCmdMemoryM a p(IN HANDLE StdHandle)oBOOL I n tStat e ;o
21、ULONG PfnOfPageDirecto ry;dU LONG PageT ota I = 0;olILONG Ind exOfD i r En t ry;ULONG I ndex Of T a bleEn t ry;PMMPT E_HA R DWARE pPde;PMMPTE_HARDWARE pP t e;oULONG.PTR Pag eTableBase;ULONG PTRVirtualBase;c ons t char* OutputFormat = NU L L;。 ASSERT (P s pCurrent Pro cess = PspSyst emProces s);4ntS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 操作系统 实验 报告

限制150内