我们正在努力恢复Google Play商店上的Unionpedia应用程序
传出传入
🌟我们简化了设计以优化导航!
Instagram Facebook X LinkedIn

内存屏障

指数 内存屏障

内存屏障(Memory barrier),也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才可以开始执行此点之后的操作。 大多数现代计算机为了提高性能而采取乱序执行,这使得内存屏障成为必须。 语义上,内存屏障之前的所有写操作都要写入内存;内存屏障之后的读操作都可以获得同步屏障之前的写操作的结果。因此,对于敏感的程序块,写操作之后、读操作之前可以插入内存屏障。.

目录

  1. 10 关系: 同步屏障乱序执行应用程序接口GCCMicrosoft Visual C++POSIX线程Windows APIX86汇编语言.NET框架

  2. 一致性模型
  3. 指令处理

同步屏障

同步屏障(Barrier)是并行计算中的一种同步方法。对于一群进程或线程,程序中的一个同步屏障意味着任何线程/进程执行到此后必须等待,直到所有线程/进程都到达此点才可继续执行下文。 许多基于指示的并行机制(如OpenMP)实现了隐式的同步屏障。消息传递机制中,任何全局通信都是一个同步屏障。 pthread提供了直接实现同步屏障的函数。.

查看 内存屏障和同步屏障

乱序执行

在计算机工程领域,乱序执行(错序执行,out-of-order execution,简称OoOE或OOE)是一种应用在高性能微处理器中来利用指令周期以避免特定类型的延迟消耗的范式。在这种范式中,处理器在一个由输入数据可用性所决定的顺序中执行指令,而不是由程序的原始数据所决定。在这种方式下,可以避免因为获取下一条程序指令所引起的处理器等待,取而代之的处理下一条可以立即执行的指令。.

查看 内存屏障和乱序执行

应用程序接口

