计算机是如何工作的

目录

前言:在深刻了解java之前,我们应该对计算机如何工作有所了解,接下来让我们一起进入学习~

一.cpu(最重要的硬件)

1.两种架构:X86架构;arm架构

2.cpu位数

3.cpu构成

4.频率-描述单个cpu核心的速度

二.指令

1.执行指令过程

2.指令与冯诺依曼体系结构

3.cpu执行指令总结

三.操作系统(最重要的软件)

1.基本介绍

2.进程/任务

进程在系统中管理

进程的调度

内存分配-内存管理

进程间通信


一.cpu(最重要的硬件)

1.两种架构:X86架构;arm架构

(1)不同架构的cpu,支持的指令集(机器汇编)不同,对应的机器语言/汇编(cpu指令-二进制)语言不同;

(2)现在的x86cpu都是64位的

2.cpu位数

回忆c语言代码 

int*p=NULL;

printf("%d",sizeof(p));

若cpu是16位cpu,得到结果是2(2个字节,16个bit位);

cpu是32位cpu,得到结果是4;若cpu是64位cpu,得到结果是8;

cpu位数和代码中内存地址用几个字节表示密切相关.

3.cpu构成

(1)门电路=>半加器=>全加器=>加法器=>ALU运算器=>差不多构成cpu;

(2)cpu以及其他内存,硬件等重要设备都是门电路构成;

(3)门电路由晶体管构成-基本单位足够多,足够小,小到nm级,越小集成程度越高,算力越强;

(4)"多核cpu"-cpu核心,每个核心相当于完整cpu,多个软件-"并发编程"-cpu的核心数是重要参考证据,一个cpu当成两-"超线程技术"

(5)现在的cpu都是这种多核+超线程技术加持的产物,cpu的好坏不光要看核心,也要看频率.

(6)核心数-多个核心运算能力;主频(基准频率,睿频)-单个核心运算能力.

4.频率-描述单个cpu核心的速度

(1) 单位HZ- 一秒钟的次数 GHZ=1024MHZ MHZ=1024KHZ 1KHZ=1024HZ ;

(2)睿频技术-cpu的频率动态发生变化,即衡量任务多不多;

(3)衡量一个cpu的单核性能,既要看基础频率(下限),最大睿频(上限);

二.指令

1.执行指令过程

模拟cpu执行指令的过程(简化版本,真实的X86或arm指令表更为复杂)

这一段指令就是内存中的一段数据;代码运行需要让操作系统先把写好的并编译好的指令加载到内存中,然后cpu才能执行

eg:从0号地址开始执行程序,cpu先从0号地址读取数据到cpu寄存器,并对指令进行解析(查询指令表)

(1) 0-0010 1110 即 将14号内存地址读取到寄存器A(00000011)

0010:前四位为opcode -操作码(指令表查询)-LOADA -要完成的工作为从内存中读取数据到A寄存器中

1110:后四位:-参数-十进制-14-内存地址

注:默认情况下,CPU执行中的指令是顺序执行,若遇到(if,while,for,throw函数调用)-跳转指令;

即地址从0到1:

(2)1-0001 1111即 将15号内存地址读取到寄存器B(00001110)

0001:opcode-操作码-LOAD B (指令表中查询)

1111:转化为10进制-15号内存地址

(3)2-1000 01 00

1000: ADD(把两个寄存器里内容相加,结果保存第二个操作数寄存器:A)

00:2位寄存器ID(寄存器A)

01:2位寄存器ID(寄存器B)

寄存器A(00000011)+寄存器B(00001110)=3+14=17

寄存器A(00010001)

(4)3-0100 1101

0100:STORE A(把A寄存器中的值写入13)

1101:转化为10进制-13号内存地址

2.指令与冯诺依曼体系结构

冯诺依曼提出体系本质:把执行和存储分开-为了解耦合-降低硬件设计成本;

在当年很必要-cpu执行指令速度和存储器取指令差不多,相互配合很好;

但随着硬件发展,cpu越来越快,但内存读取数据提升不明显,设置缓存解决问题

3.cpu执行指令总结

1.cpu要执行指令是先在内存中(冯诺依曼体系结构基本设定-让执行单元与存储单元解耦合)

2.cpu要执行指令就要先取指令,在解析指令,然后才能执行指令;

3.取指令需要从内存中读取指令到cpu寄存器中,取指令很耗时,通过引入缓存,流水线优化等技术

4.cpu解析指令需要指令表,不同架构cpu支持指令表不同;

5.指令在执行过程中,可能会带有一些操作数,不同指令,操作数的个数含义不同;

