• 计算机基本体系结构


    计算机基本体系结构

    CPU(运算器、控制器、寄存器)
    	运算器:进行数字运算、逻辑运算
    	控制器:控制数据的存取 
    	寄存器:运算过程中数据的暂存位置
    	
    RAM
    	数据存储单元,每8位一个存储单元,称为cell
    	每个cell都有一个唯一的十六进制地址标识,0x00,00x01
    	为了确保CPU能在内存中寻址寻找数据,中间需要一个中间件,称为north bridge
    	
    	CPU采用线路复用(32位电路)的方式完成数据寻址、数据存储等,例如00表示寻址、01表示数据读取等
    	
    	
    	PAE	Physical Address Extension	物理地址扩展 
    
    		在32位电路上又加了4位电路, 使32位CPU支持能够使用大于4G的内存 
    
    
    		
    	CPU缓存 
    		将RAM中具有热区的数据缓存,加快CPU读取数据速度(20%)
    	
    		当缓存占满时,会使用一定的置换策略进行数据置换(例如LRU),用于确保当后续数据需要被载入时有足够的空间
    	
    		依赖于程序局部性
    	
    			空间局部性:缓存加载数据时,除了加载对应cell的数据外,还会加载其附近的数据
    			时间局部性:一段数据被访问一次,其可能在一段时间内会再被访问 
    		
    		
    		缓存类型:
    			一级缓存
    				一级指令缓存
    				一级数据缓存 
    			二级缓存 
    			三级缓存 
    
    			一级、二级缓存对于多个CPU或者多核CPU来说是独有的
    			三级缓存是所有CPU共享的
    		
    		
    			由于RAM与缓存的空间相差太大,会导致缓存命中率低,采用了N路关联技术(一路关联、二路关联、四路关联、八路关联) 	
    	
    
    			CPU处理写操作时,由于CPU是直接和一级缓存打交道,也就意味着该数据的修改会通知一级缓存、二级缓存、三级缓存、内存,此技术称为通写write through
    			
    			另外一种技术称为write back,回写,CPU对缓存数据进行修改后,不会立即更新到RAM,只有数据要被缓存通过某种置换策略丢弃时才会被同步到RAM
    	
    	
    	
    显卡	同样需要北桥与CPU进行大量数据交换
    
    I/O设备[磁盘、网卡、键盘、鼠标等]通过插入South Bridge,再通过North Bridge与CPU进行关联
    	高速IO	PCI-E插槽,接入North Bridge 
    	低速IO	PCI[外部设备互联]插槽,接入South Bridge
    

    CPU架构

    SMP 对称多处理器 
    
    NUMA  非一致性内存访问 
    
    
    	
    	
    	
    	
    	
    CPU如何区分不同的I/O设备?   I/O Port 
    
    	任何一个I/O设备为了和CPU进行数据交互,都要向CPU申请一片连续的I/O port
    		
    
    I/O设备控制器/适配器 
    	将对应的I/O设备的信息转换成总线上可以传输的信号、进行信号的校验等
    	
    	
    
    	
    CPU如何获知哪个外部设备来了数据?
    
    	Poll:CPU轮询,效率低 
    	通知机制 
    		为了确保I/O设备与CPU进行数据信号交互,每个I/O设备需要向CPU中断控制器注册信号通路
    		
    		CPU中断控制器[Interrupt Controller],即CPU暂停处理当前的事务,来接收外部设备来的信号,最起码先把信号加载到内存 
    		
    		CPU Context Swith: 上下文切换 ,进程在CPU上切换被CPU执行 
    		
    		
    DMA: Director Memory Access
    	CPU如果总是控制I/O设备读取数据,效率低下;其解决方案,CPU检测到I/O设备支持通过DMA机制,CPU将给DMA进行授权,让DMA由DMA芯片控制I/O设备将数据读取到内存,DMA一般是把数据读取到内存中最容易寻址的一块区域;内存中还有一块底层区域用于BIOS
    	
    	DMA数据读取完成后,要向CPU中断控制器发送信号,告之CPU数据加载完成 
    	
    	临界区
    		指的是有可能发生总线冲突的区域 
    	
    	
    	
    		
    由于各硬件设备的速度差异较大,因此CPU还要具有能够协调各硬件协同工作的能力;通过脉冲信号(电平信号)完成
    

    <================================================================================>

    OS

    Process: 进程
    每个进程运行过程中要获取硬件资源
    系统资源:CPU时间、存储空间

    如何让CPU运行多个进程?

    在CPU上按时间进行切片,也就是说CPU会为每个进程指令分配一定的运行时间
    
    由指令计数器记录每个进程在时间片结束时,其指令运行的条目数 
    

    进程在运行时还需要RAM进行数据保存,如何确保多个进程共同使用RAM存储数据且不冲突?

    按内存空间进行切片是不合适的
    	进程结束时可能会造成内存中存在好多漏洞
    	万一事先分配的内存空间不足,可能会覆盖其他进程所使用的内存空间 
    
    如何解决?
    	
    	事先切割内存,以4K为默认单位,每个4k的存储槽称为页框page frame,每个4k中存储的数据称为页面page
    	
    	在此基础上加一个映射机制,让每一个进程都认为自己拥有完整的内存使用,此映射器中用于保存线性地址与物理地址的映射关系 
    
    	每个进程认为自己拥有的内存地址空间称为线性地址,真实的内存称为物理地址
    

    I/O设备

    内核 --> 进程  
    
    CPU在运行内核进程时,称为内核模式
    
    CPU在运行用户空间进程时,称为用户模式,而用户模式的进程是不允许直接操作硬件的
    
    CPU在进行一些指令时是分级别的,或者称为ring
    
    	ring -1	硬件辅助虚拟化 
    	ring 0	特权指令
    	ring 1 
    	ring 2 
    	ring 3  用户空间指令,完全虚拟化[纯软件模拟]
    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。 想到与得到中间还有两个字——做到。
  • 相关阅读:
    CSS定位(Position)
    深入理解Javascript闭包(二)
    深入理解Javascript闭包(一)
    如何将页脚固定在页面底部
    JQuery中$.fn的用法示例
    关于HttpWebRequest.KeepAlive
    Fiddler 教程
    js数组的操作
    oracle 修改字段类型的方法(转)
    Oracle查看表结构的几种方法(转后加工)
  • 原文地址:https://www.cnblogs.com/huoxc/p/12845016.html
Copyright © 2020-2023  润新知