附件四《操作系统》课程设计任务书_第1页
附件四《操作系统》课程设计任务书_第2页
附件四《操作系统》课程设计任务书_第3页
附件四《操作系统》课程设计任务书_第4页
附件四《操作系统》课程设计任务书_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统课程设计主编:操作系统课程组计算机学院2009年6月1日操作系统是计算机系统中的核心系统软件,它负责控制和管理整个系统的 资源并组织用户协调使用这些资源,是计算机高效的工作。操作系统课程是计算 机科学与技术专业核心课程。由于操作系统是最优秀、最复杂和最庞大的软件之一,所以,真正领会操 作系统课程所介绍的感念、原理、方法和技巧等,是十分困难的。另外,理教过 程中,为了使学生能清楚的理解操作系统对各类资源管理的思想和算法,往往采 取将整个系统离散化的方式进行讲解,再加上针对算法的安排实验,却能让学生 很好的理解各种管理思想和方法。但是,这样一来存在一个突出的问题,学习中 缺少系统的整体感。

2、为了弥补这种缺憾,计划中安排了 1.5周的课程设计。考虑到实验室设备为共享计算机,不能因操作系统课程设而影响其它工作,特选择不会影响整个系统工作的文件系统作为操作系统课程设计的对象。操作系统课程设计目录第一章概述第二章课程设计要求及注意事项第三章课程设计项目项目一:多线程同步3一、生产者-消费者问题3二、读者-写者问题的实现6项目二:文件管理系统的设计8一、子目录管理8二、目录项结构8三、文件分配表(fat)作用8四、创建文件8五、文件复制9六、文件头结构9七、程序加载方法9八、内存驻留(tsr)方法9第四章参考文献10附录a相关api函数11附录b优盘文件系统13附录c课程设计报告规范18附

3、录d考核方式19第一章概述操作系统课程是计算机科学与技术专业核心课程。高级语言程 序设计、数据结构等课程为其前趋课程。该课程理论性强,难 以理解。通过该课程设计,能帮助学生深透理解并真正领会操作系统 课程所介绍的感念、原理、方法和技巧,以及操作系统的整体认识。该课程设计为1. 5周即45学时。涉及内容共分十个子任务,其 中两个为多线程同步程序设计,八个为文件系统中的子目录管理、目 录项结构、文件分配表(fat)作用、创建文件、文件复制、文件头 结构、程序加载方法、内存驻留(tsr)方法。这八个任务对操作系 统原理中的文件系统所涉及到的理论知识进行了全面而有机地训练。实现语言为汇编语言或c或vc

4、+等。学生可以根据自己情况选 做一个或多个项目进行设计,并已完成个数的多少和质量评定成绩。第二章课程设计要求及注意事项设计环境要求:硬件:普通pc386以上微机;一张软盘或优盘;系统平台:windows 2000/xp、linux;开发语言:c、vc+、汇编语言;设计要求:要求每位学生事先准备一张软盘或优盘,题目二设计中针对软盘 或优盘进行操作。设计前应复习设计中所涉及的理论知识和算法,针对设计要求完 成基本代码编写并完成预习报告、设计中认真调试所编代码并进行必 要的测试、记录并分析设计结果,设计后认真书写符合规范格式的设 计报告(参见附录c),并耍求用正规的课程设计报告纸和封面装订 整齐,按

5、时上交。第三章课程设计项项目一:多线程同步一、生产者和消费者问题1、实验目的(1) 掌握基本的同步互斥算法,理解生产者和消费者同步的问题模型。(2) 了解windows 2000/xp中多线程的并发执行机制,线程间的同步和互斥。(3) 学习使用windows2000/xp中基本的同步对象,掌握相应的api。2、实验要求(1) 创建生产者和消费者线程在windows2000环境下,创建一个控制台进程,在此进程屮创建n个线程来 模拟生产者或者消费者。这些线程的信息由本程序定义的“测试用例文件”中予 以指定。该文件的格式和含义如下:31 p32 p43 c414 p25 c31 24第一行说明程序屮

6、设置几个临界区,其余每行分别描述了一个生产者或者消 费者线程的信息。每一行的各字段间用tab键隔开。不管是消费者还是生产者, 都有一个对应的线程号,即每一行开始字段那个整数。第二个字段用字母p或者 c区分是生产者还是消费者。第三个字段表示在进入相应线程后,在进行生产和 消费动作前的休眠时间,以秒计时;这样做的目的是可以通过调整这一列参数, 控制开始进行生产和消费动作的时间。如果是代表生产者,则该行只有三个字段。 如果代表消费者,则该行后边还有若干字段,代表要求消费的产品所对应的生产 者的线程号。所以务必确认这些对应的线程号存在并且该线程代表一个生产者。(2) 牛产和消费的规则在按照上述要求创建

