文章目录
- 线索栏
- 笔记栏
-
- 核心观点
- 1.7.3 虚拟内存
-
- 1.概念
- 2.虚拟地址空间的布局(图1-13,Linux示例)
- 3.虚拟地址空间的主要区域(自底向上)
-
- 1)程序代码和数据
- 2)运行时堆
- 3)共享库的区域
- 4)用户栈
- 5)内核虚拟内存
- 4.运作原理
- 1.7.4 文件
-
- 1.定义
- 2.统一I/O的抽象
- 3.意义
- 【旁注:Linux项目】
-
- 1.起源
- 2.起点
- 3.发展
- 4.成功
- 总结栏
线索栏
笔记栏
核心观点
操作系统通过虚拟内存和文件这两个关键抽象,分别统一管理了内存和I/O设备,为应用程序提供了简洁、安全且一致的接口。
1.7.3 虚拟内存
1.概念
一个抽象概念,为每个进程提供一个假象——每个进程都在独占地使用主存。每个进程看到的一致的内存视图称为虚拟地址空间。
2.虚拟地址空间的布局(图1-13,Linux示例)

(1)最底部(低地址):存放用户进程定义的代码和数据。 (2)最顶部(高地址):保留给操作系统的代码和数据(内核虚拟内存)。 (3)地址从下往上增长。
3.虚拟地址空间的主要区域(自底向上)
1)程序代码和数据
(1)代码从固定地址开始,紧接着是全局变量数据。 (2)内容在进程启动时直接从可执行目标文件(如hello)初始化。
2)运行时堆
(1)位于代码和数据区之上。 (2)可在运行时通过malloc和free等函数动态扩展和收缩(如处理动态数据结构)。
3)共享库的区域
(1)大约在地址空间中部。 (2)存放像C标准库这样的共享库的代码和数据。
4)用户栈
(1)位于用户虚拟地址空间顶部。 (2)编译器用于实现函数调用。 (3)在程序执行期间动态扩展和收缩(函数调用时增长,返回时收缩)。
5)内核虚拟内存
(1)地址空间顶部区域,为内核保留。 (2)应用程序不能直接读写或调用,必须通过系统调用请求内核服务。
4.运作原理
(1)需要硬件和操作系统之间精密复杂的交互来完成地址翻译。 (2)基本思想:将进程的虚拟内存内容存储在磁盘上,而用主存作为磁盘的高速缓存。(此机制在第9章详解)
1.7.4 文件
1.定义
文件就是字节序列。这是一个极其简单而强大的抽象。
2.统一I/O的抽象
(1)操作系统将所有I/O设备(磁盘、键盘、显示器、网络等)都抽象为文件。 (2)系统中所有输入输出都是通过一组统一的Unix I/O系统函数(如read, write)读写文件来实现的。
3.意义
(1)向应用程序隐藏了各种I/O设备的差异性和复杂性。 (2)例如,处理磁盘文件的程序员无需关心具体的磁盘技术,同一程序可在不同硬件上运行。
【旁注:Linux项目】
1.起源
1991年8月,芬兰研究生Linus Torvalds发布了一个新的类Unix操作系统内核。
2.起点
始于Minix(一个教学用操作系统),最初是Torvalds的“业余爱好”项目。
3.发展
通过邮件列表寻求反馈,并移植了bash和gcc等关键工具。
4.成功
与GNU项目的软件结合,发展成了一个完整的、符合Posix标准的Unix操作系统,应用范围极广。
总结栏
本节介绍了操作系统的最后两个核心抽象:
这两个抽象,连同之前介绍的进程,共同构成了操作系统管理硬件、服务应用的核心框架。Linux项目的发展史则展示了开源协作如何催生了一个影响深远的技术系统。
网硕互联帮助中心






评论前必须登录!
注册