专题简介 本专题以精心设计的情景为线索,结合go语言最新1.12版源代码深入细致的分析了goroutine调度器实现原理。 适宜读者 go语言开发人员 对线程调度器工作原理感兴趣的工程师 对计算机底层运行原理感兴趣的工程师 专题目标 笔者希望即使是从未接 ...
本文是 go调度器源代码情景分析 系列 第一章 预备知识的第 小节。 寄存器是CPU内部的存储单元,用于存放从内存读取而来的数据 包括指令 和CPU运算的中间结果,之所以要使用寄存器来临时存放数据而不是直接操作内存,一是因为CPU的工作原理决定了有些操作运算只能在CPU内部进行,二是因为CPU读写寄存器的速度比读写内存的速度快得多。 为了便于交流和使用汇编语言进行编程,CPU厂商为每个寄存器都取了 ...
2019-04-25 12:49 1 592 推荐指数:
专题简介 本专题以精心设计的情景为线索,结合go语言最新1.12版源代码深入细致的分析了goroutine调度器实现原理。 适宜读者 go语言开发人员 对线程调度器工作原理感兴趣的工程师 对计算机底层运行原理感兴趣的工程师 专题目标 笔者希望即使是从未接 ...
本文是《go调度器源代码情景分析》系列 第一章 预备知识的第4小节。 汇编语言是每位后端程序员都应该掌握的一门语言,因为学会了汇编语言,不管是对我们调试程序还是研究与理解计算机底层的一些运行原理都具有非常重要的作用,所以建议有兴趣的读者可以多花点时间把它学好。 与高级编程语言一样,汇编语言也是 ...
go语言runtime(包括调度器)源代码中有部分代码是用汇编语言编写的,不过这些汇编代码并非针对特定体系结构的汇编代码,而是go语言引入的一种伪汇编,它同样也需要经过汇编器转换成机器指令才能被CPU执行。需要注意的是,用go汇编语言编写的代码一旦经过汇编器转换成机器指令之后,再用调试工具反汇编 ...
本文是《go调度器源代码情景分析》系列 第一章 预备知识的第3小节。 什么是栈 栈是一种“后进先出”的数据结构,它相当于一个容器,当需要往容器里面添加元素时只能放在最上面的一个元素之上,需要取出元素时也只能从最上面开始取,通常我们称添加元素为入栈(push),取出元素为出栈(pop ...
寄存器是中央处理器内的组成部分,是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。 寄存器是集成电路中非常重要的一种存储单元,通常由D触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器 ...
寄存器 一个典型的CPU由运算器、控制器、寄存器等器件组成,这些器件靠内部总线相连。(外部总线是上一篇博客说的内存总线,数据总线,控制总线) 内部总线实现CPU内部各个器件之间的联系。 外部总线实现CPU和主板上其它器件的联系。 CPU中主要的部件是寄存器,寄存器是CPU中 ...
因为要了解多线程,自然少不了一些硬件知识的科普,我没有系统学习过硬件知识,仅仅是从书上以及网络上看来的,如果有错误请指出来。 CPU,全名Central Processing Unit(中央处理器)。这是一块超大规模的集成电路,包含上亿的晶体管,是一台计算机的运算核心(Core)和控制 ...
1.1 CPU的内部结构解析 CPU和内存是由许多晶体管组成的电子部件,通常称为IC(Integrated Circuit,集成电路)。从功能方面来看,CPU的内部由寄存器,控制器,运算器和时钟四部分构成,各部分之间由电流信号相互连通。 寄存器:可用来暂存指令,数据等处理对象,可以将其看做 ...