好文档 - 专业文书写作范文服务资料分享网站

天津理工大学操作系统实验报告实验一

天下 分享 时间: 加入收藏 我要投稿 点赞

.

实验报告

学院(系)名称:计算机与通信工程学院

姓名 班级 nasta 2010级2班 课程名称 学号 实验项目 nasta 专业 计算机科学与技术 实验一:处理机调度算法的实现 操作系统 课程代码 0668036 实验时间 2012 年12月3日 第3、4节 实验地点 软件实验室7-216 批改意见 成绩 教师签字: 实验内容: 1. 设定系统中有五个进程,每一个进程用一个进程控制块表示。 2. 输入每个进程的“优先数”和“要求运行时间”。 3. 为了调度方便,将五个进程按给定的优先数从大到小连成就绪队列。用一单元指出队列首进程,用指针指出队列的连接情况。 4. 处理机调度总是选队首进程运行。采用动态优先数算法,进程每运行一次优先数就减“1”,同时将运行时间减“1”。 5. 若某进程运行时间为零,则将其状态置为“结束”,且退出队列。 6. 运行所设计程序,显示或打印逐次被选中进程的进程名,以及进程控制块的动态变化过程。 实验要求: 1. 详细描述实验设计思想、程序结构及各模块设计思路; 2. 详细描述程序所用数据结构及算法; 3. 明确给出测试用例和实验结果; 4. 为增加程序可读性,在程序中进行适当注释说明; 5. 认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等; 6. 实验报告撰写要求结构清晰、描述准确逻辑性强; 7. 实验过程中,同学之间可以进行讨论互相提高,但绝对禁止抄袭。 ..

.

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】

设计思想:

1. 模拟单CPU系统时间片切换、进程切换。

2. 使用优先队列,让优先级高的进程位于队列顶端。

在每次时钟周期时,从优先队列队首取出优先级最高的进程,并使其运行一个时钟周期,然后将其优先级减1,已运行时间加1。然后判断程序是否完成,如果未完成,则重新加入优先队列,参与时钟周期。

数据结构:

使用优先队列,以获得优先级最高程序。 源代码:

#include #include using namespace std;

// 进程控制块PCB struct PCB { unsigned int pid; //进程id unsigned int priority; //进程优先级 unsigned int claimTime;

//需要运行时间 unsigned int runTime; //已经运行时间

//构造函数

PCB(unsigned int id, unsigned int p, unsigned int ct) { pid=id; priority=p; claimTime=ct; runTime=0;

}

//运行当前进程一个时钟周期,并使进程优先级减1,已运行时间加1 void run() { runTime++;

if(priority>0)priority--; }

//判断进程是否完成 bool isFinished() { if(claimTime==runTime)

return true; else return false;

}

..

.

};

//重载<运算符,以使用STL中的priority_queue bool operator <(const PCB& p)const { }

if(priority!=p.priority)

return priority

return claimTime-runTime

//比较优先级

else

int main(int argc, char **argv) {

}

int clock=0;

priority_queue q; for(int i=0; i<5; i++) { }

while(!q.empty()) { //模拟单CPU }

printf(\程序结束\\n\); return 0;

printf(\当前时钟-\\t\, clock++); PCB t = q.top(); q.pop();

printf(\进程运行, 优先级 = %u, 已运行时间 = %u\\n\, t.pid, t.run();

printf(\执行过后:\\tpid = %u, 优先级 = %u, 已运行时间 = %u\\n\, t.pid, if(!t.isFinished())

q.push(t);

printf(\进程结束\\n\, t.pid); else int p, t;

printf(\请输入pid=%u的进程的优先级(非负数):\\n\, i); scanf(\, &p);

printf(\请输入pid=%u的进程的要求运行时间(非负数):\\n\, i); scanf(\, &t);

printf(\优先级 = %u, 要求运行时间 = %u\\n\\n\, i, p, t); q.push(PCB(i, p, t));

//优先队列

t.priority, t.runTime);

t.priority, t.runTime);

测试用例: 进程pid 0 1 2 3 4 ..

优先级 4 1 5 3 2 需要运行时间 3 4 4 6 2

天津理工大学操作系统实验报告实验一

.实验报告学院(系)名称:计算机与通信工程学院姓名班级nasta2010级2班课程名称学号实验项目nasta专业计算机科学与技术实验一:处理机调度算法的实现操作系统课程代码0668036实验时间2012年12月3日第3、4节实验地点软件实验室7-216批改意见成绩教师签字:
推荐度:
点击下载文档文档为doc格式
8jv2b1xich6u75f0b3w102ra61x73m01dhx
领取福利

微信扫码领取福利

微信扫码分享