六、OS地址空间和地址生成

简介: 六、OS地址空间和地址生成

1、地址空间


地址空间分为物理地址空间和逻辑地址空间。其中物理地址空间指硬件支持的地址空间,包括主存(内存条)和磁盘;逻辑地址空间指一个运行的程序所拥有的内存范围。某一个应用程序的逻辑地址空间最终都需要落实到物理地址空间上面去。



2、逻辑地址空间的生成


57892ee4f8c94705a615484c009f673e.png


从一个C程序开始,C程序之中的函数,变量的名字对应了自己的地址,是一种逻辑地址;将C语言编译成汇编语言,汇编语言中依然使用变量和函数名等来进行编写;之后将汇编语言进行汇编形成.o程序,.o程序特点为吉他的起始地址都是从0开始的,将之前汇编程序的变量和函数符号名称转变为相应的连续逻辑地址空间;


之后将多个.o程序通过链接器linker进行链接编程单一的可执行程序.exe文件,.exe文件是一种存放在硬盘中的可以在内存中进行执行的程序。最终硬盘中的.exe文件通过loader载入内存中进行执行,相对于原始硬盘中的.exe文件,载入内存中的.exe文件的地址有一定的偏移量,有了这个偏移量,所有的.exe文件中的功能都能够对应找到相应的文件和数据。



3、逻辑地址如何对应到具体物理地址


12fb0e6047cd4cc8ae51cf86131247ef.png

当CPU要执行某条指令时,其ALU部件会发出请求指令(发送逻辑地址);之后CPU中的MMU部件会根据逻辑地址和物理地址的映射表查找到ALU发送来的逻辑地址对应的物理地址,若没有,则会转移到内存中继续查找物理地址,若找到了,则CPU的控制器会给主存发出请求,需要某物理地址的内容;


之后主存会将物理地址中的内容通过总线传递给CPU;最后CPU拿到指令内容,开始进行执行。OS在此过程中起到的作用为:在上述过程开始之前,OS需要将逻辑地址和物理地址的映射关系表建立完毕;同时确保每一个程序访问的地址空间是合法的,不能产生交叉干扰的情况。








相关文章
|
2月前
|
安全 程序员 Linux
探索操作系统的心脏:内核与用户空间的交互之旅
【9月更文挑战第9天】本文是一次深入操作系统核心的探险,我们不仅会穿越神秘的内核世界和多彩的用户空间,还将揭秘它们之间如何通过系统调用、库函数、API等桥梁进行信息交换。这不仅是一段技术之旅,也是对操作系统设计哲学的思考。我们将用浅显的语言,逐步揭开操作系统的神秘面纱,让读者在轻松愉快的阅读中,获得对操作系统深层次理解的钥匙。
|
11天前
|
算法 调度 C语言
探索操作系统的心脏:内核与用户空间的交互
【10月更文挑战第36天】本文将深入探讨操作系统的核心组件—内核,以及它如何与用户空间进行交互。我们将通过浅显易懂的语言和生动的例子来揭示这一复杂主题的面纱。文章不仅涉及理论知识,还会展示具体的代码示例,帮助读者更好地理解内核机制。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供新的视角和深入的理解。
|
2月前
|
存储 Linux Windows
深入浅出操作系统:从用户空间到内核的旅程
【9月更文挑战第28天】本文将通过一次虚拟的探险之旅,带领读者了解操作系统的复杂结构。我们将一起穿越神秘的用户空间,探索文件系统、进程管理等奇妙领域,并最终潜入深不见底的内核空间,揭开中断处理、内存管理和设备驱动等核心机制的秘密面纱。准备好你的背包,我们即将启程!
46 4
|
2月前
|
物联网 调度 云计算
探索操作系统的心脏:内核与用户空间的交互之旅
【9月更文挑战第10天】在数字世界的海洋中,操作系统扮演着船舶的角色,而它的内核则是这艘船的发动机。本文将揭开操作系统内核的神秘面纱,通过浅显的语言和实际代码示例,带领读者理解内核与用户空间之间的交互机制。我们将从基础概念出发,逐步深入到系统调用、进程管理等核心话题,最后探讨内核在现代计算环境中的作用和面临的挑战。无论你是编程新手还是资深开发者,这篇文章都将为你提供新的视角和深刻的洞见。
|
2月前
|
安全 API 调度
探索操作系统的心脏:内核与用户空间的交互
【9月更文挑战第18天】在数字世界的海洋中,操作系统扮演着至关重要的角色。它不仅是软件与硬件之间的桥梁,更是维护整个计算生态平衡的守护者。本文将深入探讨操作系统的核心组件——内核,以及它如何与用户空间进行交互,确保系统的稳定运行和资源的合理分配。通过简化的比喻和生动的实例,我们将一探究竟,看看这个不为人知的幕后英雄是如何默默支撑起我们的数字生活的。
|
3月前
|
存储 NoSQL Linux
深度探索Linux操作系统 —— 从内核空间到用户空间3
深度探索Linux操作系统 —— 从内核空间到用户空间
39 9
|
3月前
|
存储 NoSQL Linux
深度探索Linux操作系统 —— 从内核空间到用户空间2
深度探索Linux操作系统 —— 从内核空间到用户空间
43 7
|
3月前
|
安全 编译器 Shell
探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第28天】在计算机的世界中,操作系统扮演着至关重要的角色,它如同一个繁忙的交通枢纽,协调着硬件和软件之间的复杂交互。本文将深入探讨操作系统的核心组成部分——内核,以及它是如何与用户空间进行通信的。我们将通过一个简单的命令行工具示例,来揭示这一过程的内在机制,让你对计算机工作原理的理解更上一层楼。准备好了吗?让我们开始这段奇妙的旅程吧!
36 3
|
3月前
|
安全 API 调度
探索操作系统的心脏:内核与用户空间的交互
【8月更文挑战第29天】在计算机科学领域,操作系统是连接硬件和用户的桥梁。本文将深入探讨操作系统的核心—内核,及其如何与用户空间进行交互,确保系统稳定运行。通过分析内核的设计原则、功能以及与用户空间的通信机制,我们将揭示操作系统背后复杂的工作机制,并展示如何通过编程接口与内核交互,以实现高效的系统管理和应用开发。
|
3月前
|
调度
探索操作系统的心脏:内核空间与用户空间
【8月更文挑战第28天】在数字世界的海洋中,操作系统犹如一艘巨轮的核心引擎。本文将带领读者深入操作系统的内核,探讨内核空间与用户空间的奥秘。通过深入浅出的解释和生动的比喻,我们将揭示这两个空间如何协同工作,确保系统的高效运行。文章不仅适合初学者作为入门指南,也适合有一定基础的读者深化理解。

热门文章

最新文章

下一篇
无影云桌面