课程设计心得体会
…… …… 余下全文
课程设计心得体会
…… …… 余下全文
操作系统课程设计心得体会
…… …… 余下全文
南通大学操作系统课程设计实验报告
一、 设计内容
利用C++语言,实现操作系统模拟算法和windows的系统调用编程。分别设计进程调度的时间片轮转算法、银行家算法、信号量模拟超市购物算法、信号量模拟停车场算法,调试运行成功后,将它们整合起来,通过一个接口实现对它们的调用,运行时,选择不同的选项,调用执行各个功能算法。
二、 实现接口
通过一个c++命令行的主菜单显示5项功能操作:
①进程调度-时间片轮转算法②银行家算法③信号量模拟超市购物算法④信号量模拟停车场算法,选择不同的选项对应不同的操作,如下图所示:
三、 具体的算法和程序代码
本次课程设计共有4类模拟算法,分别是进程调度的时间片轮转算法、银行家算法、信号量模拟超市购物算法、信号量模拟停车场算法,设计的具体内容如下。
1.进程调度的时间片轮转算法
调度程序每次把cpu分配给就绪队列首进程、线程使用规定的时间间隔,称为时间片,这里是2个单位的时间,就绪队列中的每个进程、线程轮流的运行一个时间片,当时间片耗尽时,就强迫当前运行进程让出处理器,转而排列到就绪队列尾部,等候下一轮调度。此算法不是书上的,具体运行结果及代码如下:
}
void sjp()
{ struct pro *head=creatList();
printf("当前时间片大小为:%d\n",RR);
run(head); }
2.银行家算法
这个代码不是书上的,具体代码如下:
#include<iostream.h>//银行家算法
#include<string.h>
…… …… 余下全文
《操作系统》课程设计指导书
李海霞 编
信息工程学院基础教学部
二〇##年七月
目 录
实验一 Windows中线程与线程同步... 3
实验二 进程调度... 6
实验三 银行家算法... 8
实验四 请求页式存储管理中常用页面置换算法模拟... 14
实验一 Windows中线程与线程同步
一、实验目的
1、掌握Windows中线程的操作;
2、熟悉线程不同步时的现象及环境因素;
3、掌握一种同步对象的使用。
二、实验环境
PC机,Window操作系统,Vc++6.0。
三、实验理论基础及教材对应关系
1、线程和线程不同步的认识;
2、线程间的同步和通信。
四、实验内容与步骤
1、定义全局变量 int i, 初始值置为 0。
2、创建两个线程,一个对 i 执行加 1 操作,另一个对 i 执行减 1 操作。两个线程执行相同的次数。
#include <stdio.h>
#include <windows.h>
#define MaxCount 9000000 // 循环次数要很大,可多次尝试一些值
int i;
CRITICAL_SECTION cs;
DWORD __stdcall fun1( LPVOID p1)
{
for( int j =0 ;j < MaxCount;j++)
{
i++;
}
return 0;
}
DWORD __stdcall fun2( LPVOID p1)
{
for( int j =0 ;j < MaxCount;j++)
…… …… 余下全文
目录
一、课程设计目标.......................................................................... 3
二、课题内容.................................................................................. 3
三、设计思路.................................................................................. 3
四、源代码...................................................................................... 5
五、运行与测试.............................................................................. 9
六、心得体会................................................................................ 10
一、课程设计目标
学习多线程编程,使用线程的同步机制实现“哲学家进餐”问题。具体要求:
1.创建POSIX线程,实现多线程的并发执行,验证多线程共享进程资源的特性。
2.使用互斥量和条件变量,或使用信号量实现线程的同步互斥。
3. 验证 “ 哲学家进餐”问题中的死锁情况,并加以解决。
二、课题内容
哲学家进餐问题由Dijkstra提出,问题描述有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五支筷子,他们的生活方式是交替地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子时才能进餐。进餐完毕,放下筷子继续思考。
…… …… 余下全文
一、
实验目的在该部分中根据设计题目的要求,充分地分析和理解问题,叙述系统的功能要求,明确问题要求做什么?以及限制条件是什么?
(1) 输入的形式和输入值的范围;
(2) 输出的形式;
(3) 程序所能达到的功能;
二、实验原理(算法思想)
银行家算法是避免死锁的一种重要方法。 操作系统按照银行家制定的规则为进程分配资源,当进程首次申请资源时,要测试该进程对资源的最大需求量,如果系统现存的资源可以满足它的最大需求量则按当前的申请量分配资源,否则就推迟分配。当进程在执行中继续申请资源时,先测试该进程已占用的资源数与本次申请的资源数之和是否超过了该进程对资源的最大需求量。若超过则拒绝分配资源,若没有超过则再测试系统现存的资源能否满足该进程尚需的最大资源量,若能满足则按当前的申请量分配资源,否则也要推迟分配。
三、实验步骤、数据记录及处理
(一)概要设计
1)设计思路
第一部分:银行家算法(扫描)
1.如果Request<=Need,则转向2;否则,出错
2.如果Request<=Available,则转向3,否则等待
3.系统试探分配请求的资源给进程
4.系统执行安全性算法
第二部分:安全性算法
1.设置两个向量
(1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目)
(2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False
2.若Finish[i]=False&&Need<=Work,则执行3;否则执行4(I为资源类别)
3.进程P获得第i类资源,则顺利执行直至完成!并释放资源: Work=Work+Allocation; Finish[i]=true;转2
…… …… 余下全文