目录
同步 (计算机科学)
计算机科学中, 同步(synchronization)是指两个不同但有联系的概念:进程同步与数据同步。进程同步指多个进程在特定点会合(join up)或者握手使得达成协议或者使得操作序列有序。数据同步指一个数据集的多份拷贝一致以维护完整性。常用进程同步原语实现数据同步。.
自旋锁
自旋锁是计算机科学用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种忙等待。一旦获取了自旋锁,线程会一直保持该锁,直至显式释放自旋锁。 自旋锁避免了进程上下文的调度开销,因此对于线程只会阻塞很短时间的场合是有效的。因此操作系统的实现在很多地方往往用自旋锁。Windows操作系统提供的轻型读写锁(SRW Lock)内部就用了自旋锁。显然,单核CPU不适于使用自旋锁。 获取、释放自旋锁,实际上是读写自旋锁的存储内存或寄存器。因此这种读写操作必须是原子的。通常用test-and-set等原子操作来实现。.
查看 检查并设置和自旋锁
Fetch-and-add
fetch-and-add是CPU指令(FAA),对内存位置执行增加一个数量的原子操作。具体内容为: FAA可用于实现互斥锁、信号量。 1991年,证明fetch-and-add具有一个有限的数,能解决不超过两个并发进程的无等待consensus问题。.
Read-modify-write
读-修改-写(read-modify-write)是计算机科学中的一个原子操作(atomic operation,类似的还有test-and-set, fetch-and-add, compare-and-swap等),操作过程是读一个内存位置(或IO端口),修改其值,再写回原位置。 必须要先读操作的一个原因是,系统架构往往只允许字(word)级的读写,必须先读出那些不做修改的比特,保持不变再写回。写成C语言语句类似于: Read-modify-write指令用于IO端口时,可能会产生出乎意料的结果,如无法给一个比特置位。这往往是因为写操作并不影响到读操作的源寄存器。 RAID也使用这一术语描述原子操作的read-modify-write序列。 Such RAID levels include RAID 4, RAID 5 and RAID 6.
排号自旋锁
排号自旋锁是计算机科学中的一种多线程同步机制。类似于自旋锁,但每一个申请排队自旋锁的线程获得一个排队号(ticket)。至多一个线程拥有自旋锁,当它释放锁时,把自身的ticket加1作为下一个可获得锁的ticket,持有该ticket的线程在自旋检查时就可发现已经获得了自旋锁。这种机制类似于一些提供社会服务的场所(如银行):进门的顾客从排号机获取一个等待号,然后不断检查当前可服务的号,直至轮到其手持的号。 这是一种先进先出(FIFO)的公平性机制。.
查看 检查并设置和排号自旋锁
指令集架構
指令集架構(Instruction Set Architecture,縮寫為ISA),又稱指令集或指令集体系,是计算机体系结构中與程序設計有關的部分,包含了基本数据类型,指令集,寄存器,寻址模式,存储体系,中斷,異常處理以及外部I/O。指令集架構包含一系列的opcode即操作码(機器語言),以及由特定處理器执行的基本命令。 指令集体系与微架构(一套用于执行指令集的微处理器设计方法)不同。使用不同微架構的電腦可以共享一种指令集。例如,Intel的Pentium和AMD的AMD Athlon,兩者几乎採用相同版本的x86指令集体系,但是兩者在内部设计上有本质的区别。 一些虛擬機器支持基于Smalltalk,Java虛擬機,微軟的公共語言运行时虛擬機所生成的字节码,他們的指令集体系將bytecode(字节码)从作为一般手段的代码路径翻譯成本地的機器語言,并通过解译执行并不常用的代码路径,全美達以相同的方式开发了基于x86指令体系的VLIW處理器。.
查看 检查并设置和指令集架構
亦称为 Test-and-set。