1、cpu
控制程序按设定的方式执行的计算机部件成为中央处理器,简称CPU。
CPU的基本组成:
早期的CPU由运算器和控制器两大部分组成。后来CPU的基本部分变成运算器、cache、控制器三大部分
控制器 由程序计数器(PC)、指令寄存器(IR)、指令译码器、时序产生器 和 操作控制器(OC) 组成,主要功能有:
(1)从指令cache中取出一条指令,并指出下一条指令在指令cache中的位置
(2)对指令进行译码和测试,并产生相应的操作控制信号
(3)指挥并控制CPU、数据cache和输入/输出设备之间数据流动的方向
运算器 由算术逻辑单元(ALU)、通用寄存器、数据缓冲寄存器(DR)和状态条件寄存器(PSW)组成。运算器接受控制器的命令而进行动作,是执行部件。主要有两个功能:
(1)执行所有的算术运算
(2)执行所有的逻辑运算
CPU中的主要寄存器:
CPU中至少有六类寄存器:指令寄存器(IR)、程序计数器(PC)、数据地址寄存器(AR)、缓冲寄存器(DR)、通用寄存器、状态字寄存器(PSW)
参考:https://blog.csdn.net/u010256909/article/details/53079920
2、内存
一个内存包括一个具有记忆功能的存储矩阵(该矩阵是由m*n个存储芯片构成),译码驱动电路,以及读写电路构成。
译码电路负责把地址总线送来的地址信号翻译成对对应存储单元选择的信号,该信号在读写电路的配合下完成对被选中单元的读写。
内存通过地址总线,数据总线以及控制总线宇外界链接。
地址线的位数一般就是CPU的位数,说明地址线共有多少根,比如地址线有32位,那该地址线将能寻到2^32个存储单元,注意是存储单元,不是位,存储单元的大小与数据线的根数是一致的,比如数据线是8位,那么32位地址线与8位数据线的组合将支持4g字节的内存。
地址译码单元的工作原理有两种:线选法与重合法。线选法时一般是字节寻址,比如8位数据线传来00000001,那么1号存储单元的所有位被选中,该方法只适合用于小内存的情况。重合法的原理就是类似通过x,y来定位一个矩阵单元,比如x方向地址线有32根,y方向地址线有32根。(0,0)将选中0行0列那个位
3、缓存
在主存与CPU之间插入一级或多级SRAM组成的高速缓存存储器。扩展cache有限,因为SRAM价格昂贵。
cache作用:为了解决CPU和主存之间速度不匹配而采用的一项重要技术。
cache特性:具有空间局部性以及时间局部性。
cache的组成:SRAM和控制逻辑。如果cache在CPU芯片外,它的控制逻辑一般和主存控制逻辑合成在一起,称主存/cache控制器。若cache在CPU内,则由CPU提供它的控制逻辑。
原文:https://blog.csdn.net/chen1083376511/article/details/81874812
4、硬盘
物理存储设备
5、总线
cpu内部组成结构之一。
就像工厂中各部位之间的联系渠道,总线实际上是一组导线,是各种公共信号线的集合,用于作为电脑中所有各组成部分传输信息共同使用的“公路”。直接和CPU相连的总线可称为局部总线。其中包括:数据总线DB(Data Bus)、地址总线AB(Address Bus) 、控制总线CB(Control Bus)。其中,数据总线用来传输数据信息;地址总线用于传送CPU发出的地址信息;控制总线用来传送控制信号、时序信号和状态信息等。
6、进程、线程、协程
1)为什么引入:
操作系统可以同时运行多个任务,引入了线程,进程和协成
2)定义:
线程: 可以理解成执行代码的分支,线程是执行对应的代码的,cpu会调度对应的线程去工作,也可以说线程是cpu调度的基本单位(工作原理)
进程: 通俗理解一个运行起来的程序或者软件叫做进程
如何理解进程:把进程想成现实生活中的公司,公司可以给员工提供办公资源(办公桌椅,办公电脑等资源), 真正干活的是员工,所以员工可以想成线程,公司就是进程
协成:又称为微线程,也称为用户级线程,在不开辟线程的基础上完成多任务,在def里面只看到一个yield关键字可以理解程是协程(理解), 在单线程的基础上可以完成多任务,多个任务按照一定顺序交替执行(目的)
3)使用:
进程、线程和协成的使用对比
2.1 线程是cpu调度的基本单位,通过线程去执行进程中代码, 线程是执行代码的分支
2.2 进程是操作系统资源分配的基本单位,每启动一个进程都需要向操作系统索要运行资源,默认一个进程只有一个线程,线程是依附在进程里面的
2.3 多进程开发比单进程多线程开发稳定性要强,但是多进程开发比多线程开发资源开销要大
2.4 多进程开发某个进程死了不会影响其它进程的运行,但是多线程开发该进程死了那么这些线程都要进行销毁
2.5 进程之间不共享全局变量,线程之间共享全局变量,但是线程要注意资源竞争的问题
线程之间共享全局变量:
同步就是协同步调,按预定的先后次序进行运行线程同步可以解决共享全局变量的问题
从而引入了互斥锁,互斥锁确保了某段关键代码只能由一个线程从头到尾完整地执行,在使用过程中要避免出现死锁
进程之间不共享全局变量:
多进程之间不共享全局变量,为了进程间的通讯,引入Queue这个类
2.6 先有进程,然后进程可以创建线程,线程是依附在进程里面的,线程里面可以包含多个协程
2.7 多线程开发线程之间执行是无序的,协程之间执行按照一定顺序交替执行
2.8 协程(编译器级别切换的,线程和进程是操作系统级别切换的)以后主要用在网络爬虫和网络请求,开辟一个协程大概需要5k空间,开辟一个线程需要512k空间, 开辟一个进程占用资源最多。
---------------------
参考:https://blog.csdn.net/sinat_41912529/article/details/80306582