`
huangjun_mail
  • 浏览: 118839 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IPC经典问题

阅读更多

    最近准备潜心研究操作系统,经过自己的精挑细选,我选择了Minix,主要原因是Minix很精简,可以学习到很多本质的东西。

而讲Minix的书籍《操作系统_设计与实现》也是当年linus torvalds创造Linux的思想源泉。刚看了此书一章多,觉得此书写得非常经典。

看完本书讲了IPC经典问题:哲学家进餐问题,读者-写者问题,理发师理发问题。

这些经典问题主要解决了进程间竞争资源问题,提出了进程同步的设计模型。

以下是理发师理发问题伪代码:

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--> 1 
 2 #define N 5
 3 typedef int semaphore;
 4 semaphore mutex=1;//用于互斥
 5 semaphore customers=0;//等候客人数信号量
 6 semaphore barbers=0;//等待顾客的理发师信号量
 7 int wating = 0;//没有理发客人数据量
 8 
 9 //理发师理发
10 void Barber()
11 {
12     while(true)
13     {
14         down(&customers);
15         down(&mutex);
16         wating--;
17         up(&barbers);
18         up(&mutex);
19         //理发-非临界区
20     }
21 }
22 //来理发客人了
23 void customer()
24 {
25     down(&mutex);
26     if(wating<N){
27         wating++;
28         up(&customers);
29         up(&mutex);
30         down(&barbers);//看理发师是否空闲,如果繁忙等待
31         //理发客人等待-非临界区
32     }
33     else
34     {
35         up(&mutex);
36     }
37 }

 

 

分享到:
评论

相关推荐

    IPC经典问题.doc

    【IPC经典问题】主要涉及了进程间的通信机制(Interprocess Communication, IPC)以及经典的问题解决方案。在多进程环境中,为了确保数据的一致性和安全性,通常需要使用同步原语,如信号量(Semaphore)来协调不同...

    IPC之睡眠理发师问题

    "IPC之睡眠理发师问题"是一个经典的多线程并发控制问题,源于计算机科学中的同步问题。在这个问题中,我们设想有一个理发师在一个小镇上工作,他只有一位顾客同时可以服务。当没有顾客时,理发师会休息。然而,这个...

    UNIX下C语言的对IPC资源的经典操作

    本篇文章将深入探讨在这些系统中C语言如何进行IPC资源的经典操作,帮助开发者理解并掌握这些核心技能。 一、信号(Signals) 信号是UNIX系统中最基础的IPC形式,用于进程间的异步通知。C语言中,可以使用`signal()`...

    Linux通用的IPC方法集合

    6. **生产者-消费者模型(`produce.c`, `produce.txt`)**:`produce.c` 可能是实现了一个生产者-消费者问题的示例,这是一个经典的多线程/进程同步问题。生产者将数据放入缓冲区,消费者从缓冲区取出数据,通过IPC...

    IPC读者写者和睡眠理发师问题

    读者写者问题是多线程编程中的一个经典问题,涉及如何协调对共享资源的访问。在原始问题中,允许多个读者同时读取资源,但只允许一个写者进行写操作。然而,当有写者正在写入时,任何读者都不应被允许读取,因为写...

    ipc.rar_IPC_哲学家就餐_哲学家就餐问题

    本文将深入探讨一个经典的多进程同步问题——哲学家就餐问题,并阐述如何利用信号量来解决这个问题。 哲学家就餐问题由计算机科学家Edsger W. Dijkstra提出,用以模拟并发环境下的资源竞争问题。问题描述如下:有五...

    ipc.rar_IPC_linux i_linux ipc

    你可以通过`man`命令查看系统调用的详细信息,或者参考《Unix/Linux Programming Interface》等经典书籍深入学习。同时,编写小程序实践这些概念,可以帮助你巩固知识,比如创建一个使用信号量保护的共享内存段,...

    一份详尽的IPC$入侵资料

    网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄. 不过话虽这样说,但我个人认为这些文章讲解的并不详细,对于第一...

    IPC$ 大全

    网上关于ipc$入侵的文章可谓多如牛毛,而且也不乏优秀之作,攻击步骤甚至可以说已经成为经典的模式,因此也没人愿意再把这已经成为定式的东西拿出来摆弄。 不过话虽这样说,但我个人认为这些文章讲解的并不详细...

    进程同步与通信

    进程的同步机制 进程间的联系 进程的同步机制──信号量及 P.V操作 IPC经典问题

    04_IPC and Process Synchronization

    进一步地,课程材料探讨了经典进程同步问题,如生产者-消费者问题、读者-写者问题等,并介绍了用于解决进程同步问题的多种工具,如信号量、互斥锁、事件标志、条件变量等。这些工具是操作系统提供的抽象,它们为...

    银行柜员问题

    操作系统实验 进程间通信的经典IPC问题

    Multiprocessor scheduling to account for interprocessor communication

    动态层级调度技术是对经典的HLFET列表调度策略的一种改进,其目的是为了更好地处理IPC和同步开销。该技术通过在每个步骤中使用动态变化的优先级来匹配节点和处理器,从而实现了负载平衡与处理器间通信成本之间的均衡...

    操作系统 抽烟者问题 Linux Unix

    操作系统中的“抽烟者问题”(Smoker Problem)是一种经典的多线程同步问题,它源于并发编程中的资源分配和协作模型。此问题源自1968年Edsger Dijkstra提出的一个示例,用来演示信号量机制的有效性。在这个问题中,...

    matlab-基于IPC模糊控制算法的倒立摆控制系统matlab仿真-源码

    倒立摆控制是一个在控制理论中具有挑战性的经典问题,因为它的稳定性要求非常高。这个MATLAB项目专注于使用IPC(Intelligent Proportional Control)模糊控制算法来实现倒立摆的控制,这是一种结合了传统PID控制与...

    利用同步互斥解决理发师问题

    分为顾客进程与理发师进程,将PV原语解决操作系统中的经典问题——理发师问题利用编程语言实现,产生一个自动判断顾客进入理发店的模拟场景。编程环境为Microsoft Vitual Studio.NET 2003,C#语言,用Mutex类实现...

    操作系统课件:03_ipc.ppt

    操作系统中的进程间通信(IPC,Interprocess Communication)是多任务环境下确保不同进程间协同工作的重要机制。本课件主要探讨了传递信息的方式、保护关键活动以及在存在依赖性时的正确顺序,这些概念同样适用于...

    操作系统课程设计有限缓冲区问题的实现

    在计算机科学领域,有限缓冲区问题通常被称为生产者-消费者问题,这是一个经典的进程间通信问题,用于研究同步机制。该问题涉及到两个进程或线程:生产者和消费者。生产者负责生成数据,并将其放入缓冲区;消费者则...

    操作系统实训报告进程同步和互斥

    哲学家进餐问题是并发控制领域中的经典问题之一,通过解决这个问题,可以更好地理解和掌握进程之间如何有效地协调共享资源的使用。 #### 二、设计内容 本实训的设计内容围绕哲学家进餐问题展开,具体包括: 1. **...

    用信号量函数实现的哲学家吃饭问题

    哲学家吃饭问题是一个经典的多线程同步问题,源自计算机科学先驱Dijkstra提出的并发控制问题。在这个问题中,五个哲学家围坐在一张圆桌旁,每个人面前都有一根筷子。当一个哲学家想要吃饭时,他需要拿起左右两边的两...

Global site tag (gtag.js) - Google Analytics