From 793840a9d4316410de050ab273c35bb9ed247f4e Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Thu, 8 Mar 2018 21:56:48 +0800 Subject: [PATCH] auto commit --- notes/计算机操作系统.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/notes/计算机操作系统.md b/notes/计算机操作系统.md index af153244..8e156599 100644 --- a/notes/计算机操作系统.md +++ b/notes/计算机操作系统.md @@ -233,7 +233,7 @@ shortest remaining time next(SRTN)。 2. 当一个新进程进入内存后,首先将它放入第一队列的末尾,按 FCFS 原则排队等待调度。当轮到该进程执行时,如它能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚未完成,调度程序便将该进程转入下一个队列的队尾。 -3. 仅当前 i -1 个队列均空时,才会调度第 i 个队列中的进程。 +3. 仅当前 i-1 个队列均空时,才会调度第 i 个队列中的进程。 优点:实时性好,同时适合运行短作业和长作业。 @@ -241,7 +241,7 @@ shortest remaining time next(SRTN)。 ### 3. 实时系统中的调度 -实时系统要一个服务请求在一个确定时间内得到响应。 +实时系统要求一个服务请求在一个确定时间内得到响应。 分为硬实时和软实时,前者必须满足绝对的截止时间,后者可以容忍一定的超时。 @@ -261,9 +261,8 @@ shortest remaining time next(SRTN)。 ### 2. 同步与互斥 -同步指多个进程按一定顺序执行;互斥指多个进程在同一时刻只有一个进程能进入临界区。 - -同步是在对临界区互斥访问的基础上,通过其它机制来实现有序访问的。 +- 同步指多个进程按一定顺序执行; +- 互斥指多个进程在同一时刻只有一个进程能进入临界区。 ### 3. 信号量 @@ -274,7 +273,7 @@ shortest remaining time next(SRTN)。 down 和 up 操作需要被设计成原语,不可分割,通常的做法是在执行这些操作的时候屏蔽中断。 -如果信号量的取值只能为 0 或者 1,那么就成为了 **互斥量(Mutex)** ,0 表示临界区已经加锁,1 表示临界区解锁。 +如果信号量的取值只能为 0 或者 1,那么就成为了 **互斥量(Mutex)** ,0 表示临界区已经加锁,1 表示临界区解锁。 ```c typedef int semaphore; @@ -294,9 +293,13 @@ void P2() { **使用信号量实现生产者-消费者问题** -使用一个互斥量 mutex 来对临界资源进行访问;empty 记录空缓冲区的数量,full 记录满缓冲区的数量。 +使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。 -注意,必须先执行 down 操作再用互斥量对临界区加锁,否则会出现死锁。因为如果都先对临界区加锁,然后再执行 down 操作,那么可能会出现这种情况:生产者对临界区加锁后,执行 down(empty) 操作,发现 empty = 0,此时生成者睡眠。消费者此时不能进入临界区,因为生产者对临界区加锁了,也就无法执行 up(empty) 操作,那么生产者和消费者就会一直等待下去。 +需要使用一个互斥量 mutex 来对缓冲区这个临界资源进行互斥访问。 + +为了控制生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。其中,empty 信号量是在生产者进程中使用,当 empty 不为 0 时,生产者才可以放入物品;full 信号量是在消费者进行中使用,当 full 信号量不为 0 时,消费者才可以取走物品。 + +注意,不能先对缓冲区进行加锁,再测试信号量。也就是说,不能先执行 down(mutex) 再执行 down(empty)。如果这么做了,那么可能会出现这种情况:生产者对缓冲区加锁后,执行 down(empty) 操作,发现 empty=0,此时生成者睡眠。消费者此时不能进入临界区,因为生产者对缓冲区加锁了,也就无法执行 up(empty) 操作,那么生产者和消费者就会一直等待下去。 ```c #define N 100