6.cpu重要参数,主频:-1s之内,一个核心能执行多少条指令(机器语言最终由CPU执行)

三.操作系统(最重要的软件)

1.基本介绍

  • 应用程序
    操作系
    处理器主存I/O设备

1.是一个由代码构成程序的软件;

2.主要职责:抽象封装

(1)管理各种硬件;(2)给其他软件提供稳定的运行环境;

即:统一管理各种不同的硬件设备,给软件提供统一的api(类似jdbc),操作系统也提供一些管理软件资源的api,普通代码也可以通过调用api来完成特定工作(多线程,网络编程)

2.进程/任务

1.操作系统提供的一种软件资源;正在运行的程序,称为任务/进程;

2.多任务操作系统:同一时刻,可以同时运行多个任务;来回切换也算;

单任务操作系统:同一时刻,只能运行一个任务,没有后台;

3.每个任务在执行过程中都消耗一定硬件资源;

4.进程是系统分配资源的基本单位-内存,硬盘;

进程在系统中管理

1.先描述(使用类/结构体这样的方式把实体属性列出来);

表示进程信息的结构体PCB(Process  Control Block)--进程控制板块;

PCB是操作系统学科里通用概念,在Linux是一个叫做struct task_struct{...}这样的结构体;

2.再组织(使用一定的数据结构(链表)把这些结构体/对象串到一起);

看到任务管理器进程时,表示系统内部在遍历链表并打印每个阶段的相关信息;

运行一个新程序,系统多一个进程,即需要构造一个新的PCB并添加到链表上;

若运行中的程序退出,需要把对应进程的PCB从链表中删除掉并销毁对应PCB资源;

PCB的核心属性

PCB是一个非常庞大的结构体,有上百个属性;

1.pid-进程的身份标识符,通过简单的不重复整数区分,是唯一的.pid一般来说是32位整数;

用pid可对进程操作区分;

2.内存指针-表述进程能使用哪些内存;表述进程使用内存资源详细情况;

进程运行中需消耗一些系统资源,内存就是重要资源;

每个进程,先从系统申请,内存才能使用;需要知道哪里存指令和数据;

指令和数据都要加载到内存中;

双击exe-运行进程-系统先把exe这个文件里的内容(指令和数据)先加载到内存中,在创建进程,让进程开始执行;

3.文件描述表-操作系统对硬盘设备进行封装(文件),存储器=内存+外存;

操作系统是统一进行抽象,都是按照文件方式操作;

进程想要操作文件,需要先打开文件-让进程在文件描述符表中分配一个表项(构造一个结构体),表示这个文件的相关信息;进程消耗CPU资源:当前计算机执行过程都是并发(分时复用)+并行同时存在;

fopen-C语言的标准库函数-操作系统提供的api(Linux)-open;

进程消耗CPU资源:当前计算机执行过程都是并发(分时复用)+并行同时存在;

进程的调度

进程的调度-分时复用,并发进行;

PCB提供一些属性来支持系统完成对这些进程的调度:

4.状态:表述某个进程是否能去CPU执行;

就绪状态:随时准备好去CPU执行;

阻塞状态:当前不方便去CPU执行,不应该调度(进程在等待/挂起IO:来自控制台/硬盘/网卡的输入输出)

5.优先级:先调度谁都可以进行调配;

6.记账信息:针对每个进程占据多少CPU时间进行统计,会根据这个统计结果来进行调整调度的策略;

在下一个轮次进行调整,确保每个进程都不至于完全捞不着CPU的情况.

7.上下文:支撑进程调度的重要属性:相当于游戏中的存档和读档;

是PCB中的数据结构相当于是在内存上的;

每个进程在运行过程中,会有很多中间结果,在CPU的寄存器中;

存档:在进程调度CPU之前,把当前寄存器中的这些信息给单独保存到一个地方;

保存上下文:把CPU的关键寄存器中的数据保存到内存中(PCB的上下文属性中)

读档:在该进程下次再去CPU上执行的时候,再把这些寄存器的信息给恢复回来;

恢复上下文:把内存中的关键寄存器的数据加载到CPU对应寄存器中

内存分配-内存管理

每个进程的内存:彼此独立,互不干扰;通常情况下,进程A不能直接访问进程B的内存(系统稳定性);

进程间通信

虽然有进程独立性,但有时候也需要多个进程相互配合,完成某项工作

进程间通信和进程的独立性并不冲突,系统提供公共空间(多个进程都能访问到),让两个进程借助这种公共空间来交互数据;

通信方式:管道;共享内存;文件;网络;信号量;信号

在java中不鼓励多进程,而是多线程!

下一章更新~

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值