线程同步 同步:同步控制着线程之间的执行顺序,不让他们抢占式执行。在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。 原子访问:同一时刻,只允许一个线程访问临界资源; 原子操作:指多步操作组成的一个操作;原子操作中线程不会被切换,线程切换要么在原子操作 ...
分类:
编程语言 时间:
2020-06-29 09:53:49
阅读次数:
69
案例: 哲学家问题,生产者和消费者问题 ###临界资源 临界资源指的是一 些虽作为共享资源却又无法同时被多个线程共同 访问的共享资源。当有进程在使用临界资源时,其他进程必须依据 操作系统的同步机制等待占用进程释放该共享资源才可重新竞争使 用共享资源。 ###进程间的同步 ◆空闲让进:资源无占用,允许 ...
分类:
系统相关 时间:
2020-06-13 00:49:55
阅读次数:
89
一、互斥体 内核级临界资源(跨进程),互斥体可以看成能够放进内核(0环)中的一种令牌。 HANDLE CreateMutex( LPSECURITY_ATTRIBUTES lpMutexAttributes, // SD //安全描述符 BOOL bInitialOwner, // initial ...
如果说分布式互斥算法讲了如何协调多个进程获取权限和根据权限有序访问共享资源,即获得访问权限的进程可以访问共享资源,其他进程必须 等待拥有该权限的进程释放权限。这个权限的设置或者产生的原理就是分布式锁。 在单机多线程环境中,遇到多个线程访问同一个共享资源(在单机情况下,这种一般称作“临界资源”,分布式 ...
分类:
其他好文 时间:
2020-05-25 00:14:26
阅读次数:
60
分布式系统里排他性的资源访问方式,叫作分布式互斥,而这种被互斥访问的共享资源就叫作临界资源。 一.集中式算法 引入一个协调者程序便得到一个分布式互斥算法。每个程序在需要访问临界资源时,先给协调者发送一个请求。如果当前没有程序使用这个资源,协调者直接授权请求程序访问;否则,按照先来后到的顺序为请求程序 ...
分类:
编程语言 时间:
2020-05-24 19:30:23
阅读次数:
75
操作系统学习(十) 目录: 同步的基本概念 同步亦称直接制约关系,它是指为完成某种任务而建立的两个或多个进程,这些进程因为需要在某些位置上协调它们的工作次序而等待、传递信息所产生的制约关系。 也就是相互制约的关系(共享资源) 临界资源和临界区 临界资源: 一段时间内只允许一进程访问的资源 临界区 程 ...
分类:
其他好文 时间:
2020-05-21 14:39:15
阅读次数:
66
``` import java.util.LinkedList; /** * @Author 昊 * @Create 2020/5/2 9:34 * @Description 临界资源,存放汉堡 */ public class Box { //要进行频繁的删除操作所以使用LinkedList pri... ...
分类:
编程语言 时间:
2020-05-02 21:22:28
阅读次数:
77
2.4 进程同步 2.4.1 进程同步的基本概念 1. 两种形式的制约关系 (1)间接相互制约关系:互斥问题(往往是互斥设备) 是同步的特例 (2)直接相互制约关系:同步问题 注: 互斥问题:共享变量的修改冲突 同步问题:操作顺序冲突,先后关系 2. 临界资源 许多硬件资源如打印机、磁带机等,都属于 ...
分类:
系统相关 时间:
2020-05-01 01:34:49
阅读次数:
169
概述 java有各种各样的锁,并且每种锁的特性不同,合理场景下利用锁可以展现出非常高的效率。synchronized内置锁就是Java的一种重量级锁,它能够解决并发编程中出现多个线程同时访问一个共享,可变的临界资源时出现的线程安全问题。让多个线程序列化访问临界资源,同一时刻,只能有一个线程访问临界资 ...
分类:
编程语言 时间:
2020-05-01 01:32:04
阅读次数:
85
额外知识扩展: 我自己的写的模式: (1)管程把共享变量上的操作封装起来,而临界区却分散在每个进程中。 //都是对临界资源操作的代码,但是...... (2)管程是为管理临界资源而建立的,进程主要是实现系统并发性而引入的。 //创建目的 (3)管程被进程调用。管程和调用它的进程不能并行工作,而进程是 ...
分类:
系统相关 时间:
2020-04-05 18:58:46
阅读次数:
148