计算机基础知识、线程

计算机基础

1、工作方式
模型:冯诺依曼计算机模型
工作方式:通过去指令一条条执行,加工
2、核心组成
控制器:对程序进行解释、根据要求控制
运算器:主要对数据进行加工、进行算数或逻辑运算
存储器:存储
输入、输出
计算机基础知识、线程
3、cpu内部划分
控制、运算、存储单元
计算机基础知识、线程
4、一些cpu的概念
**多cpu:**现在电脑支持一个服务器中放多个cpu
cpu多核:着这个程序的不同线程需要经常在CPU之间的外部总线上通信,同时还 要处理不同CPU之间不同缓存导致数据不一致的问题,所以在这种场景下多核单CPU的架构就 能发挥很大的优势,通信都在内部总线,共用同一个缓存。
CPU寄存器 :是CPU内,内存的基础
CPU缓存 :即高速缓冲存储器,是位于CPU与主内存间的一种容量较小但速度很高的存储器。
一级Cache(L1 Cache) 二级Cache(L2 Cache) 三级Cache(L3 Cache)
速度:l1>=l2>l3,l1、l2速度近乎于cpu的速度
CPU读取存储器数据过程
计算机基础知识、线程
5、多线程下存在的问题
①缓存一致性问题
解决方案:MESI(缓存一致性协议)、总线加锁(淘汰)
M(修改)、E(独占)、s(共享)、I(无效)
流程:cpu1拿到一个x值,此时的缓存行为E状态,当cpu2拿到x值时(总线会实时嗅探)缓存行变为S状态,当cpu1或者cpu2 想修改时,一个变为M、另一个变为I。如果同一时间去修改,在一个指令周期内,有一个优先级问题,所以同一时间也不会出问题
②指令重排序问题

二、线程

1、线程和进程的区别:
a、进程是window调度资源的最小单位,线程是cpu的执行的最小单位
b、内核线程也算是一个轻量级进程,进程中可以包含多个线程
c、之所以程序中创建线程会影响性能,因为我们的jvm是不能直接操作cpu硬件的,他需要操作系统来映射,通过操作系统中的库函数来调用实现
2、线程分类
1、用户级线程(User-Level Thread) ULT
用户线程:指不需要内核支持而在用户程序中实现的线程,其不依赖于操作系统核心,应 用进程利用线程库提供创建、同步、调度和管理线程的函数来控制用户线程。另外,用户线程 是由应用进程利用线程库创建和管理,不依赖于操作系统核心。不需要用户态/核心态切换, 速度快。操作系统内核不知道多线程的存在,因此一个线程阻塞将使得整个进程(包括它的所 有线程)阻塞。由于这里的处理器时间片分配是以进程为基本单位,所以每个线程执行的时间 相对减少
2、内核线线程(Kernel-Level Thread) KLT
内核线程: 线程的所有管理操作都是由操作系统内核完成的。内核保存线程的状态和上下 文信息,当一个线程执行了引起阻塞的系统调用时,内核可以调度该进程的其他线程执行。在 多处理器系统上,内核可以分派属于同一进程的多个线程在多个处理器上运行,提高进程执行 的并行度。由于需要内核完成线程的创建、调度和管理,所以和用户级线程相比这些操作要慢 得多,但是仍然比进程的创建和管理操作要快。大多数市场上的操作系统,如Windows, Linux等都支持内核级线程
计算机基础知识、线程