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

上传人:太** 文档编号:86741266 上传时间:2023-04-14 格式:DOCX 页数:24 大小:95.05KB
返回 下载 相关 举报
2023年操作系统实验报告6.docx_第1页
第1页 / 共24页
2023年操作系统实验报告6.docx_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《2023年操作系统实验报告6.docx》由会员分享,可在线阅读,更多相关《2023年操作系统实验报告6.docx(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

22、t ate = KeEnab 1 einterru pts(FALS E)a 关中断ULONG PfnAr ray 2;oM i A11ocateZeroedPages(2, Pf n Ar r ay);OutputFo r mat = New page f r ame numbe r: Ox%X , Ox%Xn ;o f p r int f (StdHandle, Ou t put Format, PfnArrayO, P f nA r ray 1);KdbP r int(O utpu t Fo r mat, PfnA r ray 0 , PfnArray 1);IndexOf Dir En

23、try = (OxEOOOOOOO 2 2);,/ 虚拟地址的高 10 位 是PDE标号(PMMP T E_HA R DWAR E )0 x C0300000)Ind e xOfDirEntr y .P a ge F rameNumbe r = PfnArray0 ;(PMMPTE_ HARDWARE)0xC 0300000)IndexOfDirEn t ry.Vali d =1?V/有效o( P M M P TE _ H ARDWARE)0xC0 3 00 000) IndexOf DirEnt r y .Writ able = 1?/可写MiFlushEn t i r eTlb() ;/

24、刷新快表P a g eTabi eBase = OxCO 000000 + Ind e xOfDirEntr y * PAGE _ SIZE;I ndexOfTableE n t r y = (OxEOOOOOOO 12) & Ox3FF ; (PMMPTE _ HARDWARE ) P a geTableBa se)IndexOfTabl e Entry.PageF rame Num b e r = Pf n A r rayl ;(PMMPT E_HARDWARE ) PageTable Base)Ind exO f Ta ble E n t r y. V alid = 1;。,。( P M

25、MPTE_HARDWARE)PageTableBase)Inde x O f T a b 1 eEntry.Writable = 1; MiFlus h Ent i r e Tl b (); 刷新快表。IndexOfTableEntry = ( OxEOOOlOOO 12) & 0x3FFh ( (PMMP T E_HARDWARE) P a g e Ta b leBas e)Index O f Tab 1 eEnt r y . Pag e F r a m eNumber = PfnArray 1 ;”(PMMPTE_ H ARDWARE )PageTableBase I IndexO f T

26、a bleEntry.Valid =1;( PMMPTE_HARDWAR E)PageTableBase ) IndexOfT a b leEn t ry . Wr i tab 1 e = 1 ; MiFlush E ntireTlb() ;/ 刷新快表OutputFormat = Read Memory OxE0001000: %dn;4p r intf(S t dH a nd 1 er OutputFormat, * ( PINT ) OxE 0 0010 00);KdbPrint (Outpu t Format, *(PINT)0xE00 01000);d*(PINT)0x E00000

27、00) = 100; / 写共享内存of p ri n tf ( StdHandle , OutputFo r mat, *(PIN T)0x E 00010 00 );Kdb P rint(OutputFormat, * (PIN T ) 0 x E0001000);oOutputForma t = nCR3-0x%XnP f nOfP age Direct ory = (ULONG)( P sp S y s tern P ro c es s - Pas-PfnO f PageDirecto r y);of printf (StdHandle , OutputFo r mat, Pf n O

28、f Page D i rectory);KdbPri nt(OutputFormat, PfnOfPageDirectory);for(In d exO f D i rEnt r y = 0 ; I n d e xO f D irEnt r y Valid) g con t inue;, OutputFormat = PDE : 0x%X (0x%X) - 0x%Xn;Virtual Base = (In d exOf DirEnt r y PageFra meNumber);oKdbPrin t ( Ou t putForma t, I ndexOfDirEntry, Vi r t ualB

29、ase ,pPd e - PageFrameNumber);ooPageTabl eBase = (ULONG_PTR) PTE_BASE + IndexO f Di r Ent ry * PAGE_SIZE;。fo r (Inde x Of T abl e Entry = 0; I ndexOfTableEntry Valid)。 。 co ntinu e;OutputForma t = ttPTE: 0x%X (0x%X ) - 0x%Xn;dV i rtual Base = (I ndexOfDi r E nt r y PDI _ SH I FT ) | (Inde xOfTableEn

30、try PageFrameNumber);Kd b Print ( O u tputFormat, IndexOfTableEntr y, Vi r tualBase , pP t e-PageFrameNumber );,OutputFo r mat = nP h y s ic a 1 Page Total: %d nofprintf(Std Hand 1 e , OutputForma t, Pag eTotal);KdbP r int ( O u tput F ormat, Page Tot al);Ou t pu t F ormat = P h y si c a 1 Memory To

