1863.VC++中进程调度算法的演示《操作系统原理》课程设计.doc
《1863.VC++中进程调度算法的演示《操作系统原理》课程设计.doc》由会员分享,可在线阅读,更多相关《1863.VC++中进程调度算法的演示《操作系统原理》课程设计.doc(8页珍藏版)》请在三一办公上搜索。
1、 操作系统原理课程设计 课题名称:VC+中进程调度算法的演示姓 名: 班 级: 学 号: 课程设计起止时间:2005年12月26日至30日指导教师: 成绩:课程设计任务书操作系统原理课程设计任务书设计题目:VC+中进程调度算法的演示任务下达时间:2005年12月26日任务完成时间:2005年12月30日指导教师: 指导教师评语一、所得结果:二、存在问题:成绩评阅人课程设计的题目:VC+中进程调度算法的演示设计内容:进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。每一个进程都是由内核对象和地址空间所组成的,内核对象可以让系统在其内存放有关进程的统计信息并使系统能够以此来管理进程
2、,而地址空间则包括了所有程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。进程仅仅是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的线程,并由其负责执行在进程地址空间内的代码。在进程启动的同时即同时启动了一个线程,该线程被称作主线程或是执行线程,由此线程可以继续创建子线程。如果主线程退出,那么进程也就没有存在的可能了,系统将自动撤消该进程并完成对其地址空间的释放。详细设计:程序入口选择任务先来先服务关于作者Case选择任务短进程优先强占式高有先权时间片轮转退出123456判断继续退出程序流程图退出程序流程图如下:加载到进程地址空间的每一个可执行文件或动态链接库文
3、件的映象都会被分配一个与之相关联的全局唯一的实例句柄。该实例句柄实际是一个记录有进程加载位置的基本内存地址。进程的实例句柄在程序入口函数中通过第一个参数传递,其实际值即为进程所使用的基本地址空间的地址。对于VC+链接程序所链接产生的程序,其默认的基本地址空间地址为0x00400000,如没有必要一般不要修改该值。通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个新的程序。具体的,在执行函数时,首先由操作系统负责创建一个进程内核对象,初始化计数为1,并立即为新进程创建一块虚拟地址空间。随后将可执行文件或其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。在创建主线程时,也是
4、首先由系统负责创建一个线程内核对象,并初始化为1。最后启动主线程并执行进程的入口函数RunProc(),完成对进程和执行线程的创建。RunProc()函数的原型声明如下:BOOL RunProc(PCB *pPcb)int i;PROGRAM *pProgram=&pPcb-program;int nProcID=pPcb-idProc.nInID;int nSize=pProgram-instructionSet.size();int nTimePieceCnt=0;int nStartTime=GetTickCount();在程序设计时,某一个具体的功能模块可以通过函数或是线程等不同的形式
5、来实现。对于同一进程而言,这些函数、线程都是存在于同一个地址空间下的,而且在执行时,大多只对与其相关的一些数据进行处理。如果算法存在某种错误,将有可能破坏与其同处一个地址空间的其他一些重要内容,这将造成比较严重的后果。为保护地址空间中的内容可以考虑将那些需要对地址空间中的数据单独进行访问的操作部分,放到另外一个进程的地址空间中运行,并且只允许其访问原进程地址空间中的相关数据。具体的,可在调度程序来解决。void Schedule()switch(g_ScheduleAlgorithm)case FCFS:Schedule_FCFS();break;case SPF:Schedule_SPF()
6、;break;case FPF_Reaved:Schedule_FPF_Reaved();break;case TimePiece:Schedule_TimePiece();break; 通过函数去创建子进程,子进程在全部处理过程中只对父进程地址空间中的相关数据进行访问,从而可以保护父进程地址空间中与当前子进程执行任务无关的全部数据。对于这种情况,子进程所体现出来的作用同函数和线程比较相似,可以看成是父进程在运行期间的一个过程。为此,需要由父进程来掌握子进程的启动、执行和退出。首先通过创建子进程,子进程启动后父进程通过函数等待其执行的结束,在子进程没有退出前父进程是一直处于阻塞状态的,这里子进
7、程的作用同单线程中的函数类似。一旦子进程退出,所等待的对象将得到通知,父进程将得以继续,如有必要可以通过函数来获取子进程的退出可以通过enum PROCPRIORITY()参数在创建进程时设置子进程的优先级。前面的示例代码在创建子进程时使用的均是默认的优先级,如果要将优先级设置为高,可以修改。对于前面没有设定优先级的例子代码,可以在子进程启动后由父进程来动态改变其优先级设置。子进程 各进程创建如下: /调度程序void Schedule()switch(g_ScheduleAlgorithm)case FCFS:Schedule_FCFS();break;case SPF:Schedule_S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统原理 1863. VC 进程 调度 算法 演示 操作系统 原理 课程设计

链接地址:https://www.31ppt.com/p-4137013.html