计算机的工作原理

目录

一、冯诺依曼体系

二、java进程

三、进程

1、操作系统

2、进程管理


一、冯诺依曼体系

  •  CPU中央处理器:进行算术运算和逻辑判断;
    1)运算器:进行逻辑运算
    2)寄存器:cpu执行进程时,保存进程需要的数据
    3)控制器:if、while控制语句的执行方向
  • 存储器:分为内存和外存,用来存储数据(使用二进制存储)
  • 输入设备
  • 输出设备

存储空间:硬盘>内存>>cpu

数据访问速度:cpu>>内存>硬盘

程序:静态的可执行文件(java.exe)

二、java进程

 编译型语言和解释型语言:

  • 编译型语言:需要编译的编程语言
  • 解释型语言:运行时,将代码翻译为cpu可以执行的机器码

为什么Java程序可以跨平台?

对于Java语言,既是编译型语言,也是解释型语言。静态编译java文件为class字节码文件;

Java进程启动后,就会创建一个Java虚拟机,便运行便翻译字节码为机器码(便运行便翻译,效率较低)。而对于C++,直接静态编译为具体某个系统的机器码,所以其不可跨平台(效率比较高)。

三、进程

进程是由操作系统创建并管理的。

jdk、jre、jvm之间的关系

1、操作系统

操作系统是一组做计算机资源管理的软件的统称。常见的操作系统:Windows系列、Unix系列、
Linux系列、OSX系列、Android系列、iOS系列等。

 操作系统向上可以管理进程,向下可以管理硬件(通过硬件的驱动程序来管理)。

2、进程管理

(1)进程:系统分配资源(内存、网络、硬盘)的最小单位。

默认创建三个文件描述符:

 (2)cpu:多核cpu,就是将多个cpuu捆绑在一起,安装在电脑中;meigecpu核心,都可以执行进程的代码指令。

(3)系统管理进程:会先创建一个进程的pcb结构体(用于描述进程信息),包括:

  1. pid:标识进程的身份(类似数据库主键)
  2. 状态:包括运行、阻塞等状态
  3. 内存指针:进程的内存地址
  4. 资源清单:io设备和硬盘文件
    文件描述符表:定位硬盘中的文件:
    默认创建三个文件描述符:System.out,System.err,System.in
  5. 调度信息:进程执行了多少代码,等待了多久
  6. 上下文

(4)系统对进程的调度

系统中,进程的数量远远大于cpu的核心数,为什么给我们的感觉,是在同时进行?

时间片轮转调度算法:一个cpu以时间片轮转调度(一个进程一个时间片,执行一段时间,就切换到下一个进程继续执行)的方式,依次执行多个进程。

操作系统管理进程,也是类似cpu执行一段时间,只是相对于人眼感知不到。

抢占式调度:有优先级比较高的任务,就需要以抢占式的方式优先执行。

上下文:时间片切换出去,保留上下文(主存);切换回来,要恢复下文(寄存器)

(5)进程的状态

一个进程是就绪态还是运行态,是由系统调度决定的,进程是无法感知的。

并发和并行;

  • 并发:一个cpu以时间片轮转调度的方式,执行多个进程,给我们感觉像是同时执行(实际是肉眼无法感知的小范围时间)
  • 并行:多个cpu在同一时间点,同时执行多个进程

计算机中,即存在并发,也存在并行。

(6)进程:虚拟地址空间

 通过进程的虚拟地址空间,映射到物理内存。(隔离多个进程的内存→更安全。)

虚拟地址空间(使用分页式存储管理)

虚拟内存:现在操作系统,都会使用一种虚拟内存的技术,用于某些进程进入阻塞等不活跃的状态,把进程需要的数据,放到硬盘中,系统中所有进程使用的内存,就可以超过物理内存的限制(扩展真实使用的内存

进程要加载某些数据:

  1. 通过虚拟的地址空间,查找对应的物理内容中的数据,如果找到,直接使用;
  2. 如果找不到,就产生一个分页式中断,就会再次从虚拟内存保存到硬盘的部分去查找。

(7)进程通信

进程使用虚拟地址空间,内存是互相隔离开的(不能通过共享变量来通信)。

但实际可能需要这样的场景:某些进程间需要一定的执行顺序。

目前:主流操作系统提供的进程通信机制如下:

1. 管道   2. 共享内存  3. 文件
4. 网络  5. 信号量  6. 信号

猜你喜欢

转载自blog.csdn.net/weixin_54342360/article/details/124421850