31、tal: %dn n;f p r i n tf(St d H andle, Ou t pu t Form at, P ag e To t a 1* P AGE _SIZE);KdbPr i nt(OutputFormat, Pa geTotal * PAG E_SI ZE );OutputForma t = nNonuse d Page Cou nt: %dn;ofprintf ( Std Han d le, Outpu tFor mat, MiGetA nyPag e C ount();oKdbPrint(Ou t pu t Forma t, MiGe t AnyPag eCo unt();

32、IndexO f DirE nt r y = (OxEOOOOOOO 22); / 虚拟地址的高 10 位是PDE标号PageT a bl e Ba se = OxCOOOOOOO + Ind e xO f Dir Ent r y * PAGE_S IZE;。IndexO fTable E n t ry = (0 x EO 0 000 0 0 1 2 ) & 0x3 FF?( ( PMMPTE_ HARDWARE) Page TableBase ) IndexOfTableEnt r y.Valid =0;IndexOfTableEntry = (0xE00010 0 0 12) & Ox3F

33、F; (PMMPTE_ HARDWARE) Pa g e T abl e Bas e )Ind e xOH a b 1 eEntry .Vali d = 0;(PMM PTE_HA RDWARE )0xC0300000)Ind exOfDir E nt r y . Vai i d =0;MiFlush E nt i reTib();MiF r eePages(2 , P f nArray);Ou t p utForma t = nNonused Page Coun t : %d n;fp r in t f ( Std Han die , Ou t putForm a t, M i Ge t A

34、nyPageCou n t ();KdbPrint(OutputFormat r MiGetAny PageCount();oKeEnablelnte r r up t s (IntS t ate ); / 开中断 三.实验问题内容及解答思考页式存储管理机制的优缺陷。优点:1 .虚存量大,适合多道程序运营,用户不必紧张内存不够的调度操作,动态页式管理提 供反了内存与外存图图统一管理的虚存实现方式。2 .内存运用率高,不常用的页面尽量不留在内存。3 .不规定作业连续存放,有效的解决了内存碎片问题。缺陷:1 .要进行页面中断,缺页中断等解决,系统开销较大;2 .有也许产生抖动现象;3 .地址变换机

35、构复杂,一般采用硬件实现,增长了机器成本。实验心得与体会通过操作系统实验,了解了操作系统的启动过程,运营方式,加深了对计算 机操作系统的理解。实验一一.实验目的Q)熟悉操作系统集成实验环境OS La b的基本使用方法。(2 )练习编译、调试E OS操作系统内核以及EOS应用程序。二.实验内容(1)启动OS Lab;(2)学习。S Lab的基本使用方法:练习使用OS La b编写一个Windows控制台应用程 序,熟悉0 S La b的基本使用方法(重要涉及新建项目、生成项目、调试项目等); (3)EOS内核项目的生成和调试:对EOS内核项目的各种操作(涉及新建、生成和各种 调试功能等)与对Wi

36、n d ows控制台项目的操作是完全一致的;(4)EOS应用程序项目的生成和调试;(5 )退出OS Lab 。三 .实验内容问题及解答)练习使用单步调试功能(逐过程、逐语句),体会在哪些情况下应当使用“逐过程调 试,在哪些情况下应当使用“逐语句调试。练习使用各种调试工具(涉及“监视”窗口、“调用堆栈”窗口等)。答:逐语句,就是每次执行一行语句,假如碰到函数调用,它就会进入到函数里 面。而逐过程,碰到函数时,不进入函数,把函数调用当成一条语句执行。因此,在需要进入函数体时用逐语句调试,而不需要进入函数体时用逐过程调试。2)思考生成EOS SDK文献夹的目的和作用。查看EOS SDK文献夹中的内容

37、,明白文 献夹的组织结构和各个文献的来源和作用。查看EOS应用程序包含了 SD K文献夹中的哪 些头文献,是如何包含的?答:EOS SDK是为应用程序调用系统API提供服务,可作为用户编程中可使用的工具包集合。EOS SDK文献夹重要涉及I NC头文献、L I B文献夹 导入库文献和BIN文献夹 动态链接库,可执行程序,二进制文献。EOS SDK包含的头文献有:eos.h负责导出API函数声明;eosdef.h负责 导出函数类型的定义;er r or. h负责导犯错误码。四 .实验过程.新建W indows控制台应用程序生成项目:执行项目:调试项目:int Func (int n); / 声明

