- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
考川大,操作系统重点打印(一卷再手,OS不愁)
进程:
线程:
进程同步,临界区问题
死锁问题:
内存管理:
虚拟存储:
文件系统:
I/O 系统:
算法1:进程共享变量int turn = 0
对于第i个进程(i = [0 或 1]):
do {
while (turn != i);
Critical Section
turn = 1- i;
Reminder Section
} while (1);
分析:满足了互斥,但不满足有空让进条件。做为反例,假设P0由于某些原因,还没有运行到与临界区相关的处理语句就停下来了。这个时候,turn初始地为零。那么就算P1已经准备好进入自己的临界区,它也无法进入。
算法:boolean flag[2]和initially flag [0] = flag [1] = false,这里,flag [i] = true意味着Pi已经准备好进入它的临界区了。对于第i个进程(i = [0 或 1]):
do {
flag[i] := true; while (flag[1-i]);
critical section
flag [i] = false;
Remainder Section
} while (1);分析:满足了互斥,但不满足有空让进条件flag[i] = true,这个时候P1开始执行,当P1执行倒同样一句话后,可以看到,flag[0]和flag[1]都等于true这样,两个进程会一直相互等下去。
Dekker算法(7.4题):同时使用算法1和算法2的共享变量,对于第i个进程(i = [0 或 1]):do {
flag[i]=true;
while (flag[1-i]) {
if (turn==1-i) {
flag[i]=false;
while (turn==1-i);
flag[i]=true;
}
}
}
Critical Section i
turn=1-i;
flag[i]=false;
Remainder Section
}while(1);
算法3:对于第i个进程(i = [0 或 1]): do {
flag [i]:= true; turn = 1-i; while (flag [1-i] and turn == 1-i);
Critical Section
flag [i] = false;
Remainder Section
} while (1);
分析:满足了互斥有空让进
基于TestAndSet的算法:
boolean TestAndSet(boolean target) {
boolean rv = target;
target = true;
return rv; }
进程共享变量boolean lock = false
对于第i个进程do {
while (TestAndSet(lock)) ;
Critical Section
lock = false;
Remainder Section
}while(1);
分析:满足了互斥,但不满足条件
lock = false;
Remainder Section
}while(1);
do {
while (TestAndSet(lock)) ;
Critical Section
基于Swap的算法:进程共享变量boolean lock = false和boolean waiting[n] 对于第i个进程do {
key = true;
while (key == true) Swap(lock,key);
Critical Section
lock = false;
Remainder Section
} while(1);
分析:满足了互斥,但不满足条件
lock = false;
Remainder Section }
do {
key = true;
while (key == true) Swap(lock,key);
Critical Section
共享变量 mutex = 1
do {
wait(mutex);
Rritical Section
signal(mutex)
Remainder Section;
} while (1);
P(S)操作和V(S)操作:
wait (S){
while(S( 0);
S--;}
signal (S){
S++;}
信号量的结构:
typedef struct {
int value;
struct process *L;
} sema
您可能关注的文档
最近下载
- 少先队基础知识竞赛试题(卷)参考资料.doc VIP
- 五年级上册数学小数混合运算复习西师大版.pptx VIP
- 慢性肾脏病饮食健康宣教.PPT
- 系列访谈实录之三设计篇.pdf VIP
- 威控特C919系列通用型矢量控制变频器用户手册V1.0.pdf VIP
- 最新人教版小学六年级上册数学《比的意义》课时达标练习题.doc VIP
- 2025-2026学年小学音乐人音版五线谱六年级上册-人音版(五线谱)教学设计合集.docx
- 建筑工程中的项目管理.pptx VIP
- 外国新闻传播史.pptx VIP
- 中国小肠镜临床应用指南中华医学会消化内镜学分会小肠镜和胶囊内镜学组(发布时间:2018-10).pdf VIP
原创力文档


文档评论(0)