Critical-Section Problem (CS130 notes)

Critical-Section Problem

What is critical section?

A critical section is a sequence of code that atomically accesses shared state.

Solutions - Three Requirements

  • Mutal exclusion

At most one thread holds the lock.

  • Progress

If no thread holds the lock and any thread attempts to acquire the lock, then eventually some thread succeeds in acquiring the lock.

  • Bounded waiting

If thread T attempts to acquire a lock, then there exists a bound on the number of times other threads can successfully acquire the lock before T does.

Critical-Section Handling in OS

preeptive & non-preeptive

  • Preemptive

Allows preemption of process when running in kernel mode.

  • Non-preemptive

Runs until exits kernel mode, blocks, or voluntarily yields CPU.
Essentially free of race conditions in kernel mode

Peterson Algorithm

Suitable for two processes. Let’s say p i p_{i} pi and p j p_{j} pj.

int turn;
boolean flag[2];
/* Peterson Algorithm for Pi */
do {
	flag[i] = True;
	turn = j;
	while (flag[j] && turn == j);
	/* critical section */
	flag[i] = False;
	/* remainder section */
} while (True)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值