下载此文档

软件技术基础11处理器管理2.ppt


文档分类:IT计算机 | 页数:约43页 举报非法文档有奖
1/43
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/43 下载此文档
文档列表 文档介绍
NO:1
第四章操作系统
处理器管理
阅读者-写入者问题
一些读者和一些写者对同一黑板进行读写。多个读者可同时读黑板,但一个时刻只能有一个写者,读者、写者不能同时使用黑板。
分析: 对于读者来说:
1) 无读者、写者,新读者可以读
2) 有写者等,但有其他读者正在读,则新读者也可以读
3) 有写者,新读者等
对于写者来说:
1) 无读者,新写者可以写
2) 有读者,新写者等待
3) 有其他写者,新写者等待
NO:2
第四章操作系统
设置2个信号量,w控制谁使用黑板,mutex保护临界区,初值都为1
读者:
P(mutex)
Readcount++
if(Readcount==1)
P(w)
V(mutex)


读数据
P(mutex)
Readcount - -
if(readcount==0)
V(w)
写者:
P(w)


写数据
V(w)
V(mutex)
上述方法其实是”读者优先”,只要有一个读者,就允许其后的读者访问数据。如果一直有新的读者陆续到来,写者将被严重推迟。
NO:3
为了防止”读者优先”导致的写者饥饿,可以考虑写者优先。当共享区被读者占用时,后续紧邻到达的读者可以继续进入。若此时有一个写者到来且阻塞等待,则写者后面到来的若干读者全部阻塞等待。
换句话说,只要有一个写者申请写数据,则不允许新的读者进入读数据。这样,写者只需等先于它到来的读者完成其读数据,就可以写入。
第四章操作系统
处理器管理
NO:4
读者进程写者进程
P(z) P(y)
P(rsem) writecount++
P(x) if writecount == 1
readcount++ P(rsem)
if readcount == 1 V(y)
P(wsem) P(wsem)
V(x) :
V(rsem) :
V(z) 写数据
: :
读:
: V(wsem)
P(x) P(y)
readcount-- writecount--
if readcount == 0 if writecount==0
V(wsem) V(rsem)
V(x) V(y)
x 互斥对readcount访问
y 互斥对writecount访问
rsem 当至少有1个写进程申请写数据时,互斥新的读进程读数据
z rsem阻塞队列仅允许一个读者排队等待,其后来的读者将在信号量z的阻塞队列中等待
NO:5
一个简单例子:
//Define a global variable.
long g_x = 0;
DWORD WINAPI ThreadFunc1(PVOID pvParam)
{ g_x++;
return(0);
}
DWORD WINAPI ThreadFunc2(PVOID pvParam)
{ g_x++;
return(0);
}
第四章操作系统
线程同步问题
MOV EAX, [g_x]
INC EAX
MOV [g_x], EAX
NO:6
第四章操作系统
线程同步问题
两个线程不可能在完全相同的时间内执行这个代码。因此,如果一个线程在另一个线程的后面执行这个代码,那么下面就是实际的执行情况:
MOV EAX, [g_x] ; Thread 1
INC EAX
MOV [g_x], EAX
MOV EAX, [g_x] ; Thread 2
INC EAX
MOV [g_x], EAX
当两个线程都将 g _ x 的值递增之后, g _ x 中的值就变成了2。
但 Wi n d o w s是个抢占式多线程环境。一个线程可以随时中断运行,而另一个线程则可以随时继续执行。
NO:7
第四章操作系统
线程同步问题
MOV EAX, [g_x] ; Thread 1
INC EAX ; Thread 1
MOV EAX, [g_x] ;Thread 2
INC EAX ;Thread 2
MOV [g_x], EAX ;Thread 2
MOV [g_x], EAX ;Thread 1
如果代码按这种形式来运行, g _ x中的最后值就不是2,而是1。
编译器生成代码的方法,哪个C P U在执行这个代码,以及主计算机中安装了多少个C P U等因素,决定了产生的结果可能是不同的。这就是该环境的运行情况,我们对此无能为力。但是, 操作系统确实提供了一些函数,如果正确地使用这些函数,就能确保产生应用程序的代码得到的结果。
NO:8
多个线程同时访问同一个全局变量,如果都是读取操作,则不会出现问题。如果一个线程负责改变此变量的值,而其他线程负责同时

软件技术基础11处理器管理2 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数43
  • 收藏数0 收藏
  • 顶次数0
  • 上传人shujukd
  • 文件大小1.12 MB
  • 时间2018-08-02