热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

对称多处理(SMP)

操作系统学习笔记对称多处理(SMP)SMP:一种通过复用处理器提高程序执行并行性的方式。根据SMP,计算机系统可以分为以下四
操作系统学习笔记 对称多处理(SMP)

  SMP:一种通过复用处理器提高程序执行并行性的方式。

  根据SMP,计算机系统可以分为以下四类:

    单指令单数据流(SISD):一个单处理器执行一个单指令流,对保存在一个存储器中的数据进程进行操作。

    单指令多数据流(SIMD):一个机器指令控制多个处理部件步伐一致的同时执行。每个处理部件都有一个相关的数据处理空间,因此,每条指令由不同的处理器在不同   的数据集合上执行。

    多指令单数据流(MISD):一系列数据被传送到一组处理器上,每个处理器执行不同的指令序列。

    多指令多数据流(MIMD):一组处理器同时在不同的数据集上执行不同的指令序列。

  在MIMD结构中,处理器是通用的,它们必须能够处理执行相应的数据转换所需的所有指令。

  MIMD可以根据处理器的通信进一步细化。如果每个处理器都有一个专用的存储器,则每个处理部件都是一个独立的计算机。计算机间的通信或者借助于固定的路径,或者借助于某些网络设施,这类系统称为集群系统。如果处理器共享一个公用的存储器,每个处理器都访问保存在共享存储器中的程序和数据,处理器之间通过这个存储器相互通信,则这类系统称为共享存储器多处理机系统。

  共享存储器多处理机系统的一个常用分类标准是基于"如何把进程分配给处理器"。最基本的两种手段是主/从结构对称结构

  在主/从结构中,操作系统的内核总是运行在某个特定的处理器上,其他处理器用于执行用户程序和操作系统的使用程序。主处理器负责调度进程或线程,如果一个处于运行的进程或线程需要使用系统的服务(如一次I/O调用),则它必须给主处理器发送请求,并等待服务的处理。这种方式非常简单,一个处理器控制了所有存储器和I/O资源,因此可以简化冲突的解决方案。但是这种方式也有明显的缺点:

  1. 主处理器的失败将导致整个系统的失败;

  2. 由于主处理器必须负责所有的进程调度和管理,因此可能成为性能瓶颈;

  在对称多处理系统中,内核可以在任何处理器上执行,并且每个处理器可以从可用的进程或线程池中进行各自的调度工作。内核也可以由多进程或多线程构成,允许部分内核并行执行。SMP方法增加了操作系统的复杂性,它必须确保两个处理器不会选择同一个进程,并且要确保队列不会丢失,因此需要解决同步的问题。

  

 

SMP系统的组织结构

  SMP系统中有多个处理器,每一个都含有它自己的控制单元,算术逻辑单元和寄存器;每个处理器都可以通过某种互联机制访问一个共享的主存和I/O设备,通常是系统总线。处理器之间还可以通过存储器中的共享地址空间中的消息和状态信息相互通信。存储器通常被组织为可以允许同时有多个对存储器不同独立部分的访问。现代计算机中,处理器通常有一级专用的高速缓存,由于每个高速缓存含有主存中的一部分映像,如果某个处理器修改了其中的一个字,那么其他高速缓存中的这个字将变得无效,这就带来了高速缓存的一致性问题,这个问题的解决通常是通过硬件的方式。

  

 

多处理器操作系统的设计

  并发进程或线程:为了允许多个处理器同时执行相同的内核代码,内核例程必须是可重入的。多处理器执行内核的相同部分和不同部分时,必须正确的管理内核表和管理结构,以避免死锁或非法操作;

  调度:调度可以由任何处理器执行,因此必须避免冲突。如果使用内核级多线程,则可能出现同一时刻,多个处理器同时从同一个进程中调度多个线程的情况;

  同步:因此存在多个进程都可能访问共享地址空间和共享I/O资源的情况,因此需要提供同步机制。同步是指实施互斥和事件排序的机制。锁是一个通用的同步机制;

  存储器管理:多处理器系统为了提高性能,尽可能利用硬件的并行性,如多端口存储器,还必须协调不同处理器上的分页机制,以确保多个处理器共享页或段时页面的一致性问题,以及页替换策略;

  可靠性和容错:当一个处理器处理失败时,操作系统应该提供功能衰减能力,重新组织管理表;

 


推荐阅读
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • Java高并发与多线程(二):线程的实现方式详解
    本文将深入探讨Java中线程的三种主要实现方式,包括继承Thread类、实现Runnable接口和实现Callable接口,并分析它们之间的异同及其应用场景。 ... [详细]
  • 本文总结了一些开发中常见的问题及其解决方案,包括特性过滤器的使用、NuGet程序集版本冲突、线程存储、溢出检查、ThreadPool的最大线程数设置、Redis使用中的问题以及Task.Result和Task.GetAwaiter().GetResult()的区别。 ... [详细]
  • B站服务器故障影响豆瓣评分?别担心,阿里巴巴架构师分享预防策略与技术方案
    13日晚上,在视频观看高峰时段,B站出现了服务器故障,引发网友在各大平台上的广泛吐槽。这一事件导致了连锁反应,大量用户纷纷涌入A站、豆瓣和晋江等平台,给这些网站带来了突如其来的流量压力。为了防止类似问题的发生,阿里巴巴架构师分享了一系列预防策略和技术方案,包括负载均衡、弹性伸缩和容灾备份等措施,以确保系统的稳定性和可靠性。 ... [详细]
  • 在当今的软件开发领域,分布式技术已成为程序员不可或缺的核心技能之一,尤其在面试中更是考察的重点。无论是小微企业还是大型企业,掌握分布式技术对于提升工作效率和解决实际问题都至关重要。本周的Java架构师实战训练营中,我们深入探讨了Kafka这一高效的分布式消息系统,它不仅支持发布订阅模式,还能在高并发场景下保持高性能和高可靠性。通过实际案例和代码演练,学员们对Kafka的应用有了更加深刻的理解。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • Java Socket 关键参数详解与优化建议
    Java Socket 的 API 虽然被广泛使用,但其关键参数的用途却鲜为人知。本文详细解析了 Java Socket 中的重要参数,如 backlog 参数,它用于控制服务器等待连接请求的队列长度。此外,还探讨了其他参数如 SO_TIMEOUT、SO_REUSEADDR 等的配置方法及其对性能的影响,并提供了优化建议,帮助开发者提升网络通信的稳定性和效率。 ... [详细]
  • Python多线程编程技巧与实战应用详解 ... [详细]
  • 深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案
    深入剖析Java中SimpleDateFormat在多线程环境下的潜在风险与解决方案 ... [详细]
  • Java并发机制详解及其在数据安全性保障中的应用方案 ... [详细]
  • 深入解析CAS机制:全面替代传统锁的底层原理与应用
    本文深入探讨了CAS(Compare-and-Swap)机制,分析了其作为传统锁的替代方案在并发控制中的优势与原理。CAS通过原子操作确保数据的一致性,避免了传统锁带来的性能瓶颈和死锁问题。文章详细解析了CAS的工作机制,并结合实际应用场景,展示了其在高并发环境下的高效性和可靠性。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 在2015年1月的MySQL内核报告中,我们详细探讨了性能优化和Group Commit机制的改进。尽管网上已有大量关于Group Commit的资料,本文将简要回顾其发展,并重点分析MySQL 5.6及之前版本中引入的二进制日志(Binlog)对性能的影响。此外,我们还将深入讨论最新的优化措施,如何通过改进Group Commit机制显著提升系统的整体性能和稳定性。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
author-avatar
指尖青春_388
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有