7、线程进行相应的读写操作时,还需要符合以下要求: 共享缓冲区存在空闲空间时,生产者即可使用共享缓冲区。 从上边的测试数据文件例子可以看出,某一生产者生产一个产品后,可能 不止一个消费者,或者一个消费者多次地请求消费该产品。此吋,只有当所有的 消费需求都被满足以后,该产品所在的共享缓冲区才可以被释放,并作为空闲空 间允许新的生产者使用。 每个消费者线程的齐个消费需求之间存在先后顺序。例如上述测试用例文 件包含一行信息“5 c 3 1 2 4”,可知这代表一个消费者线程,该线程请求消费 1, 2, 4号生产者线程生产的产品。而这种消费是有严格顺序的,消费1号线程 产品的请求得到满足后才能继续往下请求

8、2号牛产者线程的产品。 要求在毎个线程发岀读写操作申请、开始读写操作和结束读写操作时分别 显示提示信息。(3) 相关基础知识本实验所使用的生产者和消费者模型具有如下特点:木实验的多个缓冲区不是环形循环的,也不要求按顺序访问。生产者可以把 产品放到目前某一个空缓冲区中。消费者只消费指定生产者的产甜。在测试用例文件屮指定了所有的生产和消费的需求,只有当共享缓冲区的数 据满足了所有关于它的消费需求后,此共享缓冲区才可以作为空闲空间允许新的 牛产者使用。本实验在为生产者分配缓冲区时各生产者间必须互斥,此后各个生产者的具 体生产活动可以并发。而消费者之间只有在对同一产甜进行消费时才需要互斥, 同时它们在

9、消费过程结束时需要判断该消费对象是否已经消费完毕并清除该产 品。windows用来实现同步和互斥的实体。在windows中,常见的同步对象有: 信号量(semaphore) 互斥量(mutex) 临界段(criticalscction)等。使用这些 对象都分为三个步骤,一是创建或者初始化:接着请求该同步对象,随即进入临 界区,这一步对应于互斥量的上锁;最后释放该同步对象,这对应于互斥量的解 锁。这些同步对象在一个线程中创建,在其他线程中都可以使用,从而实现同步 互斥。二、读者-写者问题的实现1设计目的通过实现经典的读者写者问题,巩固对线程及其同步机制的学习效果,加深对相关基本概念的理解,并学习

10、如何将基本原理和实际设计有机的结合。2设计内容在windows 2000/xp环境下,使用多线程和信号量机制实现经典的读者写者 问题,每个线程代表一个读者或一个写者。每个线程按相应测试数据文件的耍求, 进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写者问题。读者-写者问题的读写操作限制:(1) 写-写互斥,即不能有两个写者同时进行写操作(2) 读-写互斥,即不能同时有一个读者在读,同时却有一个写者在写(3) 读-读允许,即可以有二个以上的读者同时读读者优先的附加限制:如果一个读者申请进行读操作时己有另一读者正在进 行读操作,则该读者可直接开始读操作。写者优先的附加限制:如果一个

11、读者申请进行读操作时已有另一写者在等待 访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操 作和结束读写操作时分别显示一行提示信息,以确信所有处理都遵守相应的读写 操作限制。3测试数据文件格式测试数据文件包括n行测试数据,分别描述创建的n个线程是读者还是写 者,以及读写操作的开始时间和持续时间。每行测试数据包括四个字段,各字段 间用空格分隔。第一字段为一个正整数,表示线程序号。第二字段表示相应线程 角色,r表示读者是,w表示写者。第三字段为一个正数,表示读写操作的开始 时间。线程创建后,延时相应时间(单位为秒)

12、后发出对共享资源的读写申请。 第四字段为一个正数,表示读写操作的持续时间。当线程读写申请成功后,开始 对共享资源的读写操作,该操作持续相应时间后结束,并释放共享资源。下面是 一个测试数据文件的例子:1 r 3 52 w 4 53 r 5 24 r 6 55 w 5. 1 3项目二:文件管理系统的设计一、子目录管理1、目的:了解并掌握dos创建和撤消子目录的方法及有关子目录操作的系统功 能。2、内容:用dos功能调用39h和3ah来创建和撤消子目录,以及用3bh来改变 当前fi录。3、实现:创建指定子目录(2) 撤消子目录(3) 指定子目录为当前目录二、目录项结构1、目的:了解目录项中文件属性的

