从硬件层面理解到底什么是进程?

2023-09-22 14:12:30 浏览数 (1)

多核

之前的文章所说的都是如何优化一条指令执行的速度(比如并发,乱序,分支预测,加相同电路让某个频繁操作可以同时进行处理),另外一种提升性能的方式就是 同时运行多个指令流,使用多核处理器:

可以看到就是将原先的独立处理单元,复制了很多块,这些就是多核

注意这个时候进城和线程区别就来了

平常说的四核两核处理器指的是一个cpu里面,有多少个独立处理单元:核

一个核代表可以运行一个线程,之后讲解线程说明

三级缓存

由于这些处理单元非常紧密在一个cpu中,因此这些核可以共享一些资源,比如缓存可以使多个核合作运算,多个核之间共享的缓存是l3缓存。l2和l1是核内的缓存,且l3.l2.l1缓存的内容越来越少。

进程

进程是一段程序比如QQ,微信这些程序,这些程序呢运行肯定需要指令,这些指令存储在什么地方呢?存储在RAM中,也就是所谓的把程序装入内存。因此创建进程需要申请内存空间,把这个进程的指令装入内存中。进程是静态的,是用来申请存储空间和其他资源(比如网络)的。

进程放入内存中时,会默认有一个主线程去运行指令

进程上下文切换

CPU采用时间片轮转的机制来运行进程,这个进程运行一会,那个进程运行一会。进程切换的时候需要保存上下文信息:不仅包括程序运行位置(指令地址寄存器),虚拟内存(程序指令空间)、栈、全局变量等用户空间资源,还包括内核堆栈、寄存器等内核空间状态。undefined上下文切换过程中的信息被保存在进程控制块(PCB-Process Control Block)中。PCB又被称作切换帧(SwitchFrame)。上下文切换的信息会一直被保存在CPU的内存中,直到被再次使用。 每次进程上下文切换需要几十纳秒到数微秒的CPU时间.并且Linux通过TLB来管理虚拟内存到物理内存之间的映射,当虚拟内存更新后,TLB也需要刷新,内存的访问也会随之变慢。特别在多核处理器系统上,缓存被多个处理器共享,刷新缓存不仅会影响当前核处理器的进程,还会影响共享缓存(也即L3缓存)的其他核处理器的进程。

流程

进程1运行到指令2的时候,分配给进程1的时间片到了,此时该运行进城2了,把当前进程1的上下文数据保存到当前进程内存的PCB区域;接着恢复进程2地址空间中上次保存的PCB数据运行,也就是读取进程2内存的PCB区域赋值给寄存器,栈 再运行。

当进程2的时间片到了之后也是一样 保存进程2的TCB,恢复进程1的TCB,

上次记录的是运行到指令2了,因此下一个指令是运行指令3

我正在参与

0 人点赞