云计算百科
云计算领域专业知识百科平台

(学习笔记)1.7 操作系统管理硬件(2)

文章目录

  • 线索栏
  • 笔记栏
    • 核心观点
    • 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.成功
  • 总结栏

线索栏

  • 虚拟内存为每个进程提供了什么“假象”?它使得每个进程看到的地址空间叫什么?
  • 一个进程的虚拟地址空间主要包含哪些区(区域)?请从低地址到高地址列举。
  • 代码和数据区的内容从何而来?堆和栈在内存管理上有什么关键特点/
  • 位于地址空间中间部分的共享库区域有什么作用?内核虚拟内存区域允许应用程序直接访问吗?
  • 虚拟内存的运作需要什么支持?其基本思想是什么?(与存储器层次结构关联)
  • 文件是什么?操作系统通过文件这个概念实现了什么强大的抽象?
  • (旁注)Linux项目是如何开始的?它最终如何发展成一个完整的操作系统?

  • 笔记栏

    核心观点

    操作系统通过虚拟内存和文件这两个关键抽象,分别统一管理了内存和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操作系统,应用范围极广。


    总结栏

    本节介绍了操作系统的最后两个核心抽象:

  • 虚拟内存:通过为每个进程提供独立的、统一的虚拟地址空间,制造了“独占主存”的假象,并实现了内存的隔离与保护。其地址空间被划分为功能明确的区域(代码/数据、堆、栈、共享库、内核空间),并通过将磁盘作为主存的“后备存储”这一基本思想来管理超出物理内存的程序。
  • 文件:一个“字节序列”的简单抽象,却统一了所有I/O设备的视图,使应用程序无需关心底层硬件细节,极大地简化了I/O编程。
  • 这两个抽象,连同之前介绍的进程,共同构成了操作系统管理硬件、服务应用的核心框架。Linux项目的发展史则展示了开源协作如何催生了一个影响深远的技术系统。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » (学习笔记)1.7 操作系统管理硬件(2)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!