【操作系统】进程(二)内存管理、通信
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套接字
能用于 网络上 不同计算机的 进程间通信