美文网首页
软件运行机制及内存管理

软件运行机制及内存管理

作者: 短暂瞬间 | 来源:发表于2019-08-07 23:36 被阅读0次

第97篇

极客时间《许式伟的架构课》课程笔记。

内存的地位非常特殊,它是唯一的 CPU 内置支持,且和程序员直接会打交道的基础资源。

计算机运行全过程

软件运行机制及内存管理
  1. BIOS 程序在主板的 ROM 上,是因为不同历史时期的计算机输入输出设备很不一样,通过调整 BIOS 程序就可以应对,而不需要修改 CPU
  2. 引导区引导程序,则是程序从内置存储(ROM)转到外置存储的边界。引导区引导程序很短,BIOS 只需要把它加载到内存执行就可以把系统的控制权转到外置存储
  3. 引导区引导程序不固化在 BIOS 中,而是写在外置存储的引导区,是为了避免 BIOS 程序需要经常性修改
  4. OS 引导程序是外置存储接手计算机控制权的真正开始。操作系统从这里开始干活,最终所有的初始化工作完成后,操作系统会把执行权交给 OS Shell 程序
  5. OS Shell 程序负责操作系统与用户的交互。计算机的交互界面是字符界面,OS Shell 程序是一个命令行程序。DOS 中叫 command.com,而在 Linux 下则叫 sh 或者 bash 之类。这里的 sh 就是 shell

启动一个软件的方式就是在 Shell 程序中输入一个命令行,Shell 负责解释命令行理解用户的意图

内存管理的两个问题

  • 如何分配内存(给运行中的软件,避免它们发生资源争抢)
  • 如何运行外置存储(比如硬盘)上的软件?

实模式下的内存管理

  • CPU 的实模式和保护模式。这两个模式 CPU 对内存的操作方式完全不同
  • 在实模式下,CPU 直接通过物理地址访问内存。在保护模式下,CPU 通过一个地址映射表把虚拟的内存地址转为物理的内存地址,然后再去读取数据
  • 工作在实模式下的操作系统就是实模式操作系统;工作在保护模式下的操作系统就是保护模式操作系统
  • 在实模式操作系统下,所有软件包括操作系统本身,都在同一个物理地址空间下。在 CPU 看来,它们是同一个程序

实模式操作系统

  • 在实模式操作系统下,所有软件包括操作系统本身,都在同一个物理地址空间下。在 CPU 看来,它们是同一个程序
  • 操作系统如何分配内存方法一:把操作系统内存管理相关的函数地址,放到一个大家公认的地方(比如 0x10000 处),每个软件要想申请内存就到这个地方取得内存管理函数并调用它。
  1. 把内存管理功能设计为一个中断请求。所谓中断,是 CPU 响应硬件设备事件的一个机制。当某个输入输出设备发生了一件需要 CPU 来处理的事情,它就会触发一个中断。

实模式的问题

  • 安全性。操作系统以及所有软件都运行在一起,相互之间可以随意修改对方的数据甚至程序指令,这样搞破坏就非常容易。
  • 支持的软件复杂性低,同时可运行的软件数量少。

保护模式下的内存管理

  • 保护模式下,内存访问不再是直接通过物理内存,而是基于虚拟内存

  • 虚拟内存模式下,整个内存空间被分成很多个连续的内存页。每个内存页大小是固定的,比如 64K

  • 通过虚拟内存的机制,操作系统并不需要一上来就把整个软件装进内存中,而是通过缺页中断按需加载对应的程序代码片段

  • 多个软件同时运行的问题也解决了,内存不够用的时候,就把最久没有用过的内存页淘汰掉,腾出物理内存出来

  • 运行软件的问题和内存分配的问题都已经解决,不需要任何额外的机制

  • 通过引入虚拟内存及其缺页机制,CPU 很好地解决了操作系统和软件的配合关系

  • 在保护模式下,计算机的基础架构体系和操作系统共同在努力做的一件事情,就是让每个软件“感觉”自己在独占整个计算机的资源

  • 独立的虚拟地址空间很好地伪装了这一点:看起来我独自在享用所有内存资源

  • 在实模式下,所有进程都在同在物理内存的地址空间里,它们相互可以访问对方的数据,修改甚至破坏对方的数据,进而导致其他进程(包括操作系统本身的进程)崩溃。

  • 内存是进程运行的基础资源,保持进程基础资源的独立性,是软件治理的最基础的要求。这也是保护模式之所以叫“保护”模式的原因。

相关文章

  • 软件运行机制及内存管理

    第97篇 极客时间《许式伟的架构课》课程笔记。 内存的地位非常特殊,它是唯一的 CPU 内置支持,且和程序员直接会...

  • 从原理分析PHP性能

    从原理分析PHP的性能,主要从以下几个方面:内存管理、变量、函数、运行机制、网络模型来进行分析。 1.内存管理 类...

  • iOS开发 —— 内存管理

    一、为什么要学习内存管理 内存对于任何硬件及软件的重要性不言而喻,而作为硬件与用户交流的中间体软件,对于内存的要求...

  • shell -- 基础

    Linux 内核的作用: 系统内存管理、软件程序管理、硬件管理、文件系统管理 系统内存管理: 最主要的是对虚拟内存...

  • 【OC梳理】内存管理

    在Objective-C中,内存管理是个重要的概念。 什么是内存管理 内存管理是指软件运行时对内存资源的分配和使用...

  • iOS 面试要点

    内存管理 软件运行时会分配和使用设备的内存资源,因此,在软件开发的过程中,需要进行内存管理,以保证高效、快速的分配...

  • 内存管理-内存布局及内存管理方案

    内存布局 内存区域分为内核区的内存,程序加载的控件,保留的内存空间地址的表示是由下到上是低地址到高地址程序加载到内...

  • chapter 1.初识Linux Shell

    内核主要负责功能 内核主要负责以下四种功能: 系统内存管理 软件程序管理 硬件设备管理 文件系统管理 系统内存管理...

  • fabric1.2网络环境启动过程详解

    fabric运行机制及环境搭建 fabric运行机制及环境搭建环境依赖基于docker镜像的fabric1.2开发...

  • OC内存管理(01)

    一、内存管理的重要性内存管理在iOS开发中占据着重要的地位,是影响iOS软件质量的重要因素,很多iOS软件就是因为...

网友评论

      本文标题:软件运行机制及内存管理

      本文链接:https://www.haomeiwen.com/subject/aavzdctx.html