摘要:
为什么要引入管程 信号量机制存在的问题是:编写程序困难、易出错 很容易出现死锁。 管程的定义和基本特征 和之前的pv操作一样,也是来实现同步和互斥的 1.局部于管程的共享数据结构说明; 2.对该数据结构进行操作的一组过程; 过程:函数 3.对局部于管程的共享数据设置初始值的语句; 4.管程需要有一个 阅读全文
posted @ 2025-09-29 16:18
是我,米老鼠
阅读(8)
评论(0)
推荐(0)
摘要:
一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭。哲学家们倾注毕生的精力用于思考和进餐,哲学家在思考时,并不影响他人。只有当哲学家饥饿时,才试图拿起左、右两根筷子(一根一根地拿起)。如果筷子已在他人手上,则需等待。饥饿的哲学家只有同时拿起两根筷子才可以开始进餐,当进餐 阅读全文
posted @ 2025-09-29 15:59
是我,米老鼠
阅读(15)
评论(0)
推荐(0)
摘要:
读者-写者两组并发进程,共享一个文件,当两个或两个以上的读进程同时访问共享数据时,不会产生副作用,单如果某个写进程和其他进程(读和写)同时访问共享数据则可能导致数据不一致的错误。 因此要求: 1.允许多个读者可以同时对文件执行读操作 2.只允许一个写者往文件中写信息 3.任意一个写者在完成写操作之前 阅读全文
posted @ 2025-09-29 15:40
是我,米老鼠
阅读(11)
评论(0)
推荐(0)
摘要:
semaphore mutex=1,apple=0,orange=0,plate=1; dad(){ while(true){ 准备一个苹果; P(plate);//表示自己要使用这个盘子 P(mutex); 把苹果放入盘子; V(mutex); V(apple);//盘子里苹果数量+1 } } m 阅读全文
posted @ 2025-09-29 14:47
是我,米老鼠
阅读(10)
评论(0)
推荐(0)
摘要:
生产者-消费者问题 系统中有一组生产者进程和一组消费者进程,生产者进程每次生一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用 生产者和消费者共享一个初始为空,大小为n的缓冲区 缓冲区没有满的时候,生产者才能把产品放入缓冲区,否则必须等待。 只有缓冲区没空的时候,消费者才能从中取出产品, 阅读全文
posted @ 2025-09-29 11:42
是我,米老鼠
阅读(13)
评论(0)
推荐(0)
摘要:
实现进程互斥 1.分析并发进程的关键活动,划定临界区(如:对临界资源打印机的访问) 2.设置互斥信号量mutex,初始值为1 (mutex n.互斥) 3.进入区P(mutex)--申请资源 4.退出区V(mutex)--释放资源 注意: 对于不同的临界资源需要设置不同的互斥信号量mutex P/V 阅读全文
posted @ 2025-09-29 11:06
是我,米老鼠
阅读(16)
评论(0)
推荐(0)
摘要:
互斥锁 特性: 1.需要忙等,进程时间片用完才下处理机,违反让权等待 2.优点:等待奇迹不用切换进程上下文,多处理机系统中,若上锁的时间短,则等待的代价很低 3.常用于多处理机,一个核忙等,其他核照常工作,并快速释放临界区 4.不太适合用于单处理机系统,忙等过程中不可能解锁 信号量机制 用户可以使用 阅读全文
posted @ 2025-09-29 10:17
是我,米老鼠
阅读(19)
评论(0)
推荐(0)
摘要:
中断屏蔽方法 利用开关中断指令实现 关中断后,不允许当前进程被中断,也就不会发生进程切换 优点:简单高效 缺点:不适用于多处理机,只适用于操作系统内核进程,不适合于用户进程(因为开关中断指令只运行于内核态) TestAndSet指令 简称TS指令,有的地方也称为TestAndSetLock指令,TS 阅读全文
posted @ 2025-09-29 09:27
是我,米老鼠
阅读(15)
评论(0)
推荐(0)