【JavaEE初阶】计算机是如何运行的?

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

冯诺依曼体系结构

寄存器

缓存

cpu:核心和 频率

核心数

频率

cpu执行指令的流程

操作系统 核心概念

进程的概念

进程的管理

PCB表

PID 进程的标识符

内存指针(一组)

文件描述符表(顺序表/数组)

进程的调度

进程状态

进程优先级

进程的上下文

进程的记账信息


冯诺依曼体系结构

cpu(包含运算器,控制器) 存储器,输入设备  ,输出设备

CPU 中央处理器:进⾏算术运算和逻辑判断.

存储器:分为外存(硬盘,软盘,U盘,光盘)和内存,⽤于存储数据(使⽤⼆进制⽅式存储) 

  • 内存:存储空间小,访问速度快,成本高,掉电后数据丢失
  • 硬盘:存储空间大,访问速度慢,成本低,掉电后数据仍在 

 输⼊设备:⽤⼾给计算机发号施令的设备.

输出设备:计算机个⽤⼾汇报结果的设备.

存储数据主要靠 内存和硬盘,实际上,cpu在运算时,需要把 数据从内存读到cpu里,才能进行计算

寄存器

寄存器是cpu内部 存储数据的部分

  • 存储空间比内存小(往往只有几个kb),
    • 因此cpu在计算时 需要反复从内存 加载数据,效率受影响
  • 速度比内存更快(好几个量级)
  • 成本也比内存更高
  • 断电后数据会丢失

缓存

现代cpu引入了缓存, 若某个内存中的数据经常使用,寄存器又放不下,就可以放到缓存中

数据使用频率越高,就往L1上放,没那么高就放L3,中间放L2

cpu:核心和 频率

衡量一个cup的两个重要指标 :核心数 和 频率

核心数

最早的cpu都是单个核心(cpu里只有一个人在干活),现在计算机发展成了多核心多线程工作

查看计算机的任务管理器,有几个方框就可以认为有几个核心

频率

cpu的运算速度 使用频率来描述

cpu的频率会根据任务量动态调整 ,随着频率提升,消耗的电量更高,发热更多

计算机都有 '功耗墙' ,cpu温度达到一定的阈值(105摄氏度),自动降频, 所以 若散热工作做好,可以让频率达到更到的水准(超频),平时实用阶段,cpu频率达到6.0GHz 就是极限了

cpu执行指令的流程

指令:指令是cpu完成任务的基本单位 . 编程语言写的程序最终都要被翻译成 cpu上执行的二进制指令, 不同cpu 支持的指令是不同的

指令表

执行指令的三个重要阶段

取指令:cpu从内存中读取到的指令内容到cpu内部

解析指令:识别指令 对应的功能 和 操作数

执行指令

操作系统 核心概念

操作系统的作用:

  • 管理不同的硬件设备
  • 给软件提供稳定的运行环境

操作系统不是直接操作硬件,而是厂商会提供对应的"驱动程序",操作系统是通过 驱动程序,间接地操作硬件设备

操作系统 =内核+ 配套的应用程序

操作系统 有

  • Windows
  • Linux
  • Mac OS (苹果电脑内置系统)
  • Android(最主流的系统)
  • IOS(苹果手机/平板)
  • 其他小众系统(如风河公司搞得vxworks用于工业设备,航空航天)

每个系统,运行的程序都是不同的(不能兼容)

进程的概念

进程是指 正在执行的应用程序

一个应用程序有两种状态

没有运行时,是一个exe文件,躺在硬盘上

运行时,exe会被加载到内存中,并且cpu会执行里面的指令

进程的管理

一台计算机,即使不开啥程序,自己会有很多进程出来

由于一个系统进程比较多,才需要管理,分为 描述和组织

  • 描述: 通过结构体 /类,把进程的各个属性表示出来  (对于 Linux操作系统来说,使用称为"PCB"(进程控制块)这样的数据结构来描述进程信息)
  • 组织: 通过数据结构 把多个上面的数据结构穿起来,并进一步进行各种增删查改  (简单理解为 通过链表的方式,把上述的多个PCB串到一起,但实际情况更复杂,不只是一个链表)

创建新的进程(双击exe,运行起程序),相当于创建一个PCB 结构体,并且插入到链表中

销毁进程 就是把PCB从链表上 删除掉,并且释放这个PCB结构体

查看进程链表, 就是在遍历这个链表,依次显示出对应的信息

PCB表

PCB其实是一个非常复杂的结构体,里面包含的属性非常多,下面只讨论一些关键信息

PID 进程的标识符

同一时刻,一个机器上的多个进程之间,PID是唯一的,不会重复,系统内的很多操作,都是通过PID找到对应的进程的

内存指针(一组)

描述内存依赖的指令和数据都在内存的哪个区域  ,操作系统运行exe,就会读取 exe中的 指令和数据,加载到内存中(内存地址)--->侧面表示出,进程的执行需要一定的内存资源

文件描述符表(顺序表/数组)

描述了进程打开了哪些 文件(对应到硬盘上的数据)---->侧面表示出,进程的执行,需要一定的硬盘资源

进程的调度

计算机上同时存在 百八十个进程,这么多的进程都需要执行,cpu负责执行,cpu每个核心可以执行一个进程(执行里面的指令), 操作系统中进程调度的关键是 '分时复用'(即 并发执行)

"并发执行":  一个时刻cpu运行进程1,运行一会,cpu运行进程2,过一会运行进程3,由于cpu运算的速度非常快,所以上述切换的速度也很快, 站在宏观的角度来看就是 同时执行

'并行执行' : 多核cpu的每个核心之间微观上也能同时执行不同的进程

并发/并行 都是操作系统内核统一调度,程序员/普通用户感知不到, 因此平时也把并发/并行统称为'并发执行' 对应的编程手法 也称为' 并发编程'

进程状态

就绪状态(可以随叫随到)的进程  是可以随时被调度到cpu上执行指令的

阻塞状态(无法随叫随到)的进程 无法调度到cup上执行,之所以阻塞,是因为要做一些其他的工作,比如 进行IO操作(读写硬盘/ 读写网卡...)

进程优先级

谁先来,谁后来,谁多,谁少

进程的上下文

分时复用,一个进程执行一会后,就要从cpu上调度走,过一段时间还会调度回cpu,就要沿着上次的执行结果(把之前执行的中间结果保存到各种cpu寄存器中,以备下次使用)继续往下执行

进程的记账信息

进程优先级的加持下 是不同的进程吃到的资源,差异越来越大

操作系统会统计每个进程在cpu上的执行时间,根据这个来进一步调整调度的策略

这几个属性相互配合共同构成了进程调度的核心逻辑(上述的调度过程,都是系统内核负责完成的)

进程间的通信:现在进程间的通信有且只有一个方式:通过网络

  • 36
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值