【操作系统】进程(二)内存管理、通信

JavaEE---进程(二)内存管理、通信

一、内存管理

1.映射访问

2.独立分布

防崩溃

二、通信

1.独立性保障

2.方式

2.1管道

2.1.2特点

2.1.2.1进程条件

2.1.2.2方向

2.1.2.3同步性

2.1.2.4性能

2.2消息队列

2.2.1特点

2.2.1.1方向

2.2.1.2同步性

2.2.1.3性能

2.3共享内存

2.3.1特点

2.3.1.1方向

2.3.1.2同步性

2.3.1.3性能

2.4套接字


前言:

上文【操作系统】进程(一)调度讲解了 进程++PCB的结构组织++ 、++资源分配++ 以及进程在cpu上 通过操作系统的++调度 实现并发执行++ 的效果,本文深入讲解 进程的内存管理进程间通信的相关知识


一、内存管理

1.映射访问

操作系统 为每个进程 都创建有:

  • 模局格式一样虚拟地址空间
  • 独属对应关系映射表

进程只能操作 直接的虚拟地址空间 经映射表映射着 间接访问 实际的物理内存 ,进程 在++自己的虚拟地址空间内 最大范围地访问 也不可能映射访问出 自己总的物理内存外面++


2.独立分布

每个进程的虚拟地址空间 整体映射出的 对应整体物理内存 都是完全互相隔离****的一块块

防崩溃

进程如果在自己的虚拟地址空间内 越界访问到 ++未申请开辟的虚拟空间++ 而造成进程崩溃时,只会破坏 该进程对应的物理内存,接着操作系统 对其进行资源回收,而其它进程的 虚拟空间和物理内存 都不受影响地 继续运行


二、通信

进程 在操作系统提供的特殊渠道独立置、取信息 来保持隔离地交流

1.独立性保障

  • 写进程 无法直接连续写入修改 读进程内存
  • 读进程 主动地收取数据 拥有 读取进来判断是否修改的权利

两进程 仍然互相保持着独立地 进行数据交流


2.方式

2.1管道

内核 将写进程写入的数据 复制到内核缓冲区 置放,再将其 复制到读进程中 收取(两进程是没有 内核的管道缓冲区映射关系的,无法通过 共享管道缓冲区内存 映射传输,所以只能通过 内核复制传输)

2.1.2特点
2.1.2.1进程条件

需要 有亲缘关系的 父子进程间通信


2.1.2.2方向

一个管道单向通信,得创建两个管道 才能实现双向通信


2.1.2.3同步性

数据是 按顺序先进 后才有出无边界的 字节流 ,先进再出 ++已保证 置取同步性++


2.1.2.4性能

两次内核复制 并且有阻塞等待 ,效率较,++适合少量数据传输++


2.2消息队列

写进程 按照特定格式(类型+数据) 将信息复制置入 操作系统维护的 邮箱队列 中,读进程 根据消息类型 从队列中 复制取出 属于自己的消息

2.2.1特点
2.2.1.1方向

双向通信


2.2.1.2同步性

消息是 按顺序先进 后才有出有格式、有边界的 结构化数据块 ,先进后出 ++已保证 置取同步性++


2.2.1.3性能

两次内核复制 并且有阻塞等待 ,效率较,++适合少量数据传输++


2.3共享内存

操作系统 划出一块物理内存 分别额外映射到 两进程的虚拟地址空间 中,两进程 便能直接映射到 此共享物理内存上 进行置放、收取数据 完成独立隔离地交流

2.3.1特点
2.3.1.1方向

双向通信


2.3.1.2同步性

因为读写两进程 可不按先后顺序地 映射到 操作获取 数据 ,所以需要使用++信号量++ 或++互斥锁++ 来同步进程 对共享资源的访问


2.3.1.3性能

不需要 内核中转复制,进程 直接映射 操作获取数据 ,性能极,++能频繁交换大量数据++


2.4套接字

能用于 网络上 不同计算机的 进程间通信

相关推荐
怒放吧德德1 分钟前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆2 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
心之语歌4 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊5 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang7 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解7 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
YuMiao11 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
SimonKing11 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean11 小时前
Jackson View Extension Spring Boot Starter
java·后端