38、Fuac函数int n = 0, n = Func (10);Drintf (Hullo Wcrld!nv):1 .使用断点终端执行:查看 EOS SDK( S oftw a re Deve 1 opment Kit)文献夹:修改EOS应用程序项目名称COMSOLE-l (Press Ctrl+F1FR tn switch console uindnu.) Uclcome to EOS shell lRirtQHi3 R: 71uADV.exe五 .实验心得这次是验证性实验,具体环节和操作方法都是与实验教程参考书上一致,实验 很顺利,实验过程没有碰到困难。通过这次实验,我掌握了 OS Lab启

39、动和退 出操作;练习使用OS Lab编写一个Windows控制台应用程序,熟悉OS Lab的基本使用方法新建项目、生成项目、调试项目等。实验2操作系统的启动-实验目的L跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。2.直看E OS启动后的状态和行为,理解操作系统启动后的工作方式。二.实验内容1 .调试E OS操作系统的启动过程。2 .调试加载程序。L oader程序的重要任务是将操作系统内核(kern e I. d H文献)加载 到内存中,然后让CPU进入保护模式并且启用分页机制,最后进入操作系统内核开始执行 (跳转到kerne l.dll的入口点执行13 .调

40、试内核。4 . E OS启动后的状态和行为。查看EOS的版本号:1)在控制台中输入命令ver后按回车。2)输出EOS版本后的控制台如下图所示。5查看有应用程序运营时进程和线程的信息:1)待EOS启动完毕,在E OS控制台中输入命令he 1 Io”后按回车。此时Hello.exe应用程序就开始执行。2 )迅速按Ctrl + F 2切换到控制台2,并输入命令pt后按回车。输出的迸程和线程信息如下图所示三.实睑内容问题及解答1.为什么EO S操作系统从软盘启动时要使用boot.bi n和loade r .bin两个程序?使用一个可以吗?它们各自的重要功能是什么?假如将1 oa d er.b i n的

41、功能移动到b。t.bin文献中,则boot. bin文献的大小是否仍然能保持小于512字节?在IDE环境启动执行EOS操作系统时,会将b oo t . b i n、Io a d e r. bin和k erne I . d I I三个二进制写入软盘镜像文献中,然后让虚拟机来执行软盘中的EOS操作系统。a仅 使用其中一个是不能运营的。2,软盘引导扇区加教完毕后内存中有两个用户可用的区域,为什么软盘引导扇区程序选择将loader. bin加载到第一个可用区域的0 xlOOO处呢?这样做有什么好处?这样做会对1oade r . b i n文献的大小有哪些限制。一方面用户只用两个可用区域,加载位置非此即

42、彼。第一个可用用户区是低地址区,且 空间大小比较小,适合容纳小文献,所以我们选择将占用空I oder.bi加载到第一用户 区。优点:由低地址开始,便于检索查找。小文献占用小空间,节约资源。限制:I o a de r . b i n文献必须小于1 cOO k .3.练习使用Bochs单步调试BIOS程序、软盘引导扇区程序和1 oad e卷序,加深对操 作系统启动过程的理解。实验3进程的创建-实验目的练习使用EOS API函数Create P rocess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。一. 调试跟踪Cr e ateP rocess函数的执行过程,了解进程的创建过程,理解进

43、程是资源分派的单位。二.实验内容1 .准备实验.启动OS Lab。2练习使用控制台命令创建E OS应用程序的进程3 .练习通过编程的方式让应用程序创建另一个应用程序的进程4 .调试 C r eateProcess 函数5 .调试P s CreateProces s 函数”。6 .练习通过编程的方式创建应用程序的多个进程.实验内容问题及解答1 .在源代码文献NewTwoProc.c提供的源代码基础上进行修改,规定使用hello.exe同时创建10个进程。使用PR0CESSJNF0RMATI0N类型定义一个有10个元素的数组,每一个元素相应一 个进程。2 .学习本书第5章中的5,2节,了解关于线程的相关知识,然后尝试调试PspCreateTh r ead函数,观测线程控制块(TCB)初始化的过程。3 .在 PsC r eateProc e s s 函数中调用了 Psp C re a t e Process E n v i ronm e nt 函数后又先后调用了 PspL oadPro ces s Image 和 PspCreat eThr e ad 函数学习这些函数的重要功能。可以互换这些函数被调用的顺序吗?思考其中的因素。PspC reat e P r o cess E n v i ro

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