13、含义及如何修改文件属性的方法。2、内容:用dos功能调用43h来获取并修改文件属性。三、文件分配表(fat)作用1、目的:了解fat作用,掌握通过fdt、fat恢复被删除文件的方法,特别第二 个fat在恢复被删除文件屮所起的作用。2、内容:根据第二个fat表,利用fdt的保留域快速恢复被删除文件。四、创建文件1、目的:了解如何在dos下创建一个新文件以及由键盘上输入该文件内容的整 个过程。2、内容:由dos功能调用建立一个文木文件,由键盘输入该文件内容。五、文件复制1、目的:掌握文件复制的一般方法及dos文件管理功能调用的使用。2、内容:(1)读一个文本文件的内容,将该文件内容拷贝到另一个文件

14、中。(2)读源文件内容送入内存缓冲区,将缓冲区内容写入目的文件上,从而完成 文件的拷贝。六、文件头结构1、目的:进一步了解exe文件特点,掌握exe文件添加程序的方法。2、内容:给任意一个exe文件添加一段程序。七、程序加载方法1、目的:了解在当前程序中加载其他程序的一般方法;加深对exec功能调用的 掌握;了解fcb的文件操作方式;了解内存管理功能调用。2、内容:在当前程序中调用dos的exec功能,加载执行其他应用程序。八、内存驻留(tsr)方法1、目的:掌握程序驻留内存的方法,了解如何用“热键”控制所需操作及对系 统吋钟的获取。2、内容:在图形模式下的屏幕右上角“弹出”一个时钟窗口,显示

15、出系统当前 时钟的“时:分:秒”值;如果不想让时钟显示,则只要同时按下左shift键和 右shift键,再按下enter健,则此时窗口被关闭;如果再想让时钟显示,只要 再次同时按下左shift键和右shift键即可。第四章参考文献1. 汤子瀛.计算机操作系统(修订版)(新世纪版)四安电子科技大学出版社,2001.82. visual c+ 6.0程序设计与开发技术大全.人民邮电岀版社3. 有关汇编语言程序设计:tmasm2007(汇编集成环境)或 其他版木附录a相关api函数& dos系统功能调用1 相关api函数crcatcthrcado在调用进程的地址空间上创建一个线程exitth

16、reado 用于结束当前线程s1 eep ()可在指定的时间内挂起当前线程createmutex ()创建一个互斥对象,返冋对象句柄openmutexo 打开并返回一个己存在的互斥对象句柄,用于后续访问releasemutexo 释放对互斥对象的占用,使之成为可用waitforsinglcobjcct ()可在指定的时间内等待指定对象为可用状态initializecriticalsectiono 初始化临界区对象enlercr i t i cal sec t i on ()等待指定临界区对象的所有权leavecriticalsectiono 释放指定临界区对象的所有权createsemapho

17、re () 创建一个信号量对象relcascscmaphorc ()将所指信号量加上指定大小的一个量2. dos系统功能调用dos系统功能调用表(int 21h)功能号(ah)功能描述入口参数出口参数0 1 h键盘输入并 回显单字符al二读入字符的asci i09h显示字符串ds:dx二待输岀串起始 逻辑地址字符串以'$'结束oah字符串输入 到缓冲区ds:dx二待输出串起始 逻辑地址首字节为最 大允许按键数缓冲区次字节为 实际输入字符数, 然后是输入串39h建立子目录(md)ds:dx二子目录串首地 址ax二错误码3ah删除子目录(rd)ds:dx二子目录串首地址ax二错误码

18、3bh改变当前目 录(cd)ds:dx二子目录串首地址ax二错误码3ch建立文件ds:dx二子目录串首地 址cx二文件属性成功:ax二文件代 号失败:ax二错误码3dh打开文件ds:dx二子目录串首地 址al二打开方式成功:ax二文件代 号失败:ax二错误码3eh关闭文件bx二文件代号失败:ax二错误码3fh读文件或设 备ds:dx二数据缓冲区地址bx二文件代号成功:ax二实际读 入字节数失败:ax二错误码40 h写文件或设 备ds:dx二缓冲区首地址 bx二文件代号cx二待写入的字节数成功:ax二实际读 入字节数失败:ax二错误码41h删除文件ds:dx=缓冲区首地址成功:ax二00 失败:

