1.操作系统的段页存储
段页存储是操作系统中用于内存管理的一种技术,它结合了分段存储管理和分页存储管理两种方法的优点,以实现更为灵活和高效的内存分配和访问。
分段存储管理(Segmentation)
分段是一种内存管理技术,其中程序被划分为逻辑上的单元或段(如代码段、数据段、堆栈段等)。每个段都是一系列连续的地址空间,并且每个段可以独立地增长和缩小。分段的主要优点是它支持程序的逻辑结构,易于实现模块化和保护。
分页存储管理(Paging)
分页是另一种内存管理技术,其中物理内存被划分为固定大小的块,称为页面。程序的地址空间也被划分为同样大小的页。页表用于记录虚拟页和物理页面之间的映射关系。分页的主要优点是它简化了内存的管理,消除了外部碎片,并可以有效地支持虚拟内存。
段页存储管理(Segmentation with Paging)
段页存储管理是将分段和分页结合起来的一种方法。在这种方式中,程序首先被划分为逻辑上的段,每个段根据其逻辑功能被定义(例如代码、数据等)。然后,每个段内部使用分页机制来管理内存。这种结合的方法具有以下优点:
逻辑组织和物理管理的结合:段提供了与程序逻辑结构相对应的内存划分,而页提供了内存管理的物理便利性。
灵活性和效率:程序员可以根据需要对程序进行段划分,系统则可以通过分页来有效管理物理内存。
保护和共享:分段允许设置不同的保护级别,如只读或可执行。分页则简化了如内存共享等功能的实现。
实现
在实际实现中,段页系统首先通过段表来解析虚拟地址中的段部分,每个段表条目指向一个页表。然后,页表用来解析段内的页偏移,以定位最终的物理地址。这种两级映射结构使得内存管理更为灵活且高效。
总结
段页存储管理通过结合分段和分页的优点,提供了一个既支持高级语言的模块化编程,又能高效管理物理内存的内存管理方案。这种方法在现代操作系统中广泛使用,特别是在需要高度模块化和复杂内存管理的系统中。
2. 虚拟内存
虚拟内存(Virtual Memory)是计算机系统内存管理非常重要的一个技术,本质上来说它只是逻辑存在的,是一个假想出来的内存空间,主要作用是作为进程访问主存(物理内存)的桥梁并简化内存管理。
虚拟内存的几个能力:
- 进程隔离
- 提升物理内存利用率
- 简化内存管理
- 多个进程共享内存
- 提升内存使用的安全性
- 提供更大的可使用的空间
3.不同进程间是如何通过共享内存进行通信的
共享内存是一种高效的进程间通信(IPC)机制,允许两个或多个进程访问同一个内存区域。使用共享内存进行通信比其他通信机制(如管道、消息队列)通常来说更快,因为它避免了数据在进程间的复制。
原理:
首先,通过虚拟内存技术,可以实现进程之间的隔离。物理内存通过虚拟地址空间访问,虚拟地址空间与进程一一对应,一个进程中的代码无法更改正在由另一进程或操作系统使用的物理内存。通过共享内存实现进程之间的通信的原理就是让一个共享内存段在操作系统的控制下,可以被其它进程映射并访问。
实现:
- 创建共享内存段:
首先,一个进程需要创建一个共享内存段,并配置其大小。这个内存段在操作系统的控制下,可以被其他进程映射并访问。
- 附加到共享内存:
任何需要通信的进程都需要将这个共享内存段“附加”到自己的地址空间,这个过程称为映射。这使得进程可以像访问普通内存一样访问共享内存。
- 访问和操作内存:
一旦共享内存被映射,进程就可以读写这块内存。进程可以通过这块内存交换数据,就像读写内部变量一样。
- 同步访问:
因为多个进程可以同时访问共享内存,必须有机制保证在同一时间内对共享内存的访问是同步的。通常使用互斥锁、信号量或其他同步工具来管理对共享内存的访问,避免数据冲突和不一致。
- 分离和销毁共享内存:
当不再需要共享内存时,各个进程应该将其从自己的地址空间中分离,并最终由创建它的进程销毁它。