第一篇:21世纪末的万能处理机
21世纪末的万能处理机
现在世界上的垃圾废品越来越多,到处都是乌烟瘴气的,我真希望我们的城市能像月球一样干净,像白雪一样纯洁,人们穿着鞋子沾不上一点灰尘,晚上不脱鞋也可以上床睡觉。作为一个喜欢幻想、热爱生活的我当然要挺身而出,搞出一个造福于人类的发明创造来。目前,我正在构想一个奇妙的万能处理机。你可别小瞧我的万能处理机,它作用可大啦!它可以把污水输进去按一个纯净水字样的按钮,污水就会变成一瓶瓶清洌的纯净水;把废纸输进去按一个圣诞卡字样的按钮,废纸就会变成一个个精致的圣诞卡;把废塑料输进去按一个绿色雨衣字样的按钮,废塑料就会变成一件件崭新的绿色雨衣我的万能处理机真神奇,作用不小吧!
下面我给你介绍一下它的造型:它的样子像一座城堡,两边有一排排运输的管子,上面有一个尖尖的塔盖子,下面有6个轮子可以移动,它可以变大变小,里面是用铁做的,铁表面有最新的保护膜,你不用担心会生锈,哈哈,还可以吧!
正巧碰上2100年奥运会在我国举办,我便把它带上去介绍给各位来宾和运动员,也许最先老外们还不相信,那我就给他们一一做示范。他们听了、看了后,肯定会赞不绝口,好多老外都要极力抢购我的万能处理机呢。
过了一会儿,连聪明的动物也来抢购我的万能处理机,我的大发明轰动了北京和全世界。好多人来采访我,我上了电视、报纸、杂志,联合国知道后还给我发了最佳专利奖和杰出人才奖呢!
第二篇:处理机调度与死锁小结
第三章 处理机调度与死锁
重点与难点小结
1.高优先权调度和基于时间片的轮转调度算法
1)高优先权优先调度
2)高响应比优先调度
3)时间片轮转调度
4)多级反馈队列调度
2.常用的几种实时调度算法
1)最早截止时间优先(EDF)算法
2)最低松弛度优先(LLF)算法
3.多处理机环境下的进程(线程)调度方式
1)自调度方式
2)成组调度方式
3)专用处理器分配方式
4.死锁的基本概念
1)产生死锁的原因
2)产生死锁的必要条件
5.预防死锁的方法
1)摒弃互斥条件
2)摒弃请求保持条件
3)摒弃不剥夺条件
4)摒弃环路等待条件
5)各种方式的比较
6.死锁的避免
熟练掌握银行家算法和安全性检测算法,并能利用这两个算法求解具体问题
第三篇:情书,来自世纪末的呼唤!!!
这是本站(www.xiexiebang.com)精心收集的情书,相信你的爱情在这些深情的情书中飞舞!永恒!
千里迢迢踏征途,只为网上真恋情!!
我已深思熟虑达2个多月之久。终于有一天,在我们之间感情的驱使下,也就是在2000年本世纪末的最后一个冬天里。那天,12月20日凌晨2点 30分,我登上了郑州开往唐山的2088次列车.
我们还为接触过,照片上的她,是那么的活泼、那么的善良,笑的是那么的甜、那么的开心。在这漆黑、寒冷的夜里,她是不是也在想着我们明天见到后,后果是什么样子,是我们彼此向往的那样,还会是像别人所说的哈尔滨的那对网上恋人一样,见面后不欢而散。我在沉思、我在保持沉默......,时间越来越接近了,10点、10.30分、11.15分......此刻的我,心情非常激动。我仰慕已久的“她”是我梦想中的那种女孩吗?由于本次列车晚点12点才能到达唐山,可是现在已经11.55了,我的心跳速度加快了,此时的我不知该怎么鼓励自己去勇敢的面对现实。说实话,我很怕,可我还是在期望见到她的情况下深深的吸了口气,拿着我的行李包慎重的走出出站口。面对着前方人,“她”是不是也在拥挤的人群中等待着我的到来呢!我还没有看到她,于是走到旁边公用电话前,拿起那沉重的电话拨起了她的号码138......,电话通了,“你在那里呀?我到了”,我说话的声音在颤抖。她说话的声音还是那么的甜,我看到你了,我在你的背后。哦,同时我也看到了她,个子大概有1米65左右,穿着黑色的休闲袄、裤子。我看到了她那微笑的面颊,我发现我好象真的喜欢上她了,奇怪的是,我们出次见面居然没有感到一点陌生,好象我们是离别很长时间的恋人,又再度重逢。“你累了吧!做车冷吗?”她对我微笑的说,“你饿了吧!我们去吃饭好吗”?出门再外,人生地不熟,只能靠她按派了,我没有说什么。可是到了那家“麦当劳”我真的没有胃口,我目不转睛的看着她。她是那么的善良、还那么的贤惠。我决定我真的爱她一辈子。最后,没有办法我们只能参谋去那里住了,“金龙大酒店吧”!她对我说。我没有反对,和她走进那家宾馆。我们住在517房间,我的心情简直难以形容。我实在不能控制我自己的情绪,紧紧的,我握住她的手,对她说道:“你真的让我想了你好久,你知道我是真的付出了我的感情吗?”......那天夜里我们两个谈到深夜,直到凌晨2点才睡着。我反复的追问她:“为什么,我连一个本地的网友也没有见过,又为什么我会走这么远的地方,目的只是为了见你一个。” 我真的不能相信我自己,是什么力量使我值得付出这么大的代价。
朋友,你有没有听到,“网上无美女,美女她不上网”这句话。可我不是为了“美女”而是为了追求真正的网上恋情。我活了23年。最早,朋友见网友的时候,我总是那种嬉笑的语气在刺激他们:“见网友,你在发神经呀!可能吗”?我真的不敢相信他们,是和我一样,为了追求真正的爱情,还是年轻为了追求那种精神上的快感。可是如今我也到了这种地步,说实在话:“真的,我为了她我宁可抛弃我的一切,什么金钱、权利。我什么都不想要,只因为我爱她!到现在她的妈妈还没有表态,我不知道她母亲是不是同意我们在一起、还是渴望她在本地找一个真正的男朋友。总之,我爱她,是天地可以证明的,我可以向毛主席保证,只要让我拥有她,我愿意抛弃我的一切。”
我初次准备在那里住两天。可是,朋友,你们有没有感到在这段时间里,仅仅几十个小时在我们的眼里是多么的短散、多么的宝贵。我真的不想失去她,我也不想悲伤的离开她。我太爱她了。你们又有谁可知道我的心......
第一页上一页12下一页尾页第四篇:操作系统-课程设计报告-处理机调度程序
操作系统
课程设计报告
学校:广州大学
学院:计算机科学与教育软件学院 班级:计算机127班 课题:处理机调度程序
任课老师:陶文正、陈文彬
姓名:黄俊鹏
学号:1200002111 班内序号:27 成绩:
日期:2015年1月6日
一、设计目的
在多道程序和多任务系统中,系统内同时处于就绪状态的进程可能有若干个。也就是说能运行的进程数大于处理机个数。为了使系统中的进程能有条不紊地工作,必须选用某种调度策略,选择一进程占用处理机。要求学生设计一个模拟处理机调度算法,以巩固和加深处理机调度的概念。
二、设计要求
1)进程调度算法包括:时间片轮转法,短作业优先算法,动态优先级算法。2)可选择进程数量
3)本程序包括三种算法,用C语言实现,执行时在主界面选择算法(可用函数实现)(进程数,运行时间,优先数由随机函数产生)执行,显示结果。
三、设计思路及算法思想
1.界面菜单选项
一级菜单提供2个选项: ① 自动生成进程数量 ② 手动输入所需进程数量
一级菜单选择完毕后进入二级菜单: ① 重新生成进程 ② 时间片轮转法 ③ 短作业优先算法 ④ 动态优先级算法 ⑤ 退出程序
2.调度算法
程序所用PCB结构体
需要用到的进程结构体如上图所示
1)时间片轮转法
主要是设置一个当前时间变量,curTime和时间片roundTime。
遍历进程组的时候,每运行一个进程,就把curTime += roundTime。进程已运行时间加roundTime
2)短作业优先算法
遍历进程组,找到未运行完成并且运行时间最短的进程,让它一次运行完成,如此往复,直到所有进程都运行完成为止。
3)动态优先级算法
做法跟短作业优先算法类似,此处主要是比较进程的优先数,优先级高者,先执行。直到全部执行完毕。当一个进程运行完毕后,适当增减其余进程的优先数,以达到动态调成优先级的效果。
3.程序流程图
四、运行截图
1)启动后输入5,生成5个进程
2)输入1,选择时间片轮转法。
自动输出结果,分别是时间片为1和4的结果
3)输入2,选择短作业优先算法
4)输入3,选择动态优先级算法
5)输入0,重新生成进程,再输入3,生成3个进程,选择2.短作业优先算法
6)输入q,退出
五、心得体会
通过这次实验,让我对操作系统的进程调度有了更进一步的了解。这个实验的模拟程度跟真实系统相比只是冰山一角,由此可见操作系统是何其复杂的软件产品,仅进程调度就有那么丰富和内涵的知识需要掌握。
但是再复杂的系统,都是由小部件构成的。古语云:不积跬步,无以至千里。不积小流,无以成江海。掌握这些基础的知识,可以为以后打下扎实的基础。
六、附录(源代码)
//
// main.c
// ProcessDispatch //
// Created by Jeans on 1/5/15.// Copyright(c)2015 Jeans.All rights reserved.//
#include
//最小进程数
#define MIN_PROCESS //最大进程数
#define MAX_PROCESS
//最小优先数
#define MIN_PRIORITY
0 //最大优先数
#define MAX_PRIORITY
//最小运行时间
#define MIN_RUNNING_TIME
//最大运行时间
#define MAX_RUNNING_TIME
typedef struct PCB{
char name;
//进程名
int priority;
//优先数
int runningTime;
//运行时间
int arriveTime;
//到达时间
int beginTime;
//开始时间
int finishTime;
//完成时间
int cyclingTime;
//周转时间
double weigthCyclingTime;//带权周转时间
int hadRunTime;
//已经运行时间
int finish;
//是否完成 }PCB;//获取随机数
int GetRandomNumber(int min,int max){
return arc4random()%(max-min)+ min;}
//初始化PCB组
void InitPCBGroup(PCB p[],int num){
char name = 'A';
for(int i = 0;i < num;i++){
p[i].name = name;
p[i].priority = GetRandomNumber(MIN_PRIORITY, MAX_PRIORITY);
p[i].runningTime = GetRandomNumber(MIN_RUNNING_TIME,MAX_RUNNING_TIME);
name++;
} }
void PrintResult(PCB p[],int num){
double avgCycTime = 0,avgWeiCycTime = 0;
printf(“|进程名
到达时间
运行时间
开始时间
完成时间
周转时间
带权周转时间
优先数
|n”);
for(int i = 0;i < num;i++){
printf(“|%3c
%-4d
%-4d
%-4d
%-4d
%-4d
%-6.2f
%-4d|n”,p[i].name,p[i].arriveTime,p[i].runningTime,p[i].beginTime,p[i].finishTime,p[i].cyclingTime,p[i].weigthCyclingTime,p[i].priority);
avgCycTime += p[i].cyclingTime;
avgWeiCycTime += p[i].weigthCyclingTime;
//还原
p[i].arriveTime = 0;
p[i].beginTime = 0;
p[i].finishTime = 0;
p[i].cyclingTime = 0;
p[i].weigthCyclingTime = 0;
p[i].hadRunTime = 0;
p[i].finish = 0;
}
avgWeiCycTime /= num;
avgCycTime /= num;
printf(“平均周转时间:%.2f
平均带权周转时间:%.2fn”,avgCycTime,avgWeiCycTime);} //时间片轮转法
void RealRoundRobin(PCB p[],int num,int roundTime){
printf(“nn-----------------------------时间片:%d------n”,roundTime);
int finishNum = 0;
int curTime = 0;
while(finishNum!= num){
for(int i = 0;i < num;i++){
if(p[i].finish)continue;
//开始时间
if(p[i].beginTime == 0 && i!= 0){
p[i].beginTime = curTime;
}
//已经完成
if(p[i].hadRunTime + roundTime >= p[i].runningTime){
p[i].finishTime = curTime + p[i].runningTimep[i].arriveTime;
p[i].weigthCyclingTime = p[i].cyclingTime/(double)p[i].runningTime;
p[i].finish = 1;
finishNum ++;
curTime += p[i].runningTimep[min].arriveTime;
p[min].weigthCyclingTime = p[min].cyclingTime/(double)p[min].runningTime;
p[min].finish = 1;
finishNum++;
curTime = p[min].finishTime;
}
PrintResult(p, num);}
//动态优先级算法
void DynamicPriorityFirst(PCB p[],int num){
printf(“nn-----------------------------动态优先级算法--n”);
int finishNum = 0;
int curTime = 0;
while(finishNum!= num){
int min = 0;
//查找优先级最高下标
for(int i = 1;i < num;i++){
if(p[i].finish == 0 && p[min].priority >= p[i].priority)
min = i;
else if(p[i].finish == 0 && p[min].finish == 1)
min = i;
}
p[min].beginTime = curTime;
p[min].hadRunTime = p[min].runningTime;
p[min].finishTime = p[min].beginTime + p[min].runningTime;
p[min].cyclingTime = p[min].finishTime-p[min].arriveTime;
p[min].weigthCyclingTime = p[min].cyclingTime/(double)p[min].runningTime;
p[min].finish = 1;
finishNum++;
curTime = p[min].finishTime;
}
PrintResult(p, num);}
int main(int argc, const char * argv[]){
PCB pcbGroup[30];
//pcb数组
int processNum = 0;//进程数
while(1){
//选择进程数量
while(1){
if(processNum!= 0)
break;
printf(“n----------n”);
printf(“当前默认进程数范围%d--%dn”,MIN_PROCESS,MAX_PROCESS);
printf(“1)输入0可随机生成进程数目n2)输入%d-%d范围内数字,回车,可生成指定数目进程n>>>>>>”,MIN_PROCESS,MAX_PROCESS);
int num = 0;
scanf(“%d”,&num);
if(num == 0){
processNum = GetRandomNumber(MIN_PROCESS, MAX_PROCESS);
break;
}else{
if((num >= MIN_PROCESS)&&(num <= MAX_PROCESS)){
processNum = num;
InitPCBGroup(pcbGroup,processNum);
break;
}else
printf(“n输入有误,请重新输入.n”);
}
}
//选择算法
printf(“n-----------------------------请输入对应选项序号-----------------------------n”);
printf(“0.重新生成进程 | 1.时间片轮转法 | 2.短作业优先算法 | 3.动态优先级算法 | q.退出n>>>>>>”);
char ch;
while((ch = getchar())== 'n');
switch(ch){
case '0'://0 重新生成进程
processNum = 0;break;
case '1'://1 时间片轮转法
RoundRobin(pcbGroup, processNum);break;
case '2'://2 短作业优先算法
ShortestJobFirst(pcbGroup, processNum);break;
case '3'://3 动态优先级算法
DynamicPriorityFirst(pcbGroup,processNum);break;
case 'q'://q 退出
exit(0);
default:
break;
}
}
return 0;}
第五篇:第三章 处理机调度与死锁小结
第三章 处理机调度与死锁
重点与难点小结
1.高优先权调度和基于时间片的轮转调度算法
1)
2)
3)时间片轮转调度
4)多级反馈队列调度
2.常用的几种实时调度算法
1)最早截止时间优先(EDF)算法
2)最低松弛度优先(LLF)算法
3.死锁的基本概念
1)2)4.预防死锁的方法
1)摒弃互斥条件
2)摒弃请求保持条件
3)摒弃不剥夺条件
4)摒弃环路等待条件
5)各种方式的比较
5.死锁的避免 熟练掌握银行家算法和安全性检测算法,并能利用这两个算法求解具体问题
6.死锁定理