19、ax二错误码4ch带返回码结束al二结束码附录b优盘文件系统优盘上的数据按照其不同的特点和作用大致可分为5部分:mbr区、dbr区、 fat区、fdt区和data区。1、主引导记录(mbr)绝对扇区号为:mbrlba二0x00000000处是主引导记录,等同位于硬盘的0磁 道0柱面1扇区。在总共512字节的主引导扇区中,朋r只占用了其中的446个 字节(ofs:0 一 ofs:lbdh),另外的 64 个字节(ofs:lbeh -ofs:lfdh)交给了 dpt (disk partition table 盘分区表),最后两个字节 “55 aa” (ofs:lfeil - ofs: 1ffh)

20、是分区的结束标志。 mbr定义如下:typedef struct uchar bootcode446; /ofs:0.启动代码。“fa 33 co 8e do bc”.partitiontable pt4 ; /ofs:446.分区表 length二4*16. uint endingflag; /ofs:510.结束标识:0xaa55.mbr_tag; bootcode446启动代码一般是固定的,用于引导x86,不用管。 分区表项的定义如下:typedef struct uchar bootflag; /启动标志chs startchs; /分区开始的柱面、磁头、扇区uchar systemt

21、d; /分区类型chs endcils; /分区结束的柱面、磁头、扇区ulong relativesectors; /分区起始扇区数,指分区相对丁记录该分区的分 区表的扇区位置之差(该分区表:lba=0x0) oulong totalsectors;/分区总扇区数partitiontable; 其中chs为一个柱面、磁头、扇区的结构,定义如下:struct chs uchar head; /磁头。unsigned sector : 6; /扇区。unsigned cyh2 : 2; /柱面(高两位)。uchar cyl8; /柱面(低八位)。ulong cylinder() return (u

22、int(cyh2)*256+cyl8) ; /返回柱面值 void setcyl inder (uint cyl inder) /设置柱面值cyii2= (cylindcr>>8)&0x3; cyl8= (cylindcr&oxff);;例:80 01 01 00 ob fe bf fc 3f 00 00 00 7e 86 bb 00在这里我们可以看到:z “80”是一个分区的激活标志,表示系统可引导;z “01 01 00”表示分区开始的磁头号为01,开始的扇区号为01,开始的柱 面号为00;z “0b”表示分区的系统类型是fat32,其他比较常用的有04 (fa

23、t16)、06 (bigfat16) 、 01 (fat12)、 07 (ntfs);z “febffc”表示分区结束的磁头号为254,分区结束的扇区号为63、分区 结束的柱面号为764;z "3f 00 00 00”表示首扇区的相对扇区号为63;z “7e 86 bb 00”表示总扇区数为12289622。2、系统引导记录(dbr)绝对扇区号为:dbr丄ba=mbr. pto. relativesectors处是dbr,等同位于 硬盘的0磁道1柱面1扇区(512字节),是操作系统可以直接访问的第一个扇 区,它包括一个引导程序和一个被称为bpb (bios parameter blo

24、ck)的本分区 参数记录表。引导程序的主要任务是当mbr将系统控制权交给它时,判断本分区 跟目录前两个文件是不是操作系统的引导文件(以dos为例,即是io. sys和 msdos. sys) o如果确定存在,就把其读入内存,并把控制权交给该文件。bpb参 数块记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根 目录大小、fat个数,分配单元的大小等重要参数。dbr定义如下:typedef struct uchar bjmpboot 3 ; /o fs:0.典型的如:oxeb, 0x3e, 0x90。char b0emname8 ; / /ofs:3.典型的如:“mswin4.

25、1”。uint bpb wbytespersec; /ofs: 11.每扇区字节数。uchar bpb bsecperclus; /ofs: 13.每簇扇区数。uint bpb_wreservedsec; /ofs: 14.保留扇区数,从 dbr 到 fat 的扇区数。 uchar bpb bnumfats; /ofs: 16. fat 的个数。uint bpb wrootentry; / /ofs: 17.根目录项数。uint bpb wtotalsec; / /ofs: 19.分区总扇区数(32m 时用)。uchar bpb_bmedia; / /ofs:21.分区介质标识,优盘一般用 0

26、xf8。uint bpb_wsecperfat; / /ofs:22.每个 fat 占的扇区数。uint bpb wsecpertrk; / /ofs:24.每道扇区数。uint bpb wheads; / /ofs:26.磁头数。ulong bpb dhiddsec; / /ofs:28隐藏扇区数,从 mbr 到 dbr 的扇区数。ulong bpb_dbigtotalscc; /ofs:32.分区总扇区数(=32m 时用)。uchar bdrvnum; /ofs:36.软盘使用 0xoo,硕盘使用 0x80。uchar breservedl; /ofs:3 7.保留。uchar bboot