应用程序接口(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由於近年來软件的规模日益庞大,常常需要把复杂的系统划分成小的组成部分,编程接口的设计十分重要。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的维护性和扩展性。.

查看 内存屏障和应用程序接口

GCC

GNU编译器套裝(GNU Compiler Collection,縮寫為GCC),指一套编程語言编译器,以GPL及LGPL許可證所發行的自由軟體,也是GNU計畫的关键部分,也是GNU工具链的主要組成部份之一。GCC(特别是其中的C语言编译器)也常被认为是跨平台编译器的事实标准。1985年由理查德·马修·斯托曼開始發展,現在由自由軟體基金會負責維護工作。 原名為GNU C語言編譯器(GNU C Compiler),因為它原本只能處理C語言。GCC在发布后很快地得到擴展,變得可處理C++。之後也變得可處理Fortran、Pascal、Objective-C、Java、Ada,Go與其他語言。 許多操作系統,包括許多类Unix系統,如Linux及BSD家族都採用GCC作為标准编译器。蘋果電腦预装的Mac OS X操作系统也採用這個編譯器。 GCC原本用C開發,後來因為LLVM、Clang的崛起,它更快地將開發語言轉換為C++。許多C的愛好者在對C++一知半解的情況下主觀認定C++的性能一定會輸給C,但是Ian Lance Taylor給出了不同的意見,並表明C++不但性能不輸給C,而且能設計出更好,更容易維護的程式(、)。.

查看 内存屏障和GCC

Microsoft Visual C++

Microsoft Visual C++(简称Visual C++、MSVC、VC++或VC)是微軟公司的C++開發工具,具有集成开发环境,可提供編輯C語言,C++以及C++/CLI等编程語言。VC++整合了便利的除錯工具,特別是整合了微軟Windows视窗操作系统应用程序接口(Windows API)、三维動畫DirectX API,Microsoft.NET框架。目前最新的版本是Microsoft Visual C++ 2017。.

查看 内存屏障和Microsoft Visual C++

POSIX线程

POSIX线程(POSIX Threads,常被縮寫為Pthreads)是POSIX的线程标准,定义了创建和操纵线程的一套API。 实现POSIX 线程标准的库常被称作Pthreads,一般用于Unix-like POSIX 系统,如Linux、 Solaris。但是Microsoft Windows上的实现也存在,例如直接使用Windows API实现的第三方库pthreads-w32;而利用Windows的SFU/SUA子系统,则可以使用微软提供的一部分原生POSIX API。.

查看 内存屏障和POSIX线程

Windows API

Windows操作系统应用程序接口(Windows API),有非正式的简称法为WinAPI,是微软对于Windows操作系统中可用的核心应用程序编程接口的称法。它被设计为各种语言的程序调用,也是应用软件与Windows系统最直接的交互方式。大多数驱动程序需要对Windows系统更底层次访问接口,由所用版本的Windows的Native API来提供接口。 Windows有一个软件开发套件(SDK, software development kit)提供相应的文档和工具,以使程序员开发使用Windows API的软件和利用Windows技术。.

查看 内存屏障和Windows API

X86

x86泛指一系列由英特爾公司開發處理器的架構,這類處理器最早為1978年面市的「Intel 8086」CPU。 該系列較早期的處理器名稱是以數字來表示80x86。由於以“86”作為結尾,包括Intel 8086、80186、80286、80386以及80486,因此其架構被稱為“x86”。由於數字並不能作為註冊商標,因此Intel及其競爭者均在新一代處理器使用可註冊的名稱,如Pentium。現時英特爾將其稱為IA-32,全名為“Intel Architecture, 32-bit”,一般情形下指代32位元的架構。.

查看 内存屏障和X86

汇编语言

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。 使用汇编语言编写的源代码,然后通过相应的汇编程序将它们转换成可执行的机器代码。这一过程被称为汇编过程。 汇编语言使用助记符(Mnemonics)来代替和表示特定低级机器语言的操作。特定的汇编目标指令集可能会包括特定的操作数。许多汇编程序可以识别代表地址和常量的标签(Label)和符号(Symbols),这样就可以用字符来代表操作数而无需采取写死的方式。普遍地说,每一种特定的汇编语言和其特定的机器语言指令集是一一对应的。 许多汇编程序为程序开发、汇编控制、辅助调试提供了额外的支持机制。有的汇编语言编寫工具经常会提供巨集,它们也被称为--汇编器。 现在汇编语言已不像其他大多數的程序設計語言一樣被廣泛用于程序設計,在今天的實際應用中,它通常被應用在底層硬件操作和高要求的程序優化的场合。驅動程序、嵌入式操作系統和實時運行程序都会需要組合語言。.

查看 内存屏障和汇编语言

.NET框架

--是由微軟開發,一個致力於敏捷軟體開發(Agile software development)、快速應用開發(Rapid application development)、平臺獨立性和網路透明化的軟體框架。.NET是微軟為2000年代對伺服器和桌上型軟體工程邁出的第一步。.NET包含許多有助於互聯網和內部網應用迅捷開發的技術。.NET框架是微軟公司繼Windows DNA之後的新開發平臺。.NET框架是以一種採用系統虛擬機運行的編程平臺,以通用語言運行庫(Common Language Runtime)為基礎,支援多種語言(C#、F#、VB.NET、C++、Python等)的開發。.NET也為應用程式介面(API)提供了新功能和開發工具。這些革新使得程式設計員可以同時進行Windows應用軟體和網路應用軟體以及元件和服務(web服務)的開發。.NET提供了一個新的反射性的且物件導向程式設計編程介面。.NET設計得足夠通用化從而使許多不同高階語言都得以被彙集。 甲骨文公司的Java程式語言和Java平臺企業版技術是.NET平臺的競爭對手之一。 2014年11月12日,微軟宣布將完全開放.NET Framework的原始碼,並提供給Linux和OS X使用。.

查看 内存屏障和.NET框架

另见

一致性模型

指令处理