计算机系统复杂笔记
1,AMD 既做CPU又做显卡
2,Inter 全球最大的CPU厂商,GPU,FPGA
3,NVIDA 人工智能起家的公司,且一直在做,显卡最出名,CUDA让N卡胜了AMD
CPU上 AMD - Inter
显卡 AMD - NVIDA
TPU 谷歌自研的专门用于深度学习的处理器
【Intel/AMD CPU世代表】
架构/代号 世代 年代 制造工艺 架构/代号 类别 年代 制造工艺
Coffee Lake 第八代酷睿 2017-2018年 14nm Zen+ 第二代锐龙 2018年 12nm
Kaby Lake 第七代酷睿 2016年 14nm Zen 第一代锐龙 2017年 14nm
Skylake 第六代酷睿 2015年 14nm Piledrever 第二代FX 2012-2013年 32nm
Broadwell 第五代酷睿 2014-2015年 14nm Bulldozer 第一代FX 2011年 32nm
Haswell 第四代酷睿 2013年 22nm Godavari 第七代APU 2015年 28nm
Ivy Bridge 第三代酷睿 2012年 22nm Carrizo 第五代APU 2014年 28nm
Sandy Bridge 第二代酷睿 2011年 32nm Richland 第三代APU 2013年 32nm
Nehalem/Westmere 第一代酷睿 2008-2011年 32nm Trinity 第二代APU 2012年 32nm
Conroe 酷睿2 2006-2008年 65/45nm Llano 第一代APU 2011年 32nm
Netburst 奔腾4/D 2000-2008年 65nm K10 弈龙/速龙 2007-2011年 45nm
Tualatin 奔腾3 1999-2001年 130nm K8 速龙64 2003-2007年 65nm
K7 速龙XP 1999-2004年 130nm
操作系统和普通应用进程的关系是什么?
应用程序启动后,还依赖操作系统吗?还需要操作系统的东西吗?
硬件中断时通过中断请求线输入信号来请求处理机;
软件中断是处理机内部识别并进行处理的中断过程。
硬件中断一般是由中断控制器提供中断码类型,处理机自动转向中断处理程序;
软件中断完全有处理机内部形成中断处理程序的入口地址并转向中断处理程序的入口地址,
并转向中断处理程序,不需要外部提供信息。
-----------------------------------------------------------------------------------
程序员的自我修养,疑问
-----------------------------------------------------------------------------------
1,编译器优化导致加锁的代码也非线程安全?
2,CPU乱序导致加锁加voliatile的代码也非线程安全?
进程也是以CPU时间片方式调试的
有了线程概念后,进程成为了资源分配的单位,线程是调度的单位,
3,内核线程:????
由操作系统内核创建和管理的线程,单核CPU也可能有多个内核线程?
用户线程是时间片轮转出模拟线程
4,我们所说的编译一般是指编译和汇编两步
编译是将源代码翻译成汇编语言,
汇编则是将汇编语言翻译成机器码, 生成目标文件.obj
就是说目标文件是机器码
同时,库文件 dll也是目标文件,在链接时被链接进最终的EXE中
预编译:编译之前的阶段,这个阶段是处理所有带#预编译命令(除了#pragma),
主要是将预编译指令展开,递归展开,包括#include
5,目标文件.obj与exe结构非常相似,只是多了些符号和描述信息。
在链接完成后这些符号信息被去除了。
exe文件结构大概是什么样的?文件头,数据段,代码段等,
文件头用来描述各段及其偏移地址以定位各段,
这样看起来EXE的执行就是汇编程序的机制,这里是机器码
堆的最大申请值,大概2G左右,linux上3G左右
栈最大限制 ,windows上2M左右, linux上8M左右
X86的页大小一般为4k
6,一个EXE是如何执行的
请求执行:双击EXE,OS检测该EXE是否有效-通过检查其头格式
如果合法有效则为它创建一个进程,并根据EXE头部信息将EXE的相关信息映射到进程上,
包括数据段,代码段,只读数据等。并读取头部信息中的入口函数,
然后加载所有需要的DLL,
然后调用入口函数,开始进程执行