os临界区保护(critical region)以及mutex原理

[TOP]

什么是临界区保护?

临界区(critical region)是指一段特定的代码行为集合,其中可能包括对数据的修改,执行一段特定逻辑等等。

临界区的概念是因为并发编程(multiprogram)的出现导致的,当出现多个task、多个cpu、甚至网络中多个服务器对同一个逻辑对象操作时,就会有条件竞争出现,如果设对该逻辑对象的操作为A,此时必须对A做特殊保护,约定对这A的这种特殊保护统称为临界区保护(mutex exclue),称A操作的范围为临界区。

临界区不保护会出现什么问题?

举例说明,假设有两个task都执行如下代码:

// p is a global var
// ...if (p == NULL) {p = malloc(N);}
// .do some thingfree(p);

这里至少有两个问题:

  • 假设任务1和任务2都同步走到判断p是否为NULL的语句,两个任务均判断p为NULL,接着1先分配内存,紧接着2又重新给p分配内存,导致1任务内存泄漏
  • 1任


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部