国外网站策划,sharepoint网站制作,国外域名注册网站 中文,网站建设开发费用入什么科目冯诺依曼体系#xff08;VonNeumannArchitecture#xff09;
现代计算机#xff0c;大多遵守冯诺依曼体系结构 CPU中央处理器#xff1a;进行算术运算与逻辑判断
存储器#xff1a;分为外存和内存#xff0c;用于存储数据#xff08;使用二进制存储#xff09;
输入…冯诺依曼体系VonNeumannArchitecture
现代计算机大多遵守冯诺依曼体系结构 CPU中央处理器进行算术运算与逻辑判断
存储器分为外存和内存用于存储数据使用二进制存储
输入设备用户给计算机发号施令的设备
输出设备计算机给用户汇报结果的设备
针对存储空间硬盘 内存 CPU
针对数据访问速度CPU 内存 硬盘
CPU基本工作流程
指令Instruction
主要有操作码 操作数组成其中操作码用来表示要做什么动作操作数是本条指定要操作的数据可能是内存地址也可能是寄存器编号等
一个CPU能执行哪些指定可以认为是CPU最初设计的时候就已经确定好了存在一个“表格”描述了都有哪些指令
下面是一个简化的指令表Instruction Table
指令(instruction)功能说明4位 opcode操作的地址或者寄存器LOAD_A从 RAM 的指定地址将数据加载到 A 寄存器00104 位 RAM 地址LOAD_B从 RAM 的指定地址将数据加载到 B寄存器00014 位 RAM 地址STORE_A将数据从 A 寄存器写入RAM 的指定地址01004 位 RAM 地址ADD计算两个指定寄存器的数据的和并将结果放入第二个寄存器10002 位的寄存器 ID 2 位的寄存器 ID
tips
AB名字是虚拟的真实的cpu寄存器的名字如eax、ebx、esp、ebp....
此处假设每个指令只有 8 bit 实际一个指定很长
8 bit 的指令分成两部分前4 bit 是操作码表示指定是干啥的后4 bit 是操作数类似于参数
执行指令的三个重要阶段
1. 取指令cpu从内存中读取到指令内容到cpu内部有专门的寄存器保存读到的指令
2. 解析指令识别出这个指令是干啥的以及对应的功能和操作数
3. 执行指令
执行示例
给一段内存空间以及里面的数据 cpu中存在一个特殊的寄存器“程序计数器”保存了接下来要从哪个内存位置来执行指令本例可以认为程序计数器被设为0接下来从0号内存地址开始执行指令同时随着指令的执行该处的值会自增更新这是顺序执行的情况若遇到“跳转类语句”if、while、for、函数调用...会被设为其他的值本例不考虑 1. 初始情况下程序计数器是0值
a. 读取指令00101110
b. 解析指令 c. 执行指令把14地址的内存数据读出来放到寄存器A中 第一条指令执行完毕系统自动将程序计数器中的值从0 - 1 2. 执行地址为1的指令
a. 读取指令00011111
b. 解析指令0001 1111
查看指令表可知该指令是LOAD_B把1111地址上的数据读取到寄存器B中
c. 执行指令把15地址的内存数据读取出来放到寄存器B中 第二条指令执行完毕系统自动将程序计数器中的值从1 - 2 3. 执行地址为2的指令
a. 读取指令100000100
b. 解析指令 c. 执行指令
将17的二进制存储到寄存器A中 第三条指令执行完毕系统自动将程序计数器中的值从2 - 3 4. 执行地址为3的指令
a. 读取指令01001101
b. 解析指令
查看指令表可知该指令是STORE_A将数据从A寄存器写入1101地址的内存中
c. 执行指令 第四条指令执行完毕系统自动将程序计数器中的值从3 - 4 5. 执行地址为4的指令
a. 读取指令00000000
b. 解析指令程序执行结束
上例就是CPU完成 3 14 的过程
操作系统OperatingSystem
操作系统是⼀组做计算机资源管理的软件的统称。⽬前常⻅的操作系统有Windows系列、Unix系 列、Linux系列、OSX系列、Android系列、iOS系列、鸿蒙等。
一个操作系统要做很多事其中最重要的就是“管理”
1. 管理不同的硬件设备键盘、显示器、打印机、医疗设备...
2. 给软件提供稳定的运行环境现代操作系统上要同时运行很多程序希望这些程序之间不能相互干扰
操作系统 内核 配套的应用程序
对于操作系统内核来说其包含的功能是非常多的其中有一个功能和日常开发息息相关那就是进程管理
进程/任务Process/Task
进程就是正在执行的应用程序进程是操作系统进行资源分配的基本单位
由于一个系统上进程比较多需要管理分为两部分
1. 描述通过 结构体/类 把进程的各种属性表示出来对于Linux操作系统来说使用“PCB(继承控制块)”这样的结构体来描述进程信息
2. 组织通过数据结构把多个结构体穿起来并进行增删查改操作可以简单的认为是通过链表的方式把上述多个PCB串到一起实际情况会更复杂 PCB中的关键信息
1. PID进程的标识符
同一时刻一个机器上的多个进程之间PID是唯一的不会重复的系统内部很多操作都是通过PID找到对应的进程的 2. 内存指针一组
描述进程依赖的指令和数据都在内存的哪个区域
操作系统运行exe就会读取exe中的指令和数据加载到内存中侧面表示出进程的执行需要一定的内存资源
3. 文件描述符表顺序表/数组
描述了进程打开了哪些文件对应到硬盘上的数据侧面表示出进程的执行需要一定的硬盘资源
进程中打开了某个文件就会在顺序表中添加一项 tip进程的调度 操作系统进程调度的关键分时复用 并发执行只有一个核心的cpu一会运行进程1一会运行进程2一会运行进程3...由于cpu运算速度非常快使得切换速度也非常快肉眼察觉不到站在宏观角度人的角度同时执行称为并发执行 并行执行现在有了多核心的cpu此时每个核心和核心之间微观上也能同时执行不同的进程称为并行执行 并发和并行都是操作系统内核同意调度的程序员/普通用户感知不到 因此平时把并发和并行统称为“并发”对应的编程手法也成为并发编程 以下4点均属于进程的调度
4. 进程状态
就绪状态随时可以被调度到cpu上执行指令
阻塞状态无法调度到cpu上执行之所以阻塞是因为要做一些其他的工作比如IO操作读写硬盘/读写网卡...
像C中的scanf和Java中的Scanner执行到这样的语句都会发生阻塞
除了上两种状态进程还有其他的状态此处不展开
5. 进程优先级
根据进程情况给与相应的优先级
6. 进程的上下文
分时复用一个进程执行一会之后就从cpu上调度走过一段时间会调度回cpu沿着上次执行的结果继续往后执行将上次执行的中间结果各种cpu寄存器中的值保存起来以备下次使用此为进程的上下文
7. 进程的记账信息
在优先级的加持下使得不同进程吃到的资源擦会议越来越大操作系统统计每个进程在cpu上执行的时间根据这个来进一步的调整调度的策略
以上7中属性相互配合共同构成了进程调度的核心逻辑
上述的调度过程均为系统内核负责完成