操作系统课程设计报告(含源代码) .doc
《操作系统课程设计报告(含源代码) .doc》由会员分享,可在线阅读,更多相关《操作系统课程设计报告(含源代码) .doc(26页珍藏版)》请在三一文库上搜索。
1、操作系统课设操作系统课程设计报告 姓名: 学号:班级:2010年6月25日目录一、 试验实现3试验三、生成目标机33.1. 编译unixlite内核33.2. 制作目标机的启动软盘33.3. 对目标机的硬盘分区33.4. 格式化目标机的硬盘43.5.安装目标机的文件系统43.6. 测试目标机5试验四、Hello World!54.1. 目标54.2. 步骤5试验五、系统调用的原理65.1. 目标65.2. 步骤7试验七、 实现信号灯操作的系统调用97.1. 增加四个系统调用:97.2. 编写四个测试程序:137.3. 运行测试程序15试验八、 实现进程间通信的系统调用168.1. 增加四个系统
2、调用:168.2. 编写四个测试程序:208.3. 运行测试程序22二、 心得体会23第一部分 试验实现试验三、生成目标机试验步骤:3.1. 编译unixlite内核生成系统内核可执行文件kernel.target和系统内核镜像文件Image# cd /kernel# make dep# make3.2. 制作目标机的启动软盘把系统内核镜像文件Image写入到软盘。# cd /kernel# dd if=Image of=/dev/fd03.3. 对目标机的硬盘分区root(none) kernel# fdisk /dev/hdbCommand (m for help): m / 帮助Comm
3、and (m for help): p /打印当前分区表Command (m for help): n /创建新的分区Command action e extended p primary partition (1-4)p /分区类型是主分区Partition number (1-4): 1 /第一主分区First cylinder (1-4, default 1): /输入回车,使用缺省值Using default value 1Last cylinder or +size or +sizeM or +sizeK (1-4, default 4): / 输入回车,使用缺省值Using def
4、ault value 4Command (m for help): p /打印当前分区表Command (m for help): t /改变分区类型Selected partition 1Hex code(Type L to list codes): 81 /输入minix分区代码:81Command (m for help): p /打印当前分区表Command (m for help): w /存盘退出3.4. 格式化目标机的硬盘# mkfs.minix -v -n30 /dev/hdb13.5.安装目标机的文件系统1 挂载目标机的硬盘 # mount /dev/hdb1 /mnt/hd
5、b12 安装基本的文件系统 # tar zxvf rootfs.tar.gz -C /mnt/hdb13 卸载目标机的硬盘 # umount /mnt/hdb13.6. 测试目标机试验四、Hello World!4.1. 目标在目标机启动时打印出你的学号。4.2. 步骤1 编辑内核源文件/kernel/init/main.cc,main.cc定义了系统的入口:main函数,在main函数中找到如下两行代码: int main(). printf(Total Memory Size is %d Megn, nphysmeg); i386init(); /* setup gdt,idt,cr0 *
6、/.2 在这两行之间插入打印学号的代码,变为: printf(Total Memory Size is %d Megn, nphysmeg); printf(This is student:040730424n); i386init(); /* setup gdt,idt,cr0 */3 在/kernel目录下使用make命令重新编译内核,生成内核镜像文件Image: # cd /kernel# make4 把系统内核镜像文件Image写入到软盘: # cd /kernel# dd if=Image of=/dev/fd05 在windows下启动目标机,查看目标机启动时是否打印出你的学号。结
7、果:试验五、系统调用的原理5.1. 目标通过为unixlite开发一个简单的系统调用了解系统调用的原理,要增加的系统调用原型是:int add(int a, int b);add的功能是返回参数a、参数b两者相加的和。5.2. 步骤5.2.1. 分配空闲的系统调用号为add系统调用分配空闲的系统调用号,查看/kernel/asm/trapS.S获得系统调用列表:#define SYS(name) .long sys#name#define XXX(name) .long sysnosysentry(syscalltab) sys(setup) /* 0 */ sys(exit) sys(for
8、k) sys(read) sys(write) sys(open) /* 5 */ sys(close) sys(waitpid) sys(creat) sys(link) sys(unlink) /* 10 */ sys(execve) sys(chdir) sys(time) sys(mknod) sys(chmod) /* 15 */ xxx(lchown) /* 16 */ xxx(break) /* 17 */ xxx(oldstat) /* 18 */ sys(lseek) sys(getpid) /* 20 */ . .syscalltab这一张表格定义了系统调用号和系统调用的实
9、现函数之间的映射关系:我们可以把没被实现的系统调用号(如16,17,18)分配给add系统调用. 我们选择16作为add的系统调用号, 修改syscalltab如下:#define SYS(name) .long sys#name#define XXX(name) .long sysnosysENTRY(syscalltab) SYS(setup) /* 0 */ SYS(exit) SYS(fork) SYS(read) SYS(write) SYS(open) /* 5 */ SYS(close) SYS(waitpid) SYS(creat) SYS(link) SYS(unlink)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统课程设计报告含源代码 操作系统 课程设计 报告 源代码
链接地址:https://www.31doc.com/p-5096135.html