还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
互斥、同步与通信操作系统中的两个重要概念是进程同步和进程通信本课件将探讨如何实现进程的互斥、同步以及不同进程之间的通信机制课程目标掌握同步与异步概念理解互斥同步机制应用线程同步与通信掌握分布式同步技术了解并区分同步和异步编程模学习各种互斥同步机制如信熟悉线程同步的方式学会使了解分布式系统中的同步和一,,型熟悉它们各自的特点和应号量、管程等掌握其定义、用同步原语实现线程之间的协致性问题学习相关的解决方,,,用场景特性和操作方法作和通信案如消息队列、和分布,RPC式锁同步与异步同步操作异步操作12同步操作是指依次执行的线性异步操作是指可以并行执行的过程,前一个操作必须完成才非线性过程,不需要等待前一能开始下一个个操作完成优缺点比较3同步操作简单直观但效率低下,异步操作复杂但能充分利用资源提高效率互斥同步机制独占访问临界区互斥同步机制确保资源在同一时临界区是指访问共享资源的那部间只能被一个进程或线程所访问分代码必须被互斥同步机制严格,,避免数据竞争和冲突控制锁机制避免死锁常见的互斥同步机制包括互斥锁合理设计临界区并遵循加锁顺序、自旋锁和信号量等用于保护临可以有效避免死锁等并发问题的,界区的安全访问发生信号量定义信号量是一种用于管理并发访问共享资源的计数器它用于实现同步与互斥操作信号量支持两种基本操作申请和释放这些操作可以实现线程的同步与互斥:PV应用场景信号量广泛应用于解决生产者消费者问题、读者写者问题等并发编程问题--信号量的定义与特性信号量定义信号量特性信号量应用信号量是一种用于实现进程间同步的机制信号量具有原子操作、可以阻塞进程、可以信号量广泛应用于操作系统、数据库管理系它是一个非负整数变量用于控制多个进程实现临界区控制等特性是实现进程间同步统、网络通信等领域用于解决资源共享、,,,对共享资源的访问的重要手段临界区控制、生产者消费者等问题-信号量的两种操作操作P1也称为等待或申请操作,用于请求资源操作V2也称为信号或释放操作,用于归还资源原子性3和操作必须是原子的,不可被中断P V信号量提供了两种基本操作操作和操作操作用于申请资源如果资源不可用则进入等待状态操作用于释放资源唤醒等待的进程:P VP,V,这两种操作必须是原子的不可被中断保证了并发环境下的互斥同步,,生产者消费者问题-生产者1不断产生数据资源缓冲区2存储生产者生产的数据消费者3从缓冲区中获取数据进行处理生产者消费者问题是一个典型的同步与互斥问题生产者不断生产数据并放入缓冲区消费者从缓冲区中获取数据进行处理为了防止生-,产者写入缓冲区时消费者读取或者消费者读取缓冲区时生产者写入需要采用同步与互斥机制进行协调,,管程管程定义管程特性管程操作管程是一种用于实现并发程序中同步机制的管程拥有一个或多个条件变量和一个互斥锁管程提供了和两种基本操作wait signal,软件抽象概念它提供了一种方法来控制对用于确保对共享资源的原子访问和互斥执用于在条件变量上进行线程的挂起和唤醒,共享资源的访问行管程的定义与特性定义封装性管程是一种同步机制它通过互斥管程将共享资源和操作它们的代,和条件变量来协调并发访问共享码封装在一起提高了程序的模块,资源的线程化和可维护性原子性等待条件管程内的操作是原子性的可以确管程使用条件变量来表示特定的,保线程安全地访问共享资源等待条件线程可以等待这些条件,被满足管程的操作进入管程1进入管程前,进程必须先获取管程的锁定只有获取到锁定后,进程才能执行管程中的操作条件变量操作2进程在管程中可以使用条件变量进行等待和唤醒操作以实现进,程间的同步和协作退出管程3进程在完成管程中的操作后需要释放管程的锁定以允许其他进,,程进入管程执行哲学家进餐问题哲学家陷入死锁五位哲学家围坐在一张圆桌上共用着五支叉子每个哲学家在吃饭时都需要占用两支叉子但他们全都想同时拿起相邻的叉子导致陷入死锁,,,解决方案引入一些规则限制哲学家同时拿起两支叉子的行为避免死锁的发生比如设置一个管程来协调哲学家的行为,,管程的工作原理管程内设置一个互斥锁每次只允许一个哲学家进入哲学家申请叉子时如果被拒绝就进入等待队列直到获得许可,,,防止活锁为了避免活锁可以给每个哲学家一个编号按照编号顺序依次获取叉子这样可以确保至少有一个哲学家成功就餐,,读者写者问题-读者优先1在读者写者问题中读者优先是一种常见的解决方案它确保-,多个读者可以同时访问共享资源而不会相互干扰,写者独占2当有写者需要访问共享资源时它们会被给予独占访问权以确,,保数据的一致性和完整性读者写者锁-3读者写者锁是一种同步机制它允许多个读者同时访问共享资-,源但只有一个写者可以访问这可以提高资源的利用率,线程同步与通信同步机制通信方式12通过共享变量、信号量和管程线程间可以通过共享内存、消等同步机制来实现线程间的协息队列、管道等方式进行通信调和互斥和数据交换阻塞与唤醒协调与控制34线程在等待共享资源或通信信合理使用同步机制可以有效地号时可能会被阻塞需要通过特协调线程行为避免死锁和竞态,,定的同步机制唤醒条件等问题线程的同步方式互斥锁条件变量信号量屏障互斥锁可确保同一时刻只有一条件变量可以让线程在某个特信号量是一个整数计数器可屏障可以让一组线程在达到某,个线程访问共享资源线程在定条件满足时被唤醒线程可用于限制同时访问某个特定资个共同点时阻塞直到所有线,获取锁之前必须等待,从而实以通过条件变量进行有效的等源的线程数量从而实现了对程都到达了这个点才继续执,,现了线程间的有序访问待和通知临界资源的有效控制行后续操作同步原语的使用互斥锁信号量用于保护共享资源确保同时只有一个用于限制同时访问共享资源的线程数,线程访问资源量可用于实现生产者消费者模型,-条件变量自旋锁用于线程之间的通信一个线程等待某轻量级的锁机制适用于竞争不激烈的,,个条件成立时被唤醒场景减少线程切换开销,信号量与管程的应用信号量的应用管程的应用信号量与管程的结合信号量可用于实现进程线程的同步和互斥管程封装了共享资源的访问控制逻辑可以在实际系统中信号量和管程通常会结合使/,,它可以解决生产者消费者问题、读者有效地解决并发编程中的安全性和活跃性用发挥各自的优势管程用于资源管理--,,写者问题等经典并发问题问题它被广泛应用于操作系统和数据库信号量用于进程线程同步这样可以实现/系统中更加灵活和高效的并发控制消息队列消息队列架构消息队列操作消息队列应用消息队列是一种异步通信机制由生产者、消息生产者将消息发送到消息队列消费者消息队列广泛应用于解耦系统、异步通信、,,消费者和消息代理三部分组成提供可靠、从消息队列中获取消息并处理消息代理负流量削峰等场景提高系统的可靠性和扩展,,有序的消息传输责存储和转发消息性消息队列的特性异步通信缓冲机制12消息队列允许应用程序异步地消息队列提供了一个缓冲区来交换数据提高系统的可扩展性存储消息使发送方和接收方的,,和容错性处理速度不必完全一致解耦设计可靠性保证34消息队列将发送方和接收方解消息队列能够提供消息的持久耦使系统更易于扩展和维护化、重复消费以及事务性保证,消息队列的操作发送消息1向消息队列发送消息接收消息2从消息队列中获取消息消息处理3对收到的消息进行业务逻辑处理消息确认4确认消息已经被成功处理消息队列的操作主要包括发送消息、接收消息、处理消息和确认消息发送消息时将数据推送到消息队列中接收消息时从消息队列中获取数据并进行业务逻辑处理最后需要确认消息已经被成功处理整个过程确保了消息的可靠传递和高效处理消息订阅与发布消息订阅消息发布订阅者向消息队列系统声明自己对某些主题感兴趣系统会将相关消生产者将消息发布到消息队列中不需要关心谁来订阅这些消息发,,息推送给订阅者这种订阅发布模式提高了系统的灵活性和可扩展布者和订阅者之间解耦降低了系统的复杂性-,性实时通信高扩展性消息订阅与发布系统可以实现即时的消息推送适用于聊天应用、推无需修改订阅者或发布者的代码只需要增加新的订阅者即可扩展系,,送通知等实时通信场景统体现了高度的解耦性,远程过程调用通信机制透明性远程过程调用是一种基于网络的通信远程过程调用对于客户端来说是透明机制允许客户端程序调用远程服务器的隐藏了网络通信的细节,,上的方法或函数同步性分布式远程过程调用通常是同步的客户端需远程过程调用适用于分布式系统将功,,要等待服务器响应才能继续执行能划分到不同的服务器上的工作原理RPC请求发起请求处理12客户端将请求参数打包成标准服务端接收到请求后解析参数,格式通过网络发送到服务端并调用相应的服务程序进行处,理结果返回结果解析34服务端处理完成后将结果重新客户端收到结果后解析并提取,,打包成标准格式返回给客户端所需信息完成整个调用过程,的优缺点RPC优点缺点提供了一种简单直接的调用远程服务的方式隐藏了底层网络需要服务发现和远程连接增加了系统的复杂性同时RPC,RPC,RPC通信的复杂性对开发人员来说使用就像调用本地函数一样容易受到网络环境的影响可能会出现调用超时或失败的情况,RPC,自然分布式锁锁定资源选举算法容错机制分布式锁可以在多个节点中协调对共享资源分布式锁通常使用诸如、分布式锁需要考虑节点故障或网络分区等情Zookeeper的访问确保同一时间只有一个节点可以访或数据库等工具来实现利用选举算况提供可靠的容错机制来确保数据一致性,Redis,,问法来保证一致性分布式锁的实现基于数据库1使用数据库表的行级锁机制实现分布式锁基于Redis2利用的原子性操作实现分布式锁Redis基于ZooKeeper3利用的临时有序节点实现分布式锁ZooKeeper分布式锁的实现有多种方式常见的包括基于数据库、和其中数据库锁利用行级锁机制实现锁利用其原子性操,Redis ZooKeeper,;Redis作特性锁则利用临时有序节点来实现选择何种实现方式需要根据具体场景和系统架构来权衡;ZooKeeper分布式一致性一致性模型一致性协议不同的一致性模型如强一致性、、等一致性协议通过,Paxos Raft弱一致性、最终一致性等根据应投票机制来实现数据在分布式系,用场景的需求来选择合适的一致统中的一致性性模型定理原则CAP BASE定理指出分布式系统无法同基于原则的分布式系统设计CAP,BASE时满足一致性、以最终一致性为目标在可用性和Consistency,,可用性和分区容忍分区容忍性之间进行权衡Availability性三个特Partition Tolerance性一致性模型强一致性最终一致性有序一致性读取保证返回最新写入的值提供最高的一系统最终会收敛到一个一致的状态提高可保证对于单个对象的读写操作按照程序顺序,,致性保证但可能会牺牲可用性和分区容忍用性和分区容忍性但可能在某些时间点存执行但无法保证多个对象之间的全局有序,,,性在数据不一致性一致性协议协议协议Paxos Raft协议是一种分布式一致性协议是一种更容易理解的一Paxos Raft算法能够在存在故障的情况下保致性算法它简化了的复,,Paxos证系统的一致性和可用性杂性提高了系统的可靠性,协议ZAB协议是使用的一致性协议专门为分布式协调系统设计ZAB ZooKeeper,,具有高性能和可靠性总结与展望总结展望通过本课程的学习我们深入理解了同步和异步的概念掌握了互斥随着技术的不断进步并发编程的要求也越来越高未来我们需要,,,同步机制、信号量、管程等核心技术并学习了线程同步与通信、关注分布式系统中的一致性问题、容错性设计、性能优化等以应,,消息队列、远程过程调用等高级主题这些知识为我们构建高效对更加复杂的并发场景同时利用新兴技术如云计算、大数据、,、可靠的并发系统奠定了基础人工智能等进一步提升并发系统的能力和智能化水平,。
个人认证
优秀文档
获得点赞 0