Linux操作系统基础知识之七:内核中的同步

Q1.        什么是临界区?什么是竞争状态?什么是同步?

A:

1)        临界区(critical regions)就是访问和操作共享数据的代码段,多个内核任务并发访问同一个资源通常是不安全的;

2)        如果两个内核任务可能处于同一个临界区,就是一种错误现象;如果确实发生了这种情况,就称它为竞争状态

3)        避免并发和防止竞争状态称为同步(synchronization)。

 

Q2.        简要介绍一下死锁及避免死锁的方法。

答:死锁包括自死锁和ABBA死锁,

1)        产生死锁有四个原因:互斥使用不可抢占请求和保持,以及循环等待

2)        避免死锁的方法有:破坏“不可剥夺”条件、破坏“请求和保持”条件、破坏“循环等待”条件。

 

Q3.        内核中造成并发执行的原因是什么?

A:“并发”分为“伪并发”和“真并发”两种,内核中造成并发执行的原因有以下几种:

1)        中断:它可能随时打断当前正在执行的代码;

2)        内核抢占:内核中的任务可能会被另一个任务抢占;

3)        睡眠及其与用户空间的同步:在内核执行的进程可能会睡眠,这就会唤醒调度程序,调度一个新的用户进程执行;

4)        对称多处理:两个或多个处理器可以同时执行代码。

 

Q4.        给出信号量的定义,并说明down()和up()的含义。

A:

1)        Linux中的信号量是一种睡眠锁,它是1968年由Dijkstra提出的,如果一个任务试图获得一个已被持有的信号量,信号量会将其推入等待队列,然后让其睡眠;当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而可以获得这个信号量;

2)        信号量支持两个原子操作P()V(),前者叫做测试操作,后者叫做增加操作;后来的系统把这两种操作分别叫做down()和up();

3)       down()操作通过对信号量计数减1来请求获得一个信号量;up()操作用来释放信号量,该操作也被称作“提升”(upping)信号量,因为它会增加信号量的计数值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值