操作系统课程设计报告范例_第1页
操作系统课程设计报告范例_第2页
操作系统课程设计报告范例_第3页
操作系统课程设计报告范例_第4页
操作系统课程设计报告范例_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

操作系统课程论文院系:计算机学院班级:2007计算机科学技术1班姓名:曹作西学号:2007123456指导教师:xxx完成时间:2010.01东莞理工学院摘要本文分析面向对象教学操作系统EOS的系统结构和代码构成,通过源代码分析学习该系统的进程有关数据结构,掌握其进程创建过程、线程创建过程和上下文切换方法,理解其进程管理的机理,学习其面向对象实现机制,锻炼大型软件源代码阅读技能,以加深对操作系统原理知识点的理解和掌握,了解系统程序的实现方法,学习EOS面向对象程序设计技术。课程设计任务和分工本次课程设计的任务是从进程管理代码的阅读与改进(包括进程创建、进程同步和进程调度四个实验)、设备驱动代码的阅读与改进、内存管理代码的阅读与改进、系统启动代码的阅读与改进、文件系统代码的阅读与改进等五个题目中任选一个,分组完成,每组人数为1—5人。课程设计内容是对代码通过阅读源代码,理解EOS操作系统的结构、设计技术,分析其执行流程,并对其功能进行改进和增强,以达到更好地掌握操作系统原理与技术的目的。 本文分工是阅读EOS进程创建过程,并画出系统数据结构和主要流程图。二、实现原理和数据结构1.实验原理 阅读EOS进程创建源代码,通过EOS实验环境的程序调试过程理解其执行流程,在此基础上画出EOS进程创建的源代码。2.数据结构所在源文件ki.h:内核支撑模块的内部函数及变量的声明mi386.h:i386内存相关。obp.h:对象管理模块的内部头文件。psp.h:进程管理模块的内部头文件。kdb.h:内核调试器接口声明。ke.h:系统支撑模块对外接口的头文件,供内核其它模块使用。3.数据结构名称和位置进程对象结构体:PROCESS,psp.h线程对象结构体:THREAD,ps.h对象类型结构体:OBJECT_TYPE,obp.h对象头结构体:OBJECT_HEADER,obp.h上下文环境结构体:CONTEXT4.数据结构(1)进程结构体typedefstruct_PROCESS{ BOOLEANSystem; //是否系统进程 UCHARPriority; //进程的优先级 PMMPASPas; //进程地址空间 PHANDLE_TABLEObjectTable;进程的的内核对象句柄表 LIST_ENTRYThreadListHead; //进程线程链表头 PTHREADPrimaryThread;//主线程指针 LIST_ENTRYWaitListHead;//等待队列,所有等待进程结束的线程都在此队列等待。 PSTRImageName; //二进制映像文件名称 PSTRCmdLine;//命令行参数 PVOIDImageBase; //可执行映像的加载基址 PPROCESS_START_ROUTINEImageEntry; //可执行映像的入口地址 HANDLEStdInput; HANDLEStdOutput; HANDLEStdError; ULONGExitCode; //进程退出码}PROCESS;(2)线程结构体typedef struct_THREAD{PPROCESSProcess;//线程所属进程指针LIST_ENTRYThreadListEntry;//进程的线程链表项UCHARPriority;//线程优先级UCHARState;//线程当前状态ULONGRemainderTicks;//剩余时间片,用于时间片轮转调度STATUSWaitStatus;//阻塞等待的结果状态KTIMERWaitTimer;//用于有限等待唤醒的计时器LIST_ENTRYStateListEntry; //所在状态队列的链表项LIST_ENTRYWaitListHead;//所有等待线程结束的线程都在此队列等待。为了结构简单,EOS没有对内核进行隔离保护,所有线程都运行在内核状态,所以目前线程没有用户空间栈//PVOIDKernelStack;//线程位于内核空间的栈CONTEXTKernelContext;//线程执行在内核状态的上下文环境状态PMMPASAttachedPas;//线程在执行内核代码时绑定进程地址空间。PTHREAD_START_ROUTINEStartAddr;//线程的入口函数地址PVOIDParameter;//传递给入口函数的参数ULONGLastError; //线程最近一次的错误码ULONGExitCode;//线程的退出码}THREAD;(4)对象头结构体typedefstruct_OBJECT_HEADER{PSTRName;//对象名称字符串指针ULONGId;//对象ID,全局唯一POBJECT_TYPEType;//对象类型指针ULONGPointerCount;//对象指针计数器ULONGHandleCount;//对象句柄计数器LIST_ENTRYTypeObjectListEntry; //所属类型的对象链表项LIST_ENTRYGlobalObjectListEntry; //全局的对象链表项QUADBody; //对象体的起始域}OBJECT_HEADER;(4)对象类型结构体typedefstruct_OBJECT_TYPE{PSTRName;//类型名称字符串指针SINGLE_LIST_ENTRYTypeListEntry;LIST_ENTRYObjectListHead; ULONGObjectCount;//对象计数器,所有属于此类型的对象的总数ULONGHandleCount;}OBJECT_TYPE;(5)EOS对象结构三、各函数详细说明及程序流程图1.进程创建应用程序测试函数(newproc.c)2.创建进程函数:CreateProcess("A:\\Hello.exe",NULL,0,&StartupInfo,&ProcInfo)功能:产生PROCESS和THREAD对象3.创建进程运行环境:PspCreateProcessEnvironment(8,ImageName,CmdLine,&ProcessObject)4.创建系统进程PsCreateSystemProcess()(1)创建进程环境PspCreateProcessEnvironment过程:创建进程对象ObCreateObject:对象类型PspProcessType计算对象头及对象体存储需求及分配存储器初始化对象头,type=PspProcessType,将对象头插入对象链表及全局对象链表返回对象体指针为进程分配句柄表初始化进程控制块:优先级:24,exit_code:0返回变量值:PspSystemProcess(2)创建进程的主线程PspCreateThread设置:PspSystemProcess->PrimaryThread参数:进程PspSystemProcess,启动地址:KiSystemProcessRoutine过程:创建线程对象ObCreateObject,类型PspThreadType,大小:THREAD大小计算对象头及对象体存储需求并分配内存初始化对象头,type=PspThreadType,对象头插入对象链表及全局对象链表返回对象体指针栈大小8KB初始化线程控制块:process=PspSystemProcess,priority,startaddr,state=0,RemainderTicks=6,初始化线程上下文:PspInitializeThreadContext 初始化所有通用寄存器为0,设置段寄存器所有线程都从线程启动函数PspThreadStartup()开始执行初始化内核模式栈;初始化程序状态字,仅仅设置了一位:允许中断使线程进入就绪状态。执行调度:KeSchedule()线程启动函数PspThreadStartup()PspCurrentThread->StartAddr(PspCurrentThread->Parameter)P

温馨提示

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

评论

0/150

提交评论