操作系统课程设计

发布 2022-10-05 11:25:28 阅读 9049

广东海洋大学学生实验报告书(学生用表)

一、实验目的(experimental goal)

掌握时钟调用的实现原理。

二、开发环境(development environment)

硬件(hardware):(cpu) amd athlon(tm)64x2 5600+ 2.9ghz

内存(memory):896mb

操作系统 (operating system):microsoft windows xp

软件(software):minix3.1

三、实验内容(experimental content)

进程管理的系统调用的使用。

四、实验要求。

1、掌握时钟的实现原理。

2、时钟实现的具体步骤。

3、实验完成后总结实验心得。

五、详细分析时钟显示设计及实现。

因为要实现时钟调用,首先就要获得系统的时钟时间,接着是对得到的时间进行显示操作,实现在屏幕右上角的显示。因而为了达到预期效果则应该设立两个新的函数,一个就是所说的获得时间功能的getboottime函数,另一个就是设置显示的函数setboottime函数。

1.在实现前我们要定义个全局变量,获得时间 /usr/src/kernel/

文件。定义extern time_t boottime,time_t是指boottime的计时单位是秒。如图。

2.常量定义,vi /usr/src/include/minix/文件,定义。

#define t_boottime m4_l1 消息常量。

#define sys_setboottime (kernel_call + 28) 核心调用的编号。

#define sys_getboottime (kernel_call + 29)

将nr_sys_calls改为30,因为系统只有28个,现在加了2个,所以变为30

如图。3. 在文件/usr/src/kernel/system/do_中添加do_setboottime函数和do_getboottime函数。

处理系统sys_setboottime()函数的调用,在消息中取得t_boottime的值付给boottime

处理系统sys_getboottime()函数调用,取得消息变量t_boottime的值给boottime.

4.添加消息映射,作用是,把所接到的消息转换成函数映射。在/usr/src/kernel

目录下打开在initialize函数中添加消息映射。

map(sys_setboottime, do_setboottime)

map(sys_getboottime, do_getboottime)

当收到sys_setboottime消息的时候调用do_setboottime函数。

当收到sys_getboottime消息的时候调用do_getboottime函数如图。

5,.在当前目录下在文件的条件编译中,将两个核心调用映射到do_unused

如图。当use_times定义为0的话指系统不需要执行时间管理,反之为 1的话执行。

所以如果不行use_times,就把do_setboottime和do_getboottime映射成空函数do_unused.

6. 在当前目录下把中将sys_getboottime调用权赋值给drv_c,使得tty具备调用sys_getboottime的权限。

如图:其中sys_getboottime的调用权限在pm_c中,但由于语句上说除了后面那些调用权限不可外都可以,所以不必加入它的调用权限,而sys_setboottime的权限在drv_c中,其语句是所能执行后面的权限,固要加入。

/usr/src/kernel/的时钟中断处理函数clock_handler,使其每隔1秒向终端驱动程序发送消息。

1、static int c;定义静态整数c用来对中断次数的计数。

2、每次时钟中断时更新c的值;

3、当c>=hz时,将c清零,并向终端驱动程序发送消息。其中hz的值为60,所以中断60次就是1秒。

如图:终端驱动设置tty包括了光标设置等操作。

8. 在函数库中为新增加的两个核心调用添加接口函数。

1、/usr/src/lib/syslib/sys_ sys_setboottime(),供pm程序使用;更新makefile文件,自动编译sys_setboottime函数。

准备个消息类型m,从消息中获取bottime,返回taskecall,返回sys_setboottime和消息缓冲区的地址m.

2、同理在r/src/include/minix/ sys_setboottime, (time_t boottime));

准备个消息类型m和常量s ,从消息中获取bottime,返回taskecall,返回sys_getboottime和消息缓冲区的地址m. *boottime获得消息时间。返回常量s.

3、/usr/src/lib/sysutil/供终端驱动程序使用;更新makefile文件,自动编译sys_getboottime函数。

4、/usr/src/lib/syslib/sys_ :setboottime()供终端驱动程序使用;更新makefile文件,自动编译sys_se tboottime函数。

提示文件出于最新状态。

5、重新构造函数库。

(1)cd /usr/src

(2)make includes #install include files from src

(3)make libraries #compile and install libraries

把/usr/src/includes子目录复制到/usr/include

生成正式函数库。

四:修改终端驱动程序,响应时钟中断处理函数的消息、在屏幕的固定位置显示时钟。

1、 修改/usr/src/drivers/tty/当接收到中断来自于clock的消息时,调用disp_clock()函数显示时钟。

对消息进行判断。,如果来自于时钟消息的话就调用disp_clock函数来显示时间日期。

2、修改添加disp_clock和do_display函数的原型。

3.在当前目录下修改添加disp_clock函数。因disp_clock要被调用,所以disp_clock不能声明为private;同样,因do_display要被调用,所以do_display不能声明为private。

其作用是设置光标,然后显示时间,调用完后,恢复光标的位置。

之后退出,在/usr/src/tools目录下发出make image命令,构造成功后复制映像文件到。

boot/test,发出reboot命令。

4、建立一个新文件其中的do_display函数实现时钟显示。

5、更新。depend文件和makefile文件,实现的自动编译。

打开。depent文件,添加自动编译刚才创建的文件。

打开makefile文件,进行如图的添加。存盘退出。

五、修改/usr/src/servers/pm/在do_stime()函数中加入对sys_setboottime函数的调用。

六、生成并应用新的minix映像文件。

发出make image命令,然后cp image 到/boot/clock

然后shutdown,进行如图操作。

之后就有结果了。

如图。心得体会:

如此浩瀚的工程如能成功实属不易,跟随老师的脚步,一步步的做来,但结果还是差强人意,不如意的地方比比皆是,是故,操作系统,其理奥,其博深,为其深究不为过。

操作系统课程设计

课程设计 河北大学工商学院。装。订。线。操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专 操作系统课程设计。题目 操作系统课程设计 学院工商学院 学部信息科学与工程 专业计算机类 学号 姓名。指导教师。年 6 月 24 日。设备管理 2 2.1设计任务2 2.2设计要求...

操作系统课程设计

银行家算法模拟。系别 班级 组员 银行家算法模拟。1.课程设计目的。通过本次课程设计,加深对最经典的避免死锁的银行家算法的理解,掌握死锁形成必要条件 安全状态等概念的理解,通过用c语言编程模拟该算法,并在windows平台上实现,更好地掌握操作系统的原理及实现方法。2.任务及要求。设n为系统进程的个...

操作系统课程设计

学生实习实训报告。实习类型 操作系统课程设计 学号 0901110005 学生姓名 田兴杰 指导教师 曹春梅 专业班级 信息安全技术0901班 院 部 电子信息系 2011年 1 月 7日。实习实训成绩评定表。目录。目录3 摘要4关键字4 1.1虚拟机简介5 1.1.1 一般意义的虚拟机5 1.1....