版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、操作系统课程设计实验报告成绩:姓名沈XX 夏XX 江XX学号130558051305580713055816班级13052314专业计算机科学与技 术课程名称操作系统课程设计任课老 师指导老 师实验序 号1实验名 称进程调度管理实验时 间18年10月实验地点八、1教南1楼一、题目说明(1)用C语言完成线程的创建和撤消,并按先来先服务方式对 多个线程进行调度。(2)将线程调度算法修改为时间片轮转算法,实现时间片轮转 调度。(也可以结合优先权,实现优先权加时间片轮转算法的线程调 度。)(3)改变时间片的大小,观察结果的变化。思考:为什么时间 片不能太小或太大。(4)假设两个线程共用同一软件资源(如
2、某一变量,或某一数 据结构),请用记录型信号量来实现对它的互斥访问。(5)假设有两个线程共享一个可存放5个整数的缓冲,其中一 个线程不停地计算1至5 0的平方,并将结果放入缓冲中,另一个 线程不断地从缓冲中取出结果,并将它们打印出来,请用记录型信 号量实现这一生产者和消费者的同步问题。(6) 实现消息缓冲通信,并与4、5中的简单通信进行比较。(7) 思考:在线程间进行消息缓冲通信时,若对消息队列的访 问没有满足互斥要求,情况将会怎样?二、设计方案(系统框架)该程序主要是分5大块内容:(1) 线程的创建和撤销,(2) 线程的调度,(3) 线程的同步与互斥,(4) 线程的阻塞与唤醒,(5) 利用消
3、息缓冲队列的线程间的通信。由这五大块功能来完成的基于 DOS的多任务系统的实现。在这 个系统中,首先先由 main函数进行一些初始化工作,然后直接创 建0#线程对应于main函数,再由0#线程调用create创建1#,2# 线程分别对应与函数f1(),f2(),最后将系统的中断服务程序设置 为new_int8,并把控制交给1#线程,启动多个线程的并发执行。0# 线程是一个比较特殊的线程,它在创建的时候没有使用 create来创建,而是在系统初始化后直接创建的,因它对应的程序 段为main函数中的一段,所以也直接使用整个系统的堆栈,而不 再创建时为私有堆栈分配额外的空间;同样,撤销的时也不需要释
4、放私有堆栈的空间,所以也没有over()函数而是直接撤销,从这方 面来看,它是一个系统线程。此外,在启动多个线程并发执行过程后,0#线程将系统控制权转 交出去,直至系统中其他进程都不具备执行条件时,它才有可能重 新得到CPU从这方面看,0#线程相当于是一个空转线程,最后, 0#线程还担负着一个特别的使命:等待系统中所有其他的线程的完 成,此时,它将直接撤销自己并恢复原来的时钟中断服务程序,从 此终止整个多任务系统。三、程序流程图(J岳以汁一起燃肘#列亡型啟尉伯片紅拭门” bUi艸鮒向1补:砂1土CPUi'.Vil Ki:.J r罐止整十去任务勵E输I諏加:ii'.四、实验结果(
5、程序截图)iiii j-r)-' > 1? 州门虹圮愉川 jj a , /)inrji I i_LDOSBox 0.74, Cpu spee<± max 100% cycles, Frames kip 0Program: TC=tota 1 method= Please chose as fo11ou1+Do first in first dore systcm.Z.Do t ime piece Mu It i_task system.3Access to critical resources withoirt cxclusion.4 Access to crit
6、ical resources uith exclusion,5 Pro匚eduuer-ctniiimei' problem uithout synchronism. G .TruLitsliiueiuuiixiLmei- jirub len wi Lli syiiclii'unism.7XonBiunication uith the message queue.8.Shou menu again.O.exlt.F lease Evrttr your ct)oise王界面翅 DO£Boj( 0.74, Cpu speed: max 130% cycles, Frames
7、ki'p Q Program: TCAAAAfiAAAAAAAAftAAAAAAAAftAAAAAAAAftAAAfiAAAAAAAAAAAAAAAAaflAAAAAAAAfiAAAfiAAAAAAAAAA AAAAfiAAAAfiAftfiAfiAAAAAftAfiAfiAAAAftAAAAAfiAAAAAftAAAfiAfifiAfiAfiAAAAAfiflAAAAAfiAAAfiAAA AAAAAAAAAAHftAAAAAAAAAAAAAAAAAAAAAAh1 Thread fl is destroyedBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEBB
8、BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBEBE BBBBBBBBSBBBBBBBBBBB2 Tliredd fZ is destroyedf irst in f irst done systen terminated.Please enter your choisephase Z:Please erter the time length:10time length is 10mAAABBB£BAAAABBBBAAAABBBBAAAABBBAABBBBAAAABBBBAAAABBBBAAAAABBBAAEBBBAAABBmE pABBftABBAABE
9、AABBBAABEAftEEBBAABBAABEAABBAABBAAEBABBhABBfViAEBnABBAABBAABEBAE ABBAABBAflBEAASBAABBAAEBAABEAABBAABBAAABBAABp Thread fZ is destroyed aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa AAAAftAAARAAAAAfiAA1 Thread fl is destroyedTimePiece Multi_task system terminated- Please Eirt
10、Er your cho ise先进先出效果DOSB-ojc 0.74, Cpu speed: max 1-30% cycles, Framesldp Q Programs TCXARR怖BBMIB蹄链EAAEB朋冊朋冊胎BB帕B刖帕乃跆仙乙 Thread fZ is destroyed AAAfiAAAAAAAAAAAAAAAAAAAAAHAAAAAAfiAAfiAAAAAfiAAAAAAAAfiAAAAAAfiAAAfiAAAAAAAAmA HRARHRAHARAfiRAfiRR1 Thread fl is destroyedTimeFiece rfcdt)_task system term
11、inated.Please enter your cho ise3Dhose 3:This time. n-9匚a lieu.lat ing.1 Thread fSCEXEiite n+ 100 times) is destroyedZ Thread fb(EXEiite n+ 1QG times) is destroyedr in ished .Nou n=20QPlease enter yuur choise4rhnsR 4 :rhis time. n=0Da leulat ing * 1 Thread fJCexcute w+ lt)t> times) is destroyed2
12、Thread f4Cexcute n+ 100 times) is destroyedrinlEhed.bfow n=101Please EirtEr' your choise实现线程的并发执行,可设置时间片大小岡 DO£Box0.74, Cpu speed: max 100% eyel&s, Franeskip Q Program! TCXChose 勺:ois time.n=0Calculating h h1 Thread f3(excute n+ 100 times)is destroyedP ThrftAd f4(ftxriite n+ 1(0 timr?s)
13、if: ristrnijpilfinished.Mom n=101Please enter your cho ise 匕Chose 5:1 Tlircad proccduccris destroyedprint tidu!<1).2116(ZJ.2209(3).2304(4).Z4G1(5).2500(6).2116(7).2209(8) .2394(9).24G1(10).2500(11).2116(123,2209(13).Z304(14).2401(15).2500k 16).sue(1?).ZZG9(18). Z3M(13) .2461(20J .2500(Z1).2116(ZZ
14、).ZZG9CZ3).Z304(24) .2401(2511,2500(26) ,2116C271,2209C2R).2304C2<5V24fi1(301(31).2116(3Z).ZZ09(34) .Z461(35),2500(36) .Z116(37).Z269(38J.Z3CHC39) .2401(40).2560pirsiib(4Z)»Z269K3).2JtH(44) .2461K5EZ5GO(46).2116(4?rZZG9(49).Z3GKC49J .2401(50) .25602 Thread conaumcr isdestroyedPlease enter yo
15、ur cho ise实现线程对同一资源的互斥访问FOK(Zl).Zllb (Z6kZ116 (31).2116 (36).2116 (41LZ116(46).2116右.蠢(丹 (Z?r2Z09 (32rZZ09 (37KZZOT (42)-2209 (4?)-22G9Thread consumer Is lease enter your choise(Z8).£3O4(33).Z3H(3R1,?3G4(437-Z3C4 (48)-2301 destroyEd(Z4J.ZW1(29).2401(34)-2401(39).240 (44).2461(49).2401125)(30).2
16、500(35).2500C40).髙的(45).2500(5©) .2500Lhose I print (6).3B(11).121 C16>.256 (21) ,441 iZbJ.ETG 01).961 (36).1296 (41).16811 Thread _procediicerUb)+E116(47 . 2209Z Thread _constimer Please enter your choise6:DDUT(2).4(3).9(4).16(5).25(?K49 tarci (9) .01(13),165(IB J. 321(23).52(33).1609(34),1
17、156(38).1444(33).15Z1(43) . IfW (441is destroyed(ia.23His destroyed(12).144 (17).209 (22).46+V/.71.7Z3 3ZJ.10Z4(37).1363(4?!) .17R4(10).100 (14).196 (19) .361 (243.576 (£9).641(15) ZZ5(E©).400 25J.&25(JOJ.岁DO (35).1ZZ5 (40)4660 (45) ZfiC?5(49).2401(5Q).2500实现生产者和消费者同步问题DOS Box 0.74, Cp
18、u speed: max 100% cycles, Frames kip 0Proaram:_:ender: _ender: ender: endcr ; ender:The The The TTic The:rcr i uep: Thp:ece I ucr: The ;ece I uer: Th巳 "ieceiuer: The ieceiuer: The ender* ender:Ender: Ender: Jender:The The The The ThEressaqe C rtessage ( Message ( Hbssaye ( Message (message mess
19、age message messagetecEiwer: The Eeceiver: THe JfiCRiuRr: Thfi teceiver: The Jeceiver: TheItssagc ( ffessage ( bfessage ( Itssage ( ftessae ( message message mRssage mewwngE messageThis This This nils This hag ' has has has has This This This This This hz has has has hasisEfrubeenbeenbeenbeenisi
20、sisIs 'is 'beenbeenbeenbeenbeenthe the the the the i rpceiuert:( i received:( i received:( i received:( i received:( tlic the the the thei rti匚eLved ;( i received:( i reRfiivRrt : C i received:( i received:(messaqeO mesagel messageZ nESsag匚3 messagedMessagedHEssage6 message? message8 message
21、s)has )has )has 、lias )lias This This This Tii is Tliissss aaas h h hII J Js s s s i "1 ! !ThThThnbeen sent? been sent? been setit ? been sent? been sent!is ths)is tl)e messagel ) is tlie messaged ) is tiie messages ) is the message!) been sent been sent! been sent* been sent* beEn sent*Is the
22、message5 ) is thE message6 ) is thn mRssft(je?7 ) is thE messages ) is t)e mesage )Die message is correctly received? 1 Biread sender is destroyed J Thread receiver is destroyed'lease enter jour choise实现消息缓冲通信五、思考与探索(1) 为什么时间片不能太小或太大答:设置过长的时间片会导致结果和进程在一个时间片内完成任务,从而先进先出算法的效果一样,失去时间片的意,义。设置过短会导致进程
23、切换频繁,CPU勺效率降低(2) 引起调度的原因有哪些?答:弓I起CPU调度的主要原因有:时间片到时、线程执行完毕或正在执行的线程因等待某事件发生而不能继续 执行。(3) 处理中断时控制转移情况答:当中断发生时,系统首先将标志寄存器 Flags的值 压入堆栈,然后将装有被中断程序下一条指令地址的 CS 和IP寄存器的内容也分别压入堆栈,再从中断向量中 获取中断服务程序的入口地址并将它们装入 CS和IP寄 存器,这样,控制就从被中断的程序转向中断服务程序。中断返回时,系统自动从栈顶弹出返址 1的偏移、返址1的段址和Flags并送到IP、CS和Flags寄存器中,CPU就开始继续从断点处执行被中断
24、程序。(4) 为什么创建的时候,线程的 DS和ES都是一样的答:因为线程共用进程的数据段。(5) 函数调度时控制转移情况答:在执行函数调用指令时,系统会自动地先将主调函 数的下一条指令的地址(在 CS:IP中)压入堆栈,然后 把被调函数的入口地址装入 CS和IP寄存器(段内函 数调用只需压入和装配IP ),控制就从主调函数转向被调函数;当执行函数返回指令时,系统将当前堆栈的栈 顶的两个字(主调函数下一条指令的地址) 弹出并送到 IP和CS中(段内函数返回只需弹出一个字送到IP中), 控制就从被调函数返回到主调函数。(6)new_int8(void)函数的作用,以及怎样让它自动地定期 地运行答:
25、该函数要完成的主要工作包括:首先执行老的时 钟中断处理程序的功能;然后判断当前线程的时间片是否 到了,如果到了,且DOS不忙,则保存当前线程的运行环 境,重新选择一个新的就绪线程,恢复其运行现场,使其 在CPU上参加运行。由于该函数必须是自动地定期地运行, 所以我们通过 截取时钟中断(int 08)来完成。在PC机上,有一个定 时器,每当它发一个时钟信号时(一般情况下,它每秒发 出18.2个信号,除非是对产生该中断的定时器芯片重新 编程),系统就进入时钟中断处理程序(INT 8)来完成系 统计时、调用INT 1CH关闭磁盘马达等工作。实验序 号2实验名 称linux进程管理实验时 间15年12
26、月实验地点八、1教南1楼一、题目说明1. 熟悉linux的命令接口。2. 通过对linux进程控制的相关系统调用的编程应用,进一步 加深对进程概念的理解,明确进程和程序的联系和区别,理解进程并发执行的具体含义。3. 通过Linux管道通信机制、消息队列通信机制、共享内存通 信机制的使用,加深对不冋类型的进程通信方式的理解。4. 通过对linux的Posix信号量的应用,加深对信号量同步机 制的理解。二、设计方案(系统框架)1. Shell 部分要求:编写三个不同的程序 cmd1.c , cmd2.c , cmd3.c,每个程序输出一句话,分别编译成可执行文件cmdl, cmd2, cmd3。然
27、后再编写一个程序,模拟shell程序的功能,能根据用户输入的字符串(表示相应的命令名),去为相应的命令创建子进程并让它去 执行相应的程序,而父进程则等待子进程结束,然后再等待接收下 一条命令。如果接收到的命令为exit ,则父进程结束;如果接收到 的命令是无效命令,则显示“ Comma nd not found ”继续等待。新建三个不同的程序cmd1,cmd2,cmd3然后编译成可执行文件cmd1,cmd2,cmd3之后编写程序my_shell.c 通过读取shell命令调用在使用ifelse语句判断识别并分别通过fork()创建子线程,子线程中采用);执行先前编译完execl(c onst
28、char *path,c onst char *arg,成的可执行文件。2.由父进程创建一个管道,然后再创建2个子进程,并由这两个兄弟进程利用管道进行进程通信:子进程1使用管道的写端,子进程2使用管道的读端。通信的具体内容可根据自己的需要随意设 计,要求能试验阻塞型读写过程中的各种情况。运行程序,观察各 种情况下,进程实际读写的字节数以及进程阻塞唤醒的情况。3编写程序创建两个线程:sender线程和receive线程,其中 sender线程运行函数sender(),它创建一个消息队列,然后,循环 等待用户通过终端输入一串字符, 将这串字符通过消息队列发送给receiver线程,直到用户输入“e
29、xit ”为止;最后,它向receiver 线程发送消息“ end”,并且等待receiver的应答,等到应答消息 后,将接收到的应答信息显示在终端屏幕上,删除相关消息队列, 结束程序的运行。Receiver线程运行receive。,它通过消息队列 接收来自sender的消息,将消息显示在终端屏幕上,直至收到内 容为“ end”的消息为止,此时,它向sender发送一个应答消息“over ”,结束程序的运行。使用无名信号量实现两个线程之间的同 步与互斥。4.编写程序sender,它创建一个共享内存,然后等待用户通过 终端输入一串字符,并将这串字符通过共享内存发送给receiver ;最后,它等
30、待receiver的应答,等到应答消息后,将接收到的应答 信息显示在终端屏幕上,删除共享内存,结束程序的运行。编写 receiver程序,它通过共享内存接收来自sender的消息,将消息 显示在终端屏幕上,然后再通过该共享内存向sender发送一个应答消息“ over ”,结束程序的运行。使用无名信号量或System V信号量实现两个进程对共享内存的互斥使用。三、程序流程图通过if 判断识别shell命令"执行cmdl*1拥行 ctndl+J抑行ctnd3+输出 2omniafirlnot found*皈行完些a父进程结束输出再见 程序退出dshell程序开妬4进堤二捱行读禅作和创建
31、两吓孑畫遅甘刖这行写燥 作和和读畏隹石请求写,長否成彷*»_、 韵和等侯*话求谟:昱否成Eh1 S是1T敷=尋哼关询读贻关Ifl写攜,怖读2当两牛子遥程结束信说 程关闭退出程升无名管道通信接收者进程(消息队列)主程序(消息队列通信)删除其享内存shmctlf)进程一的 地址空间进程一共 享内再的 映射区内愎共享夕卮的共 享内诗逍程二的 地址空间-#区 程內射 逬享映共享内存思路四、实验结果(程序截图)尸f shenjvnfanenjinFan 13055805-virtual-rnachirie -e used.xhenjlnfflnl3fl55M5f&am
32、p;hanjLnFanl3S55SB5<virtual-Mchi.iw;«$ */li.rux2_2 render:pVede Input won色thingWHWHWrender : pVeae Input oriething ttccctver receiversender:please input sone thingRccetvrtve: nhww划屮轴wwwwwwguitfwwvu»w常wwwwhw咖w切wwwwwexitFtt;匚elver recetv#; endSender (ecetve: 11 rn recelvtir nestages have
33、been r ecelved fion you.over shell J Infanl3O55BB5&henjlnfanl3O558&5-virtual* ndchine:./ltnux2_2 render :pLea&e tnpjt sone thirty sdfhsdjk sender:pLeafie input onethtnReceiver receive: sdThsdjksfdgdsfsenderipledse input sonethingReceiver receive: sfdgdsfexitReceiver receive: endsender re
34、ceive: I'n receiver messages have been received f(on you.overShenltn节已"丄3055百05审£人电八11十日111:30552&5-71111£1-日匸人1门£:-* |消息队列sherijinf*nllDS5fl0SshenjFnffln130S5flD5>virt uabmachineL “Value of full dt index fl is 6 this As fdtherny pid this As 匸hi1d2»ny pid e child?
35、:I will sleep 3 this is chfLdl ,ny pidis 1204?,ny s 12049,nyjob was Create Pipe1* * T think r did well I father'5 pid is 1207,ny job is reading nessaiseconds i s 17 048(nyfather is 1 ?07trty jab is writing nessagt-rbildl childl childl childi child1 childi childl chlXdl child! childl child: child
36、!count in pipe is 1 ITv alrefldy wrnten 1 bytes count in pipe is ?11 v ftl refldy wroten 7 byt?s count in pipe is 311v already wrotsn 3 bytes count in pipe is 4095 11v already wroten 4095 bytes count in pipe is 4096I"v already wroten 4096 bytes I'h alivet ifter p fullchildl>count%4096chi
37、ldl*count%4096childl,count*4096is 1is ?is 3to chtldl,count%409fi is 4G9Sto chUdl ,count%4a9fi is 0U 4095 index 6 As 1index G 5s 0read nessage:|child?,l:enpty tn pipe is G chlld2pl;full tn pipe Vlue of senaphare at cbild2:after 卩 nutexVlue of sensphore at child?:Press Fnter toShell命令五、思考与探索当时卡壳的地方我们在
38、设计程序时,最卡壳的地方在共享内存来实现通信时,能不能用无名信号量,最后向老师求助才知道, 用有名信号量。相对于无名信号量来说,有名信号量通过 IPC名字进行进程间的同步,其特点是把信号量保存在文 件中,这决定了其用途非常广泛:既可用于线程,也可用 于相关进程和不相关进程。(2)在父子进程的通信里面,无名管道自带阻塞功能,但 他的互斥与同步需要我们自己去实现,经过多次查阅资料和测试,我们最后艰难地选择了 System V信号量,并自己 写函数来实现PV操作(3)在通过消息队列来实现通信的程序中, 我们遇到的问 题是,程序莫明其妙的阻塞,但是加入 print来测试则又 可以正常运行,后来才意识到
39、,这就是进程的异步性的体 现哇。最后我们找到死锁原因,并使用一个资源信号量来 解决sender发送的over信息被自己给接收的问题。(一 开始我们还把这个资源信号量当作了互斥信号量,在程序 验收时老师告诉我们,只能有 个互斥信号量)实验序 号3实验名 称文件系统实验时 间16年1月实验地点八、1教南1楼一、题目说明通过具体的文件存储空间的管理、文件的物理结构、目录结构和文 件操作的实现,加深对文件系统内部数据结构、功能以及实现过程 的理解。二、设计方案(系统框架)(1) 在内存中开辟一个虚拟磁盘空间作为文件存储分区,在其上实现一个简单的基于多级目录的单用户单任务系统中的文件系统。 在退出该文件
40、系统的使用时,应将该虚拟文件系统以一个Win dows文件的方式保存到磁盘上,以便下次可以再将它恢复到内存的虚拟 磁盘空间中。(2) 文件存储空间的分配可采用显式链接分配或其他的办法。(3) 空闲磁盘空间的管理可选择位示图或其他的办法。如果采用位示图来管理文件存储空间,并采用显式链接分配方式,那么可以将位示图合并到FAT中。(4) 文件目录结构采用多级目录结构。为了简单起见,可以不使 用索引结点,其中的每个目录项应包含文件名、物理地址、长度等 信息,还可以通过目录项实现对文件的读和写的保护。(5) 实现以下函数:my_format :对文件存储器进行格式化,即按照文件系统的结构 对虚拟磁盘空间进行布局,并在其上创建根目录以及用于管理文件 存储空间等的数据结构。my_mkdir:用于仓U建子目录。my_rmdir :
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 视频创推员安全宣贯模拟考核试卷含答案
- 岩矿鉴定员岗前理论模拟考核试卷含答案
- 沼气物管员岗前技术知识考核试卷含答案
- 磨毛(绒)机挡车工安全生产意识知识考核试卷含答案
- 船舶理货员岗位技术传承考核试卷含答案
- 木雕工安全知识水平考核试卷含答案
- 煤焦油加氢制油工操作技能考核试卷含答案
- 焦炉煤气冷凝净化工发展趋势考核试卷含答案
- 种子繁育员岗中应变水平考核试卷含答案
- 传统行业业务前景分析报告
- 2026年秋人教版新八年级英语上册 八年级英语上册 Unit 2(单元测试卷)
- GB/T 6480-2026凿岩用钎头和连接钎杆
- 2025~2026学年北京市海淀区七年级上学期期中考试英语试卷
- 《教育管理》专业考试题及答案
- 制度修订情况汇报
- 公司显示屏管理制度
- GJB9001C-2017标准介绍及不符合项案例分析试题与答案
- 中华民族共同体概论课件专家版10第十讲 中外会通与中华民族巩固壮大(明朝时期)
- 小儿重症肺炎合并心衰呼衰护理查房
- 世界现代设计史 课件
- 诊疗科目、床位(牙椅)等执业登记项目以及卫生技术人员、业务科室变更情况和大型医用设备变更情况
评论
0/150
提交评论