当前位置 : 主页 > 编程语言 > java >

JavaEE-进程

来源:互联网 收集:自由互联 发布时间:2022-07-22
冯诺依曼体系:运算器,存储器,控制器,输入设备,输出设备; 一般来说:存储空间:硬盘内存cpu; 数据访问速度:cpu内存硬盘; CPU:cpu的执行顺序大致为:取指令,解析指令,执行

冯诺依曼体系:运算器,存储器,控制器,输入设备,输出设备;

一般来说:存储空间:硬盘>内存>cpu; 数据访问速度:cpu>内存>硬盘;

CPU:cpu的执行顺序大致为:取指令,解析指令,执行指令;cpu​的制程越小越好因为一个cpu的面积是固定的,如果制程越小,单个门电路体积就越小,整个cpu上能够搭载的门电路数量就越多,cpu上面的功能模块就越多,也能算速度就越快;现在的cpu发展不仅仅追求小,更追求多核==>“并发编程”

寄存器:也是用来存储数据的一个组件,但是寄存器在cpu内部,且存储空间非常小(几百字节~几K)但是访问速度非常快;在执行命令时,会把数据加载到寄存器,然后经过指令对寄存器进行加减等操作,最终把寄存器中的最终结果返回到内存中;

操作系统:既可以管理各种硬件设备,还可以为各种软件提供稳定的环境;例如进程管理,文件管理,内存管理等等

进程(Process):进程就是操作系统对一个正在运行的程序的一种抽象,可以把进程看作一个程序的一次运行过程;是操作系统资源分配的基本单位

进程控制块抽象(PCB Process Control Block):计算机内部要管理任何现实事物,都需要将其关联成一组有关联的、互为一体的数据(Java中通过类/对象来描述)

进程的四个关键的属性:

  • 进程的优先级
  • 进程的状态
  • 进程的记账信息
  • 进程的上下文

通过以上四个属性来实现进程的调度:

//什么时候进程的调度???
//说白了就是当前的计算机cpu是有限的,但是进程数量多,例如cpu只有6核,
//但是进程有数十个,因此操作系统要让每个进程都可以在内核中运行;
//(一个线程占用一个cpu核心)

//并发式的执行:在cpu上轮流的执行(不是同时执行)
//并行式的执行:在多核cpu上同时跑进程(同时执行)

进程的优先级:操作系统安排多个进程的执行顺序;

进程的状态:对于进程来说有就绪状态(进程随时可以在cpu上运行)和阻塞状态;(进程需要在某个其他进程完成之前才能在cu上执行,否则无法继续执行)

进程的记账信息:某个进程已经执行了多长时间或者已经执行多少条指令;

进程的上下文:对于进程来说上下文指的就是cpu里的寄存器的值,上下文会在进程被切除cpu之前把寄存器的状态保存到PCB里面,下次回来时会把PCB里面上下文的值读取出来,恢复到寄存器里面。(例如游戏的存档和读档)


进程的虚拟空间:

进程需要使用系统的资源,其中内存资源就是很关键的资源;

在C语言中,有一个操作叫做指针解引用,解引用的时候指向的是合法的地址;如果不合法呢???

因此为了让各个进程互不干扰,操作系统就引入了“虚拟地址空间”概念:

即每个进程都有自己的地址空间,相互之间不会有影响,即使指针出错,操作系统也会及时发现,不会影响到其他的进程,如果出问题,也会被限制到进程的内部;

JavaEE-进程_寄存器

在上图中,当进行指针解引用的操作的时候,如果指针一旦出错,经过MMU,MMU会向操作系统报告错误,进程会终止,程序报错;

由于虚拟空间具有隔离性,因此即使某一个进程报错也不会影响到其他进程;

进程间的通信:

当进程被隔离之后,进程相互之间无法进行信息交换,无法进行配合工作,

因此操作系统会让各个进程之间进行通信:

但本质都是创建一个公共资源,各个进程通过这个公共资源进行通信;








上一篇:Java调用dll,需要使用JNA,Jnative
下一篇:没有了
网友评论