计算机的构成


CPU的基本情况

  • 常见的CPU架构
    1. x86架构 (intel, amd, 家用pc, 服务器等)
    2. arm架构 (苹果,高通,苹果电脑和苹果手机)

  • 不同架构的CPU对应的指令集是不同
    • 不同架构的CPU,指令集不同,对应的机器语言汇编语言也是不同的。其中,8086是上个世纪典型的一款CPU代表,后续(80286,80386,80486)等等CPU统称为x86

多核CPU

  1. 将多个可以独立工作的CPU聚集成一起合成一个CPU,原本一个任务一个CPU干活,现在一个任务多个CPU一起干活;当然,一份活就需要拆分成多份给多个CPU,这就需要软件合理的将大任务拆分成多个小任务。软件就引入了(“并发编程”)。
  2. 既然CPU可以并发编程,那一个CPU能否做两个工作呢?答案是可以的,称作(超线程技术)。可以看做是物理核心逻辑核心,比如:4个物理核心有8个逻辑核心(4个人能干8个人的活)。
    • 如何查看自己的电脑有多少逻辑核心?
      • 打开任务管理器
      • 点击性能
      • 右击鼠标点击将图形更改为逻辑处理器
      • 可以看到“内核”以及“逻辑处理器之间的关系”、

在这里插入图片描述在这里插入图片描述


简单模拟指令

指令(instruction) 功能说明 4位 opcode 操作的地址或者寄存器
LOAD_A 从 RAM 的指定地址,将数据加载到 A 寄存器 0010 4 位 RAM 地址
LOAD_B 从 RAM 的指定地址,将数据加载到 B 寄存器 0001 4 位 RAM 地址
STORE_A 将数据从 A 寄存器写入 RAM 的指定地址 0100 4 位 RAM 地址
ADD 计算两个指定寄存器的数据的和,并将结果放入第二个寄存器 1000 2 位的寄存器 ID 2 位的寄存器 ID

(当前只是一个简单的版本,实际情况要复制的多)

  • 什么是寄存器

    • 寄存器是CPU上存储数据的单元,和硬盘、内存类似,CPU上也可以存储数据,读取数据速度是内存的上万倍,但是CPU较为珍贵,存储的数据量不会太大。
    • 比方说我们有这一些指令集,一开始指针指向地址0.
    地址 数据
    0 00101110
    1 00011111
    2 10000100
    3 01001101
    14 00000011
    • 那么数据“00101110”可以看作两部分:“0010”对应上表中的操作命令LOAD_A,“1110”是内存中的地址,总体表示的意义为:将内存地址为“1110”里面的数据读取到寄存器A当中。“1110”对应的值为14,也就是说“00000011”数据被寄存器A读取了。
    • 由于现代计算机CPU执行速度大大提高,读取内存的速度已经跟不上CPU执行的速度,缓存能够很好的解决这种问题:一次性的先读取一部分数据在CPU缓存中,就近拿取数据。
    • 地址2进行add操作”10000100“拆分为三部分:""1000"为指令ADD,计算两个指定寄存器的数据的和,并将结果放入第二个寄存器."01"代表寄存器B,"00"代表寄存器A.

操作系统

操作系统是计算机中最重要的软件,需要管理各种硬件设备,给其他软件提供稳定的运行环境

  • 操作系统给各种硬件提供了统一的API,在JAVA语言当中,JVM已经将系统的API进行了封装,直接调用JVM的API,不需要充分学习系统原生的API,并且JVM的API是跨平台的,对于Windows,linux都适用。

进程是系统分配资源的基本单位

  • 电脑上打开的各种软件都可以看作是进程(任务)。
  • 进程的管理
    1. 先描述(使用类、结构体的方式,把实体属性列出来)Process Control Block
      • PCB结构体有很多的属性,常见的有
        1. pid 每一个进程都有它自身对应的进程id号,同一台机器的进程id号都是唯一的,利于进行添加与删除
        2. 内存指针(一组) 进程运行是需要占用内存资源的,系统分配给了你多少内存,你就只能在当中使用,不能随意的逾越鸿沟。一个进程运行起来,指令和数据都需要分配到对应的内存中。
        3. 文件描述符表 进程经常需要访问硬盘,操作系统对硬盘进行了封装(文件)进程要访问文件,就要先打开文件,构造一个结构体,将文件的信息装进结构体。
        4. CPU的分时复用 进程的数量往往都比逻辑核心要多,为了多进程能运行,进程需要分时复用,某个时刻进程1占用,某个时刻进程2占用…
    2. 再组织(使用一定的数据结构,把这些类、结构体连在一起)
      • 使用复杂的链表将进程串到一起,进行增加或删除操作。
  • 进程的并发执行
    • 多个核心同时运行时称为“并行执行
    • 一个核心要对不同的进程分时复用,称为‘’并发执行
    • 当代计算机都是并行和并发同时进行的,人类感知不到,往往将这两个概念统称为并发

进程的调度

  1. 状态
    • 描述某个进程当前是否适合进入CPU执行 (就绪状态 / 阻塞状态)。
  2. 优先级
    • 进程资源的分配是不公平的,重要的进程往往更优先被调度。
  3. 记账信息
    • 针对每一个进程,统计它占用CPU的时间,合理的调整进程调度的策略。
  4. 上下文
    • 相当于游戏的读档存档,接着上一次的指令继续往下执行。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