操作系统--进程
samll_pebble
keep learning
展开
-
实现进程互斥需要遵循的原则
1.、空闲让进当临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。2、忙则等待当已有进程进入临界区时,其他试图进入临界区的进程必须等待。3、有限等待对请求访问的进程,应保证能在有限时间内进入临界区(保证不会饥饿)。4、让权等待当进程不能进入临界区时,应立即释放处理机,防止进程忙等待。...原创 2019-04-10 21:33:26 · 4345 阅读 · 0 评论 -
进程同步、互斥--哲学家进餐问题
1、问题描述一张圆桌上有5名哲学家,没两个哲学家之间有一根筷子,桌子中间由一碗米饭。当哲学家饥饿时会试图分别拿起左右两根筷子,如果筷子已在他人手上则需等待。饥饿的哲学家只有拿起两根筷子才能进餐,吃完后才能放下筷子。2、问题分析对哲学家分别编号0,1,2,3,4,对筷子编号0,1,2,3,4。i号哲学家左边筷子编号为i,右边编号为(i+1)%5。(1)方案1最多允许4个哲学家同时申请进餐,...原创 2019-04-16 21:29:08 · 2503 阅读 · 2 评论 -
进程互斥、同步--读者写者问题
1、问题描述有读者和写着两组并发进程,共享一个文件,两个及以上的读者进程可同时访问文件,但是写进程与写进程之间和写进程与读进程之间不能同时访问文件。2、关系分析semaphore rw=1; //实现对文件的互斥访问int count=0; //记录当前有几个读进程在访问文件semaphore mutex=1; //用于保证对count的互斥访问3、代码实现writer(){ wh...原创 2019-04-16 20:55:58 · 1192 阅读 · 0 评论 -
进程同步、互斥--吸烟者问题
1、问题描述:一个系统有三个抽烟者和一个供应者进程。每个抽烟者不停地卷烟并抽掉。卷烟需要三种材料:烟草、纸和胶水。三个抽烟者中,第一个有烟草,第二个有纸,第三个有胶水。供应者无限提供三种材料,每次提供两种,拥有剩下那种材料的抽烟者可以卷一根烟并抽掉,并告诉供应者,供应者再提供下两种材料(让三个消费者轮流抽烟)。2、关系分析互斥关系:互斥访问供应区mutex=1; (由于缓冲区大小为1,可不使...原创 2019-04-16 20:31:06 · 645 阅读 · 0 评论 -
进程互斥、同步--多生产者多消费者问题
1、问题描述:有一个缓冲区,生产者1和生产者2分别生产产品1和产品2,消费者1和消费者2分别消费产品1和产品2。只有当缓冲区空时,生产者才可以向缓冲区生产产品。当缓冲区不空时消费者1或者2才可以消费与之对应的产品。2、关系分析互斥关系:缓冲区只能互斥访问mutex=1; //实现互斥访问缓冲区同步关系:(1)生产者1生产产品1后,消费者1才能消费product1=0; // 缓冲区的产...原创 2019-04-16 20:05:00 · 1033 阅读 · 1 评论 -
进程同步、互斥--生产者消费者问题
1、问题描述:有一组生产者进程和一组消费者进程,生产者每次生产一个数据放入缓冲区(临界资源),消费者每次从缓冲区取出一个数据使用。缓冲区大小为n,当缓冲区满时生产者不能生产,当缓冲区空时消费者不能消费。2、问题分析:(1)只有缓冲区有空余时,生产者才能生产,否则等待;同步信号量 semaphore empty=n; //有空闲区域的初始值(2)只有缓冲区有产品时,消费者才能消费,否则等待;...原创 2019-04-12 21:25:17 · 930 阅读 · 0 评论 -
进程同步--信号量机制
用户进程可通过操作系统提供的一对原语(P操作和V操作)来对信号量进行操作,从而实现进程互斥、同步。1、整型信号量用一个整数型的变量,用来表示系统中某种资源的数量,只能对其进行三种操作:初始化、P操作、V操作。存在问题:不满足让权等待,导致忙等。2、记录型信号量P操作中,先S.value–,再判断S.value是否小于0。若小于0则说明没有相应资源,执行block原语阻塞;若不小于0,则说...原创 2019-04-12 20:36:29 · 444 阅读 · 0 评论 -
进程互斥--硬件实现方法
1、中断屏蔽方法利用“开/关中断指令”实现优点:简单、高效缺点:不适用于多处理机;由于开关中断权限很大,只适合操作系统的内核进程,不适用于用户进程。2、TestAndSet指令(TS、TestAndSetLock、TSL)TSL指令使用硬件实现,执行过程中不允许被中断TestAndSet实现逻辑//布尔型共享变量lock表示当前临界区是否被加锁//true表示已加锁bool Te...原创 2019-04-11 21:36:08 · 1639 阅读 · 0 评论 -
进程互斥--软件实现方法
1、单标志法算法思想:两个进程在访问完临界区后,会把使用临界区的权限交给另一个进程。每个进程进入临界区的权限只能被另一个进程赋予。违背原则:空闲让进2、双标识先检查法算法思想:设置一个布尔型数组flag[],数组中各元素用来标记进程想进入临界区的意愿,true表示想要进入。每个进程在进入临界区之前先检查当前有没有别的进程想进入临界区,如果没有,则把自身的flag设为true,之后开始访问临...原创 2019-04-11 21:09:53 · 1228 阅读 · 0 评论 -
进程死锁
1、概念各进程相互等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象。2、死锁产生的必要条件(1)互斥条件(2)不可剥夺条件(不能强行被夺走)(3)请求和保持条件(已经至少保持了一个资源,同时一直请求另一个资源)(4)循环等待条件(存在资源的循环等待链)3、对不可剥夺资源的不合理分配就可能导致死锁4、死锁的处理策略(1)预防死锁破坏产生死锁的四个必要条件中的一个或几个(...原创 2019-04-17 22:08:49 · 466 阅读 · 0 评论