1、 高级语言程序设计高级语言程序设计 课程设计报告课程设计报告 题目:题目: 进程调度模拟进程调度模拟 1 目 录 1 1 1 设计目的及要求设计目的及要求 3 1.1 设计目的 3 1.2 课程设计的实验环境 3 1.3 课程设计的预备知识 3 1.4 课程设计要求 3 2 课程设计内容课程设计内容 3 2.1 程序功能介绍. 3 2.2 程序整体设计说明. 4 2.2.1 设计思路 . 4 2.2.2 数据结构设计及用法说明 . 5 2.2.3 程序结构(流程图) . 5 2.2.4 各模块的功能及程序说明 . 6 2.2.5 程序运行结果 . 7 3 总结总结 9 参考资料参考资料. 11
2、 程序源代码 . 12 1 1 1 设计设计目的及要求目的及要求 1.1.1 1 设计目的设计目的 本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习 完程序设计语言(C)课程后进行的一次全面的综合练习。本课程设计的目的 和任务: 1. 巩固和加深学生对 C 语言课程的基本知识的理解和掌握 2. 掌握 C 语言编程和程序调试的基本技能 3. 利用 C 语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用 C 语言解决实际问题的能力 1.21.2 课程设计的实验环境课程设计的实验环境 硬件要求能运行 Windows 2000/XP 操作系统的微机系统。C
3、语言程序设计及 相应的开发环境。 1.31.3 课程设计的预备知识课程设计的预备知识 熟悉 C 语言及 C 语言开发工具。 1.41.4 课程设计要求课程设计要求 1. 分析课程设计题目的要求 2. 写出详细设计说明 3. 编写程序代码,调试程序使其能正确运行 4. 设计完成的软件要便于操作和使用 5. 设计完成后提交课程设计报告 2 2 课程设计内容课程设计内容 2.12.1 程序功能介绍程序功能介绍 在多道程序环境下,进程数目往往多于处理机数目,致使他们争用处理机。 这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使 1 之运行。分配处理机的任务是由进程调度程序完成的。
4、一个进程被建立后,系统 为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同点进 程队列。于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进 程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。 2.22.2 程序程序整体设计说明整体设计说明 用 C 语言实现进程调度操作系统课程设计设计思想: “最高优先数优 先”调度算法的基本思想是把 cpu分配给就绪队列中优先数最高的进程。 采用动 态优先数,即优先数在创建进程时给定一个初始值,当进程获得一次 cpu后其优 先数就减少 1。 它用 C 语言编写的实现模拟进程调度的程序, 用户模拟几个进程, 输入它们的进程名,优
5、先级,运行时间等,进程的初使状态为就绪状态。然后就 按优先级优先方式调度各个进程,进程的状态也因此会变成等待状态或完成状 态。 2.2.12.2.1 设计思路设计思路 进程是当前操作系统下一个被加载到内存的、正在运行的应用程序的实例。 每一个进程都是由内核对象和地址空间所组成的, 内核对象可以让系统在其内存 放有关进程的统计信息并使系统能够以此来管理进程, 而地址空间则包括了所有 程序模块的代码和数据以及线程堆栈、堆分配空间等动态分配的空间。进程仅仅 是一个存在,是不能独自完成任何操作的,必须拥有至少一个在其环境下运行的 线程,并由其负责执行在进程地址空间内的代码。在进程启动的同时即同时启动
6、了一个线程, 该线程被称作主线程或是执行线程, 由此线程可以继续创建子线程。 如果主线程退出,那么进程也就没有存在的可能了,系统将自动撤消该进程并完 成对其地址空间的释放。 加载到进程地址空间的每一个可执行文件或动态链接库文件的映象都会被 分配一个与之相关联的全局唯一的实例句柄。 该实例句柄实际是一个记录有进程 加载位置的基本内存地址。 进程的实例句柄在程序入口函数中通过第一个参数传 递,其实际值即为进程所使用的基本地址空间的地址。对于 VC+链接程序所链 接产生的程序,其默认的基本地址空间地址为 0x00400000,如没有必要一般不 要修改该值。 1 通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个 新的程序。 具体的, 在执行函数时, 首先由操作系统负责创建一个进程内核对象, 初始化计数为 1,并立即为新进程创建一块虚拟地址空间。随后将可执行文件或 其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。 在创建主线 程时,也是首先由系统负责创建一个线程内核对象,并初始化为 1。最后启动主 线程并执行进程的