解决多线程(一):什么是线程
(1) 程序的执行
作为一名开发者,编码能力是最主要的这个毋庸置疑,但是有多少人仔细的研究过我们所写的程序是怎么运行起来的那?
这里我拿我们最常用到的软件"微信.exe"举例,如果你说不常用微信,那么我就用"QQ.exe"来给大家说明!
说白了,当我们用点击某一应用程序的时候,其实就是计算机磁盘携带着指令与数据到内存中并在其中开辟一块空间,这也就是一个进程。
但是当该进程存储到内存中是,多条指令也许并不在同一线程里,这里就会首先找到主线程(main线程)开始执行,其中也可能会有线程分叉或者同步等操作。
当这是我们有一条指令为"i = 1+1",这是cpu 就会通过 IO Bridge 将该线程读取到寄存器中,这时我们的cpu的寄存器就会拉着ALU对改线程进行执行,并把执行的结果返回到内存中,同时CPU的PC组件(program counter)也就是程序计数器,会执行执行下一条指令;
(2)什么CPU的寄存器
寄存器(Data Register):其主要功能存储指令地址,同时也作为CPU和主存、外设之间信息传输的中转站,用以弥补CPU和主存、外设之间操作速度上的差异。
(3)什么是ALU
ALU(Arithmetic/Logic Unit):数学逻辑单元,通常支持一些基本的算术和按位逻辑函数。。
(4)什么是PC
PC(program counter):程序计数器,主要是用于存放指令的地址。通常当程序执行时,PC的初值为程序第一条指令的地址,在顺序执行程序时,控制器首先按程序计数器所指出的指令地址从内存中取出一条指令,然后分析和执行该指令,同时将PC的值加1指向下一条要执行的指令。
(5)什么是线程,什么是进程
通过上文的描述,大家心里也已经有了这个概念
进程:包含着数据和指令,我们可以理解为它是资源分配的基本单元
线程:程序是通过线程执行的,我们也可以理解为它是程序执行的基本单元
结语
这是本人人生中第一篇帖子,以后我也会坚持的写下去,以上观点有什么不对的地方方可批评,谢谢。关于图我也会继续强化争取可以优美一些! 谢谢!
关于CPU的寄存器,ALU,PC并未做太多说明,如果感兴趣下面附带地址
CPU寄存器
ALU
PC