【经典进程同步问题】

1.生产者-消费者问题
有一群生产者进程在生产产品,并将这些产品提供给消费者进程去消费。为使生产者进程与消费者进程能并发执行,
在两者之间设置了一个具有n个缓冲区的缓冲池,生产者进程将其所生产的产品放入一个缓冲区中;消费者进程可从
一个缓冲区中取走产品去消费。尽管所有的生产者进程和消费者进程都是以异步方式运行的,但它们之间必须保持
同步,既不允许消费者进程到一个空缓冲区去取产品,也不允许生产者进程向一个已装满产品且尚未被取走的缓冲区
中投放产品。
2.哲学家进餐问题
有五个哲学家共用一张圆桌,分别坐在周围的五张椅子上,在圆桌上有五个碗和五只筷子,他们的生活方式是交替
地进行思考和进餐。平时,一个哲学家进行思考,饥饿时便试图取用其左右最靠近他的筷子,只有在他拿到两只筷子
时才能进餐。进餐毕,放下筷子继续思考。
3.读者-写者问题
一个数据文件或记录可被多个进程共享,我们把只要求读该文件的进程称为“Reader进程”,其他进程则称为“Write进程”。
允许多个进程同时读一个共享对象,因为读操作不会使数据文件混乱。但不允许一个Write进程和其他Reader进程或Writer
进程同时访问共享对象。

时间: 2024-10-29 19:05:48

【经典进程同步问题】的相关文章

经典进程同步问题一:生产者-消费者问题(The producer-consumer problem)

(注:参考教材:计算机操作系统第四版 西安电子科技大学出版社) 问题描述:一群生产者进程在生产产品,并将这些产品提供给消费者去消费.为了使生产者进程与消费者进程能够并发进行,在两者之间设置一个具有n个缓冲区的缓冲池,生产者进程将产品放入一个缓冲区中:消费者可以从一个缓冲区取走产品去消费.尽管所有的生产者进程和消费者进程是以异方式运行,但它们必须保持同步:当一个缓冲区为空时不允许消费者去取走产品,当一个缓冲区满时也不允许生产者去存入产品. 解决方案:我们这里利用一个一个数组buffer来表示这个n

[经典进程同步问题]哲学家思考

问题描述 一张圆桌上坐着5名哲学家,每两个哲学家之间的桌上摆一根筷子,桌子的中间是一碗米饭,如图2-10所示.哲学家们倾注毕生精力用于思考和进餐,哲学家在思考时,并不影响他人.只有当哲学家饥饿的时候,才试图拿起左. 右两根筷子(一根一根地拿起).如果筷子已在他人手上,则需等待.饥饿的哲学家只有同时拿到了两根筷子才可以开始进餐,当进餐完毕后,放下筷子继续思考. 问题分析 1) 关系分析.5名哲学家与左右邻居对其中间筷子的访问是互斥关系. 2) 整理思路.显然这里有五个进程.本题的关键是如何让一个哲

经典进程同步问题

1.生产者-消费者问题 问题描述 两个进程共享一个大小为n的缓冲区,其中一个是生产者,将信息放入缓冲区:另一个是消费者,从缓冲区中取出信息.由于缓冲区是霖姐资源,如何实现缓冲区的互斥访问和生产者.消费者之间的同步? 分析 使用三个信号量: 1.full,记录缓冲区满槽数目,用于同步,初值为0: 2.empty,记录缓冲区空槽数目,初值为n: 3.mutex,用于互斥,初值为1: 生产者和消费者在进去临界区都执行down操作,在刚刚退出时执行up操作,就能实现互斥.同时,对full和empty执行

计算机操作系统

基于<计算机操作系统>(第四版)总结:OS引论.进程描述与控制.处理机调度与死锁.存储器管理.虚拟存储器.输入输出系统.文件系统 一.操作系统引论 1.目标:方便性.有效性.可扩充性.开放性 2.作用: 1.作为用户与计算机硬件系统之间的接口 2.作为计算机系统资源的管理者 3.实现对计算机资源的抽象 3.发展过程: 1.人工操作方式:用户独占全机,CPU等待人工操作--带(卡)装卸 2.脱机输入/输出方式:事先将装有用户程序和数据的纸带装入纸带输入机,外围机控制,把纸带内容输入到磁带上(类似

linux下多线程编程

最近研究mysql源码,各种锁,各种互斥,好在我去年认真学了<unix环境高级编程>, 虽然已经忘得差不多了,但是学过始终是学过,拿起来也快.写这篇文章的目的就是总结linux 下多线程编程,作为日后的参考资料. 本文将介绍linux系统下多线程编程中,线程同步的各种方法.包括: 互斥量(mutex) 读写锁 条件变量 信号量 文件互斥 在介绍不同的线程同步的方法之前,先简单的介绍一下进程和线程的概念, 它们的优缺点,线程相关的API,读者——写者问题和哲学家就餐问题. 基础知识 1. 进程和

多线程互斥-读写者问题

互斥量(mutex) 互斥锁创建 有两种方法创建互斥锁,静态方式和动态方式.POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER 来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;在LinuxThreads实现中, pthread_mutex_t是一个结构,而PTHREAD_MUTEX_INITIALIZER则是一个结构常量. 动态方式是采用pthread_mutex_init()函数来初始化互斥锁

操作系统复习目录

进程管理 进程的创建.终止.阻塞与唤醒.挂起与激活(条件) 信号量机制 经典进程同步问题 处理机调度与死锁 处理机调度的层次 调度算法:先来先服务和短作业优先.高优先权优先调度.基于时间片轮转 实时调度 为什么会产生死锁 死锁的处理方法:银行家算法 存储器管理 存储器的层次结构 程序装入和连接 存储器分配方式 页面 分段存储

读者---写者问题

经典进程同步与互斥问题 读者---写者问题 1.问题描述 一个数据对象若被多个并发进程所共享,且其中一些进程只要求读该数据对象的内容,而另一些 进程则要求写操作,对此,把只想读的进程称为“读者”,而把要求写的进程称为“写者”.在 读者--写着问题中,任何时刻要求“写者”最多只允许有一个,而读者则允许有多个.因为多个 读者的行为互不干扰,他们只是读数据,而不改变数据对象的内容,而写者则不同,他们要改变数据对象的内容,如果他们同时操作,则数据对象的内容将会改变的不可知.所以对共享资源的读写操作的限制

操作系统01_进程与线程

进程和线程 并发和并行 并行是多个事件在同一时刻发生,并发是多个事件在同一时间间隔内发生. 操作系统的基本特征 并发程序并发执行 共享互斥共享和同时访问两种方式 虚拟时分复用技术和空分复用技术 异步进程异步执行,停停走走向前推进,时间片 什么是进程? 程序是指令和数据的有序集合,进程是进程实体(程序段.数据段.PCB)在处理机上的一次执行过程.进程是系统资源分配和调度的一个独立单位. 引入进程是为了程序并发执行,以提高资源利用率和系统吞吐量. 什么是线程? 线程是独立调度.独立运行和分派的基本单