linux
CPU核心
物理核心
就是实实在在插在主机上看得见摸得着那块CPU硬件,可通过如下命令来查看物理CPU个数:
CPU核数
一块物理CPU上能处理数据的芯片组数量。也就是说一个物理CPU上可能会有多个核心,日常中说的双核,四核就是指的CPU核心。可通过如下命令来查看CPU核心数:
超线程
一个CPU核就是一个物理线程,由英特尔开发的超线程技术可以把一个实体CPU核心模拟出两个线程来使用,在 CPU 层面通过共用原件来做到一个物理核执行两个逻辑核的任务,使得单个核心用起来像两个核一样。
并不是所有的CPU都运用了超线程技术,而且超线程并不是真的能让一个核心当2个用。超线程是因为现有的应用缺陷而产生的技术,因为各种原因现在在实际应用中并不可以完全充分利用CPU的处理单元。超线程可以让那一部分并没有被利用的资源利用起来,以充分发挥CPU的能力。
逻辑核心
总的逻辑CPU数对应总的CPU核数,但借助超线程技术,一个核用起来像两个核,这时逻辑CPU数就是核心数的两倍了。可通过如下命令来查看逻辑CPU数:
另外用top命令,然后输入1也是可以的。
Rings
操作系统提供不同的资源访问级别。内层Ring可以随便使用外层Ring的资源,而外层Ring经授权才能访问内层Ring的资源。
Ring 0(内核态)拥有最高特权,并且可以和最多的硬件直接交互(比如CPU,内存)。
Ring 2 用于某些需要特权的代码(例如需要I/O权限的用户程序)。
Ring 3 用于非特权代码(几乎所有的用户程序都在这一级别)。库函数,如open()、write()、read()等也在这一层,Shell 也在这一层。
比如,打印机的打印任务在 Ring 3 层触发,通过系统调用的方式(systemcall)调用 Ring 2 层提供的接口,Ring 2 层向打印机发送打印指令。
Last updated
Was this helpful?