操作系统内核开发毕业设计-幻灯片答辩.ppt
基于基于Intel X86平台的平台的32位多任务位多任务操作系统内核设计与实现操作系统内核设计与实现计SB07-1班 程世东指导老师:李鑫题目来源题目来源操作系统分类操作系统国际现状操作系统国内现状学习目的操作系统分类操作系统分类专用操作系统:服务器操作系统、特殊用途操作系统通用操作系统:Windows、Linux、Mach、Unix、Minix、Solaris等操作系统国际现状操作系统国际现状在操作系统市场上,操作系统软件仍然由国外软件商垄断,部分软件商也在逐渐加入到操作系统市场的竞争当中。微软公司、SUN公司的操作系统现在普遍为国际上所认可,谷歌公司也在加紧开发下一代操作系统进程当中,LINUXUNIX类操作系统也是操作系统市场当中普遍使用的一类。操作系统国内现状操作系统国内现状在国内操作系统使用当中,仍然以使用国外操作系统为主,包括手机操作系统在内。在上个世纪,我国启动了自主研发专用操作系统的项目,由国内知名大学和联想等企业联合开发出了国内第一款具有自主知识产权的操作系统银河麒麟操作系统。从此填补了我国操作系统自主研发的空白。学习目的学习目的鉴于以上国际国内环境,以及操作系统对于整个软件开发产业链的重要环节,我们知道开发一款国内的操作系统所具有的意义,因此我选择了开发操作系统内核作为我的毕业设计。从而深入的了解操作系统的具体原理,并且将在学校所学到的理论知识用于实践当中,得到对操作系统理论更深的认识。系统功能模块系统功能模块1 1、内核加载模块、内核加载模块2 2、块设备驱动模块、块设备驱动模块3 3、字符设备驱动模块、字符设备驱动模块4 4、任务调度模块、任务调度模块5 5、高速缓冲区模块、高速缓冲区模块6 6、中断模块、中断模块7 7、虚拟内存模块、虚拟内存模块8 8、主内存区管理模块、主内存区管理模块9 9、文件系统模块、文件系统模块软件结构软件结构软件结构软件结构软件结构软件结构软件结构软件结构软件结构软件结构功能实现功能实现内核加载0000H0000:7C00HBOOT1000:0000HOSLOADER9000:0000H中断向量BIOS数据显示器信息内存大小硬盘参数9000:7C00H功能实现功能实现内核加载流程图可编程中断控制器可编程中断控制器8259A设置设置ICW1(端口20H和0A0H)ICW2(端口21H和0A1H)ICW1必须为11=需要ICW4,0=不需要ICW4主从都是11H000=80 x86系统设置本8259A芯片的起始中断向量主片:20H 从片:28H主片ICW3(端口21H)从片ICW3(端口0A1H)1=IR2级联从片,0=无从片必须为0连的主片的IR号从片=02H主片=04HICW4(端口21H和A1H)1=80 x86模式主从=01HOCW1(端口21H和A1H)主从=0FFH0=IRQ0打开,1=IRQ0关闭GDT设置设置dd 00000000h ;NULL 0dd 00000000hdd 000007FFh ;CS 8dd 00c09a00hdd 000007FFh ;DS 16dd 00c09200h设置页目录与设置页目录与GDT、IDT原型原型说说明明Double LABEL_GDT5;Double LABEL_GDT5;由由实实模式跳模式跳转转入保入保护护模式的模式的临时临时GDTGDT表表unsigned long _page_dir1024;unsigned long _page_dir1024;内核使用的内核使用的页页目目录录数数组组desc_struct _gdt,_idt;desc_struct _gdt,_idt;内核使用的内核使用的GDTGDT表和表和IDTIDT表表功能实现功能实现高速缓冲区管理高速缓冲区管理算法描述算法描述原型原型说说明明struct task*buffer_wait;struct task*buffer_wait;缓缓冲区等待冲区等待队队列列头头指指针针struct bufferhead struct bufferhead*freelist;*freelist;空空闲缓闲缓冲区冲区链链表表头头指指针针struct bufferhead struct bufferhead*hashNR_HASH*hashNR_HASH缓缓冲区哈希表冲区哈希表struct bufferhead struct bufferhead*start_buffer;*start_buffer;缓缓冲区开始地址冲区开始地址功能实现功能实现块设备驱动块设备驱动算法描述:请求项电梯排序、底层驱动算法描述:请求项电梯排序、底层驱动原型原型说说明明struct hd_info_struct struct hd_info_struct hd_infoMAX_HD;hd_infoMAX_HD;保存硬保存硬盘盘信息信息struct hd_struct hdMAX_HD*5;struct hd_struct hdMAX_HD*5;保存每分区扇区数保存每分区扇区数struct task*wait_request;struct task*wait_request;请请求求项项等待等待队队列列头头指指针针struct request struct request request_queueNR_REQUEST;request_queueNR_REQUEST;请请求求项队项队列列功能实现功能实现字符设备驱动算法描述字符设备驱动模块数据字符设备驱动模块数据 原型原型说说明明Char key_flag;Char key_flag;保存保存CtrlCtrl、altalt、shiftshift按按键标键标志志Char led;Char led;LOCKLOCK键键按下按下标标志志Char Normal_KeyMap0 x61;Char Normal_KeyMap0 x61;普通按普通按键键ASCIIASCII码码数数组组Char Normal_ShiftMap0 x61;Char Normal_ShiftMap0 x61;ShiftShift键键按下按下时时ASCIIASCII码码数数组组Long FunctionList 0 x100;Long FunctionList 0 x100;处处理不同接通理不同接通码码的函数表的函数表struct Virtual_Control struct Virtual_Control vcMAX_VC;vcMAX_VC;虚虚拟拟控制台数控制台数组组int cur_con;int cur_con;当前控制台当前控制台标识标识struct buffer_queue struct buffer_queue vc_queueMAX_VC*3;vc_queueMAX_VC*3;虚虚拟拟控制台的控制台的缓缓冲冲队队列数列数组组struct terminal termMAX_VC;struct terminal termMAX_VC;终终端数端数组组功能实现功能实现任务调度任务调度算法描述算法描述原型原型说说明明struct task struct task*pcbNR_TASKS;*pcbNR_TASKS;进进程控制程控制块块数数组组unsigned long volatile unsigned long volatile jiffies;jiffies;时钟时钟滴答滴答功能实现功能实现中断模块算法描述中断向量号系统调用:0 x88时钟中断:0 x20键盘中断:0 x21硬盘中断:0 x2e中断模块数据中断模块数据 原型原型说说明明fn_ptr fn_ptr _syscall_table_NR_syscall_table_NR_syscallsyscall系系统调统调用函数入口表用函数入口表desc_struct _idt;desc_struct _idt;中断描述符表中断描述符表功能实现功能实现主内存区管理主内存区管理算法描述算法描述原型原型说说明明unsigned char unsigned char mem_mapPAGE_SIZEmem_mapPAGE_SIZE1;1;内存区使用状内存区使用状态态数数组组功能实现功能实现文件系统文件系统算法描述算法描述原型原型说说明明struct m_inode struct m_inode inode_tableNR_INODE;inode_tableNR_INODE;内核内核I I节节点数点数组组struct task*inode_wait;struct task*inode_wait;I I节节点等待点等待队队列列头头指指针针struct superblock struct superblock super_blockNR_SUPER;super_blockNR_SUPER;内核超内核超级块级块数数组组struct f_file struct f_file file_tableNR_FILE;file_tableNR_FILE;内核文件数内核文件数组组MINIX文件系统文件系统引导块超级块I节点位图逻辑块位图I节点区数据区功能实现功能实现虚拟内存管理虚拟内存管理算法描述算法描述原型原型说说明明char*swap_bitmap;char*swap_bitmap;交交换换位位图图指指针针主要难点主要难点开发环境的搭建文件系统的创建底层驱动操作系统调试致谢致谢感谢答辩老师!感谢指导老师对我的指导!再见!再见!