27、sig; / /ofs:38扩展引导标记:0x29。uchar bvolid4; / /ofs:39.盘序列号。char bvollabll; /ofs:43 "msdos ” 。char filesystype8; /ofs:54. fat16 ” 。uchar executablecode448; /ofs:62.引导代码。uint endingflag; /ofs:510.结束标识:0xaa55。dbr_tag;dos引导记录公式:z文件分配表三保留扇区数z根目录三保留扇区数+fat的个数x每个fat的扇区数z数据区三根目录逻辑扇区号+ (32x根目录中目录项数)/每扇区字节数

28、z绝对扇区号三逻辑扇区号+隐含扇区数z扇区号三(绝对扇区号%每磁道扇区数)+1z磁头号三(绝对扇区号/每磁道扇区数)磁头数z磁道号三(绝对扇区号/每磁道扇区数)/磁头数要点:1)dbr位于柱面0,磁头1,扇区1,其逻辑扇区号为02)dbr包含dos引导程序和bpb。3)bpb十分重要,由此可算出逻辑地址与物理地址。3、文件分配表(fat)绝对扇区号为:fat_lba二dbr_lba + bpb_wreservedsec处是文件分配表, 是dos文件组织结构的主要组成部分。我们知道dos进行分配的最基本单位是 簇。文件分配表是反映硬盘上所有簇的使用情况,通过查文件分配表可以得知任 一簇的使用情况

29、。dos在给一个文件分配空间时总先扫描fat,找到第一个可用 簇,将该空间分配给文件,并将该簇的簇号填到目录的相应段内。即形成了 “簇 号链” °fat就是记录文件簇号的一张表。fat的头两个域为保留域,对fat 12来 说是3个字节,fat16来说是4个字节。其屮头一个字节是用來描述介质的, 其余字节为ffh。介质格式与bpb相同。fat结构含义:一般fat表的第一项为ff8h或fff8h。fat 12 fat 16 意义00011 000011 可用ff0h-ff6h fff0hfff6h 保留ff7h fff7h 坏ff8h-fffh fff8h-ffffh 文件最后一个簇x

30、x xh x x x xh文件下一个簇对于fat16,簇号x2作偏移地址,从fat屮取出一字即为fat屮的域。逻辑扇区号=数据区起始逻辑扇区号+ (簇号一2) x每簇扇区数簇号=(逻辑扇区号一数据区起始逻辑扇区号)/每簇扇区数+ 2要点:1)fat反映硬盘上所有簇的使用情况,它记录了文件在硬盘中具体位置(簇)。2)文件第一个簇号(在fi录表中)0 fat的该文件的簇号串起来形成文件的“簇 号链”,修复被破坏的文件就是根据这条链。3)由簇号可算逻辑扇区号,反之,由逻辑扇区号也可以算岀簇号,公式如上。4)fat位于dbr之后,其dos扇区号从1开始。4、文件目录表(fdt)绝对扇区号为:fdt l

31、ba = fat lba + bpb bnumfats * bpb wsccpcrfat 处 是文件目录表,dos文件组织结构的又一重要组成部分。文件目录分为两类:根 目录,子目录。根目录有一个,子目录可以有多个。子目录下还可以有子目录, 从而形成“树状”的文件目录结构。子目录其实是一种特殊的文件,dos为目录 项分配32字节。目录项定义如下:typedef structchar filename8 ; /ofs:0.文件名char extname3 ; /ofs: 8扩展名uchar attribute; /ofs:ll.文件属性。典型值:存档(0x20) 卷标(0x08)。char res

32、erved10 ; /ofs:21.保留uint time; /ofs:22.时间uint data; /ofs:24.日期uint startclus; /ofs:26.开始簇号 ulong filelength; /ofs:28.文件长度dir_tag;1) 目录项文件名区域屮第一个字节还有特殊的意义:00h代表未使用。 05h代表实际名为e5h。 e5h代表此文件己被删除。2) 口录项属性区域的这个字节各个位的意义如下:6修改标志7未用标志5 4修子改目录3 2卷系标统属性1 0隐只藏读属属性性3) windows的长文件名使用了上表中所说的“保留”这片区域。4)时间:time = hr * 2048 + min * 32 + sec + 2。5) 日期:time 二(yr-1980) * 512 + mon * 32 + day。6) 簇号与逻辑扇区号的关系为:逻辑扇区号二(簇号-2) x每簇扇区数+数据区起始逻辑扇区号。7)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论