计算机是如何工作的—JavaEE(初阶)

文章目录

  • 1.冯洛伊曼计算机体系
  • 2.Java进程从写代码到执行
  • 3.进程
    • 3.1操作系统
    • 3.2进程管理
    • 3.3操作系统管理进程
    • 3.4系统管理进程
    • 3.5时间片轮转调度算法
    • 3.6进程的状态
    • 3.7并行和并发
    • 3.8抢占式的调度
    • 3.9进程
    • 3.10进程通信(了解)

1.冯洛伊曼计算机体系

(1)输入设备:键盘、鼠标、硬盘
(2)输出设备:显示器、打印机、硬盘
(3)存储器:内存
(4)CPU:
①运算器:计算(±*/),逻辑运算
②控制器:if、while控制语句的执行方向
③寄存器:CPU执行进程时,保存进程需要的数据
(5)程序:静态的可执行文件(Java)
(6)进程:程序运行后(加载程序代码到内存,并分配进程到内存;使用CPU执行进程的代码),动态的
(7)寄存器和内存和硬盘:速度由快到慢,执行到某行代码时,主存(进程内存)中的数据,读取到寄存器,修改后写回主存

2.Java进程从写代码到执行

(1)Java文件通过javac编译到class字节码文件通过Java类名(入口类执行类加载,在main方法)到运行
(2)对比编译型语言和解释型语言:编译型语言:需要编译的语言;解释型语言:运行时,将代码翻译为CPU能执行的机器码
(3)Java程序是跨平台的,原因食Java既是编译型语言也是解释型语言:静态编译Java文件为class文件,再翻译class字节码文件为机器码(Java进程启动后,就会创建一个Java虚拟机,边运行边翻译字节码为机器码)
(4)c++为编译型语言:编译为具体某个系统的机器码

3.进程

3.1操作系统

(1)操作系统是一款专门搞管理的软件,往下管理硬件,往上管理进程
(2)产品:windows、Linux、mac os

3.2进程管理

(1)进程:系统分配资源的最小单位(资源包括内存、网络、硬盘)
(2)CPU:多核CPU,其实就是把多个CPU打包捆绑在一起,安装在电脑中,每个CPU核心,都可以执行进程的代码指令

3.3操作系统管理进程

(1)描述:通过pcb结构体
(2)组织:把多个进程pcb组织起来(通过一定的数据结构(链表),组织相关的信息)
(3)任务管理器:遍历
(4)创建进程:创建一个pcb,添加到这个链表
(5)关闭进程:从链表中删除
(6)操作系统管理进程,类似于CPU执行一段时间,相对人肉眼,可能感知不到

3.4系统管理进程

系统管理进程,会先创建一个进程的pcb结构体(用于描述进程信息),包括:
(1)pid:标识进程的身份(类似数据库主键)
(2)状态:包括运行,阻塞等等状态
(3)内存指针:进程内存地址
(4)资源清单:io设备,硬盘文件,文件描述符表:定位硬盘中的文件,默认创建三个文件描述符:类似于Java中的System.out(标准输出), System.err(错误输出), System.in(标准输入)
(5)调度信息:进程执行了多少代码,等待了多久
(6)上下文:时间片切换出去,保留上下文(主存:没有处于时间片范围的进程信息),切换回来,要恢复上下文(寄存器:处于时间片范围的进程)

3.5时间片轮转调度算法

(1)定义:一个CPU以时间片轮转调度的方式,依次执行多个进程,给人感觉还是同时执行
(2)一个进程一个时间片,执行一段时间就切换到下一个进程执行

3.6进程的状态

计算机是如何工作的—JavaEE(初阶)_第1张图片
(1)就绪:没有运行,还在等待轮转调度,等待调度安排
(2)运行:处于时间片范围内,正在执行的状态,由CPU执行

3.7并行和并发

(1)并行:多个CPU在一个时间点,同时执行多个进程
(2)并发:一个CPU以时间片轮转调度的方式,执行多个进程,给我们的感觉就像是同时执行(实际是一个肉眼无法感知的小范围)
(3)真实的计算机中,既存在并发,也存在并行
(4)一个进程,到底是就绪态,还是运行态,是由系统调度决定,进程是无法感知的

3.8抢占式的调度

(1)有优先级比较高的任务,就需要以抢占式的方式,优先执行
(2)B进程:优先安排时间片(运行态)——>A进程:时间片提前结束(运行态转为就绪态)

3.9进程

计算机是如何工作的—JavaEE(初阶)_第2张图片
(1)通过进程的虚拟地址空间,映射到物理内存
隔离多个进程的内存:更安全——>假设大家都允许操作同一块物理内存,就可能发生交叉感染(你修改的,我删除了)
(2)进程是由操作系统创建及管理的,是虚拟地址空间
(3)虚拟地址空间:使用分页式存储管理
(4)虚拟内存:现代操作系统,都会使用一种虚拟内存的技术,用在某些进程进入阻塞等不活跃的状态,把进程需要的数据,放在硬盘中;系统中所有进程使用的内存,就可以超过内存的限制,扩展真实使用的内存
(5)虚拟地址空间+(物理内容+硬盘)
(6)进程要加载某些数据:通过虚拟地址空间,查找对应的物理内容中的数据,找到,就直接使用;找不到,就会产生一个缺页式中断,就会再次从虚拟内存保存在硬盘的部分查找

3.10进程通信(了解)

(1)进程使用虚拟地址空间,内存是互相隔离开(不能通过共享变量等来通信),但是实际可能需要这样的场景,比如,某些进程需要一定的执行顺序
(2)目前,主流的操作系统提供的进程通信机制:管道、共享内存、文件、网络、信号量、信号
(3)Java如果涉及到进程间通信,大部分都是采用网络传输数据的方案

你可能感兴趣的:(JavaEE,java-ee,java,开发语言)