精品杭电赵伟华操作系统课程设计指导书.docx
- 文档编号:27729034
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:68
- 大小:55.28KB
精品杭电赵伟华操作系统课程设计指导书.docx
《精品杭电赵伟华操作系统课程设计指导书.docx》由会员分享,可在线阅读,更多相关《精品杭电赵伟华操作系统课程设计指导书.docx(68页珍藏版)》请在冰豆网上搜索。
精品杭电赵伟华操作系统课程设计指导书
操作系统实验和课程设计总要求
1.遵守机房纪律,服从机房调度。
2.实验与课程设计的设计和上机调试要求独立完成,不能拷贝。
3.上机前,努力准备上机内容,并预先作一些情况分析。
4.仔细观察上机时出现的各种现象,记录上机的结果。
5.认真书写实验和课程设计报告。
报告中应包括:
实验和课程设计的目的及要求、程序的设计思想及框图、程序的调试中遇到的问题的分析、程序的清单和结果分析以及程序的不足之处及修改方案。
程序要带注释。
实验一使用动态优先数的进程调度算法的模拟
一.目的
通过这一实验加深对进程、进程控制块和进程调度的理解,并通过动态优先数算法加深对进程调度算法的理解。
二.要求
1.用C语言来实现有N(假设N为5)个进程的进程调度算法。
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
(1)进程标识数id:
整型(0--N-1)。
(2)进程优先数priority:
整型(优先数越大的进程,优先权越高)。
(3)进程已占用的CPU时间cputime:
整型(初值为0)。
(4)进程还需占用的CPU时间alltime:
整型(进程运行完毕时变为0)。
(5)进程的阻塞时间startblock:
整型(即当进程再运行startblock个时间片后,进程将进入阻塞状态。
)
(6)进程被阻塞的时间blocktime:
整型(即已阻塞的进程再等待blocktime个时间片后,将转换成就绪态。
)
(7)进程状态state:
整型(0--finished;1--running;2--ready;3--blocked)。
(8)队列指针next:
指向PCB结构的指针,用来将PCB排成队列。
3.优先数改变的原则:
(1)进程在就绪队列中呆一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3。
4.为了清楚地观察诸进程的调度过程,程序应将每个时间片内的进程的情况显示出来,参照的具体格式如下:
RUNNINGPROG:
i
READY_QUEUE:
->id1->id2
BLOCK_QUEUE:
->id3->1d4
=============================================
ID01234
PRIORITYP0P1P2P3P4
CPUTIMEC0C1C2C3C4
ALLTIMEA0A1A2A3A4
STARTBLOCKT0T1T2T3T4
BLOCKTIMEB0B1B2B3B4
STATES0S1S2S3S4
三.初始值
ID01234
PRIORITY93830290
CPUTIME00000
ALLTIME33634
STARTBLOCK2-1-1-1-1
BLOCKTIME30000
STATEREADYREADYREADYREADYREADY
四.备注
以上所有时间都以时间片为单位,并假设N个进程都是在开始调度时同时到达的。
五.思考
1.这里采用的两条优先数改变原则各有什么理由?
实验二遍历MS_DOS系统的MCB链
一.补充知识
MS_DOS控制的RAM空间分为操作系统区和暂驻程序区(TPA)。
操作系统区位于RAM的底部,其中有中断向量表、操作系统全部及其表格和缓冲区等信息;RAM中操作系统之上的其余部分为TPA区,该区域为可动态分配的内存。
TPA中的每个内存块的大小都以节(16字节)为单位,而且必须以节为边界,故每个内存块的起始地址可以xxxx:
0000来表示,其中xxxx为段地址。
TPA中的每个内存块前都有一个相应的内存控制块MCB,它占一节长,DOS通过这些MCB来管理内存。
用户可以通过DOS的系统功能调用来申请或释放其中的一块内存。
MCB的结构如下:
字节0:
标识字符,“Z”(5AH)表示最后一个内存块;“M”(4DH)表示非最后一个内存块。
字节1-2:
内存块的所有者名,如果内存块为空闲的,则它的值为0000h,否则它的值为所有者进程的程序段前缀(PSP)的段址。
字节3-4:
它控制的内存块的大小(以节为单位),这一大小并不包括MCB本身占用的那一节。
字节5-7:
保留未用。
字节8-15:
在DOS4.X以上的版本中,为所有者程序的文件名。
该名字仅包含在所有者程序的PSP所在的内存块前的MCB中,否则,这8个字节将被忽略。
第一个MCB总是用来控制DOS自身数据段的,它的所有者名通常为0008h。
它的段址位于DOS内存变量表中偏移值为-2处。
通过52h系统功能调用,我们可以从返回的ES:
BX中得到DOS内存变量表的指针,所以从ES:
[BX-2]处就得到第一个MCB的段地址。
若一个MCB的标识字节为"Z",表示它是最后一个MCB;否则若它的标识字节为"M",表示它后面还有其他的MCB,本MCB的段地址加上它所控制的内存块的大小(字节3-4的内容),再加上1(MCB本身所占的一节内存),得到的值即下一个MCB的段地址。
这样,我们可以看出,所有的内存块都通过MCB按起始地址从小到大隐式地连成一个链,我们不妨称它为MCB链。
DOS的49h号系统功能调用是用来释放由MCB控制的一个内存块的:
入口:
ES=要释放的内存块的起始段址。
出口:
C=0,释放成功;C=1,释放失败,AX=错误码。
释放时先检查要释放的内存块前一节是否为一个合法的MCB(标识字节为"M"或"Z"),“Z”),若合法,则将该MCB的所有者名改为0000h,即它所控制的内存块为空闲块。
DOS的48h号系统功能调用是用来分配内存的:
入口:
BX=要求分配的内存块大小(以节为单位)。
出口:
若进位位C=0,分配成功,AX=分配到的内存块的段址,BX=分配的内存块的大小(节数);若C=1,分配失败,AX为错误玛,BX=最大可用块的大小。
分配时,从MCB链头起顺序查找,每碰到一个空闲块(MCB中所有者为0000h的块)时,先进行空闲块的合并(因为,内存释放时没进行空闲块的合并),然后判断该空闲块是否能满足要求,若能满足要求则将它分配出去,否则继续查找。
分配时有可能产生另一个小的空闲块。
从上可以看出,该算法与标准的首次适应算法类似,故称它为合并-首次适应算法。
它与标准的首次适应算法的不同之处只在于,在释放内存块时,它不进行空闲块的合并,而把空闲块的合并工作放到内存分配时来做,其余之处与标准的首次适应算法完全相同。
在DOS3.0以上版本中,内存分配的策略还有最佳适应法(分配满足要求的最小可用内存块)和最后适应法(从高地址到低地址分配满足要求的最高的足够大的内存块)。
DOS的58H号系统功能调用是用来取或置分配策略的:
入口:
置分配策略时,AH=58h,AL=01,BX=策略码
00-合并-首次适应法
01-最佳适应法
02-最后适应法。
取分配策略时,入口:
AH=58h,AL=0。
出口:
成功时,进位标志=0,AX=策略码(对取分配策略);
失败时,进位标志=置,AX=错误码。
二.目的
通过对MS_DOS的MCB链的遍历,熟悉MS_DOS的内存管理,并进一步了解使用动态分区分配方式的内存分配和释放的过程。
三.要求
1.用C语言来显示MCB链的信息,显示的格式可参照以下格式:
*****seg*****flag*****owner****size*****progname
*****253****M*****8*****704(11264)*****
*****514****M*****8*****4(64)*****
*****519****M*****51a*****164(2624)*****COMMAND
*****5be****M*****0*****4(64)*****free
*****5c3****M*****51a*****96(1536)*****
*****624****M*****632*****12(192)*****
*****631****M*****632*****4740(75840)*****MCB
*****18b6****Z*****0*****34441(551056)*****free
以上表示内存的TPA中有8个内存块,其中有两个空闲块:
05be:
0000开始的4节(64字节)长的内存块,18b6:
0000开始的34441节(551056字节)长的内存块;两个被COMMAND使用的内存块:
0519:
0000开始的164节长及05c3:
0000开始的96节长的内存块;两个被MCB程序使用的内存块:
0624:
0000开始的12节长和0631:
0000开始的4740节长的内存块;还有两个内存块是DOS自身数据段使用的(其MCB的所有者为0008)。
2.用48h号系统功能调用和49h号系统功能调用来申请和释放一系列的内存块,观察申请和释放过程中MCB链的变化过程。
3.通过58h号系统功能调用改变分配策略,重复2,并对三种分配策略进行比较。
四.提示和主要数据结构
1.编程时要用到文件dos.h中的内容。
2.在C中用intdosx()来实现DOS的系统功能调用。
3.MCB的数据结构如下:
typedefstruct
{
unsignedcharflag;
unsignedowner;
unsignedsize;
unsignedcharunused[3];
unsignedcharprogname[8];
}MCB;
4.程序段例子
/*取得第一个MCB的地址*/
MCBfar*get_first_mcb(void)
{
unionREGSreg;
structSREGSseg;
unsignedfar*tempp;
segread(&seg);/*把当前段寄存器的值取到结构变量seg中*/
/*执行52h号DOS系统功能调用*/
reg.h.ah=0x52;
intdosx(®,®,&seg);
/*ES:
BX-2单元中有第一个MCB的段地址,将该单元的地址赋给tempp*/
tempp=(unsignedfar*)MK_FP(seg.es,reg.x.bx-2);
/*返回第一个MCB的地址*/
return((MCBfar*)MK_FP(*tempp,0));
}
实验三PC_DOS磁盘空间的分配和文件的物理结构
一.补充知识
1.PC_DOS的磁盘空间分配
PC_DOS的3.5寸双面双密度软盘每面有80个磁道,每道有18个扇区,每个扇区有512字节;而文件所占磁盘空间以簇为单位,每簇大小为1扇区。
它的盘空间分配情况如下:
┌───────┬─────┬─────┐
│绝对扇区号│长度(区)│内容│
├───────┼─────┼─────┤
│0│1│引导记录│
├───────┼─────┼─────┤
│1│9│FAT1│
├───────┼─────┼─────┤
│10│9│FAT2│
├───────┼─────┼─────┤
│19│14│根目录│
├───────┼─────┼─────┤
│33-2879│2847│用户文件区│
└───────┴─────┴─────┘
2.文件目录项的内容
PC_DOS磁盘空间中从第19个绝对扇区开始的14个扇区是文件的根目录区,其中每个根目录项占32个字节,一个512字节的扇区刚好放16个根目录项,所以根目录区中最多可建立224个根目录项(即根目录下最多只能有224个子目录)。
而子目录是作为文件处理的,它的目录项不占根目录区,而只作为文件的内容存放在用户文件区中,所以它的目录项个数(即子目录下的文件个数)仅受磁盘空间的限制。
目录项的格式如下:
078ABCF
┌─────────┬───┬──┬─────┐
│文件名│类型名│属性│未用│
├──────┬──┼──┬┴──┼─────┤
│未用│时间│日期│簇号│文件长度│
└──────┴──┴──┴───┴─────┘
1015161718191A1B1C1F
.文件名:
占8个字节,包含一个已建立文件的文件名。
若名字的长度小于8个字符,则右边用空白填充。
其中,第一个字节表示目录项的状态:
00h--从未用过的目录项。
E5h--已删除文件的目录项。
2Eh--子目录标记项。
其它--文件名的首字符。
.类型名:
即文件的扩展名,占3个字节。
.属性:
占一个字节,其含义为:
76543210
┌───┬───┬───┬───┬───┬───┬───┬───┐
│││更改位│子目录│卷标位│系统│隐含│只读│
└───┴───┴───┴───┴───┴───┴───┴───┘
其中,隐含、系统和子目录文件不能用一般的目录操作检索;只读文件只能读不能写;卷标位为1表示该目录项记录着这张盘的卷名;更改位在文件修改后置1。
.时间和日期:
记录文件建立或修改的时间和日期。
.簇号:
分配给该文件的磁盘空间的第一簇的簇号。
.文件长度:
以字节为单位的文件的长度。
3.文件的物理结构与空闲盘区的管理
PC_DOS文件存储空间的管理以簇为单位,簇的大小由盘的类型决定,对于3.5存软盘,簇的大小是512字节(即1个扇区)。
PC_DOS文件的物理结构是显式链接结构,分配给一文件的第一盘簇的簇号登记在它的目录项中,而分配给该文件的所有其它盘簇的簇号是存放在一张显式的链接表,即文件定位表(FAT表)中的,每簇占一FAT表表项。
而FAT表表项的大小取决于磁盘空间的大小,对于3.5存盘,每个FAT表表项占12位(1.5个字节)。
FAT表是一简单的线性表,每个表项占1.5个字节,其中的内容用来说明该簇对应的磁盘区是空闲的还是真在使用。
FAT表的头两项用来表示磁盘的类型,对于3.5存盘,它的值为“F0F”、“FFF”。
从第三个表项开始表示盘簇的分配状态,它们的含义为:
000该盘簇为空闲盘簇。
FF8-FFF该簇是分配给文件的最末一簇。
FF0-FF7该簇为保留的簇(FF7表示该簇是一个坏簇)。
XXX分配给文件的下一簇的簇号。
从上可以看出,PC_DOS空闲盘区的情况也是登记在FAT表中的(所有的值为0的FAT表项所对应的盘簇均为空闲盘簇)。
在为文件分配盘空间时,是一个簇一个簇地分配的,系统在FAT表中从头依次查找空闲的表项,并把对应的盘簇分配给文件,最后分配给文件的盘簇可能是连续的,也可能是分散的。
4.例子
假如,有一3.5存软盘,用“dir/a”命令,结果为:
VolumeindriveAisOS
DirectoryofA:
\par
IOSYS4047003-10-936:
00a
MSDOSSYS3813803-10-936:
00a
COMMANDCOM5292503-10-936:
00a
DBLSPACEBIN5121403-25-936:
00a
FILE1DOC1508408-08-9512:
58p
5file(s)197831bytes
1257984bytesfree
它的根目录区的内容为:
Disp------------------Hexcodes-----------------ASCIIVALUE
0000494f2020202020205359532700000000IOSYS'....
000100000000000000306a1a0200169e0000.......0j.......
00024d53444f532020205359532700000000MSDOSSYS'....
000300000000000000306a1a5200fa940000.......0j.R.....
0004434f4d4d414e4420434f4d2000000000COMMANDCOM....
000500000000000000306a1a9d00bdce0000.......0j.......
000644424c535041434542494e2700000000DBLSPACEBIN'....
00070000000000000030791a05010ec80000.......0y.......
00084f532020202020202020202800000000OS(....
0009000000000000a969081f000000000000.......i........
001046494c4531202020444f432000000000FILE1DOC....
00110000000000005267081f6a01ec3a0000......Rg..j..:
..
001200000000000000000000000000000000................
001300000000000000000000000000000000................
001400000000000000000000000000000000................
而第一个FAT表的内容为:
Disp------------------Hexcodes-----------------ASCIIVALUE
0000f0ffff03400005600007800009a0000b....@..`........
0001c0000de0000f00011120011340011560...........@..`
00020117800119a0011bc0011de0011f0002................
000321200223400225600227800229a0022b!
.#@.%`.'..)..+
0004c0022de0022f00033120033340033560..-../..1.3@.5`
00050337800339a0033bc0033de0033f0004.7..9..;..=..?
..
000641200443400445600447800449a0044bA.C@.E`.G..I..K
0007c0044de0044f000551f0ff5340055560..M..O..Q..S@.U`
00080557800559a0055bc0055de0055f0006.W..Y..[..].._..
000961200663400665600667800669a0066ba.c@.e`.g..i..k
0010c0066de0066f00077120077340077560..m..o..q.s@.u`
00110777800779a0077bc0077de0077f0008.w..y.........
001281200883400885600887800889a0088b...@..`........
0013c0088de0088f00099120099340099560...........@..`
00140997800999a0099bc009ffef099f000a................
0015a1200aa3400aa5600aa7800aa9a00aab...@..`........
0016c00aade00aaf000bb1200bb3400bb560...........@..`
00170bb7800bb9a00bbbc00bbde00bbf000c................
0018c1200cc3400cc5600cc7800cc9a00ccb...@..`........
0019c00ccde00ccf000dd1200dd3400dd560...........@..`
00200dd7800dd9a00ddbc00ddde00ddf000e................
0021e1200ee3400ee5600ee7800ee9a00eeb...@..`........
0022c00eede00eef000ff1200ff3400ff560...........@..`
00230ff7800ff9a00ffbc00ffde00fff0010................
0024012110034110ff6f1007811009a1100b.!
..A..o........
0025c1100de1100f01111121111341111561.........!
..A..a
00261117811119a1111bc1111de1111f0112................
002721211223411225611227811229a11
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 杭电赵伟华 操作系统 课程设计 指导书