恶补《操作系统》3_1——王道学习笔记

3内存管理

3.1_1 内存的基础知识

1、什么是内存,作用

1)内存:内存用来存放数据。程序执行前需要先放到内存中才能被CPU处理――缓和CPU与硬盘之间的速度矛盾。

2)内存存储单元:每个地址对应一个存储单元

3)内存地址:给上面存储单元的一个编号

2、进程运行的基本原理

1)逻辑地址vs物理地址:逻辑地址就是相对地址

2)从写程序到程序运行:编辑-编译-链接-装入

3)三种链接方式:

  • 静态链接(在程序运行前,先将各目标模块及它们所需的库函数连接成一个完整的可执行文件);
  • 装入时动态链接(将各目标模块装入内存时,边装入边链接的链接方式);
  • 时动态链接(在程序执行中需要该模块时,才对它进行链接,其优点时便于修改和更新)。

4)三种装入方式:

  • 绝对装入(在编译的时候就知道程序放在内存的哪个位置);
  • 静态重定位/可重定位装入(装入时将逻辑地址转表为物理地址);
  • 动态重定位(把地址转化推迟到程序真正要执行时才进行)。

3.1_2 内存管理的概念

内存管理有以下功能:

1、内存管理的第一件事:让操作系统负责内存空间的分配与回收

2、内存空间的扩充:虚拟技术——内存的虚拟性

3、地址转换:逻辑地址—(转换为->)—物理地址

4、存储保护:让各进程不越界访问,只能访问自己的存储空间

  • 设置上下限寄存器
  • 采用重定位寄存器(基址寄存器)和界地址寄存器(限长寄存器)进行越界检查。

3.1_3 覆盖与交换

覆盖与交换技术是可以实现对内存空间的扩充:

1)覆盖技术:将程序分为多个段,内存分为固定区覆盖区需要常驻的放在固定区,调入后就不再调出,不常用的段放在覆盖区,需要用到时调入内存,用不到时掉出内存。

2)交换技术:内存空间紧张时,系统将内存中某些进程暂时换出外存,把外存中某些已具备运行条件的进程换入内存(PCB会常驻内存,不会被换出)。暂时换出外存的进程为挂起态。

3)虚拟存储技术:后面再说

3.1_4 连续分配管理方式

内存空间的分配与回收 中的 连续分配方式:为用户进程分配的必须是个连续的内存空间。

1 )单一连续分配:内存被分配为系统区和用户区,系统区在低地址,用户区是一个用户独享。无外部碎片。

2)固定分区分配:将用户区分割为若干固定分区给各道程序,分割策略有分区大小相等和分区大小不相等,可以建议一个分区说明表来管理各个分区

3)动态分区分配/可变分区分配:不会预先划分内存分区,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。

      

  

内部碎片:分配给某进程的内存区域中,如果有些部分没有用上

外部碎片:是指内存中的某些空闲分区由于太小而难以利用(如果有外部碎片,可以采用紧凑技术)

3.1_5 动态分区分配算法

1、首次适应算法(First Fit)

算法思想:每次从低地址开始查找,找到第一个能满足大小的空闲分区

2、最佳适应算法(Best Fit)

算法思想:为了保证大进程到来时能有连续的大片区域,可以尽可能留下大片的空闲区,优先使用更小的空闲区。

如何实现:空闲分区按容量递增次序链接,分配内存时顺序查找空闲分区链,找到大小能满足的第一个空闲分区

缺点:会留下小碎片

3、最坏适应算法(Worst Fit)

算法思想:和最佳适应算法相反,按容量递减次序排列,每次尽可能用大的分区

4、领近适应算法(Next Fit)

算法思想:每次从上次查找结束的位置开始检索。(减少查找开销)

缺点:大空间容易被用完

3.1_6 基本分页存储管理的基本概念(重难点

是一种非连续分配(为用户进程分配分散的内存空间)

  1. 每个分区就是一个“页框”(页框=页帧=内存块=物理块=物理页面)。
  2. 每个页框有一个编号,即“页框号”
  1. 允许一个进程分散地装入道许多不相邻的位置
  1. 将内存分为大小相等的小分区页框,将用户的进程空间也分为大小相等的一个个区域,以页框的基本单位分配给每个进程片
  2. 分页管理对逻辑地址和物理地址的转换:物理地址=页面的其实位置+偏移量

  1. 计算机中用2的整数倍表示页面的大小
  2. 页表:存放页号和块号的对应关系

3.1_7 基本地址变换机构

基本地址变换机构是实现逻辑地址到物理地址转换的一组硬件机构。

页表寄存器(PTR),存放页表在内存中的起始地址F和页表长度M,进程未执行时,页表的起始地址和页表的长度放在进程控制块(PCB)中,当进程被调度时,操作系统内核会把它们放在页表寄存器中。

3.1_8 具有快表的地址变换机构

1、什么是快表(TLB

快表:又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲存储器(不是内存),用来存放当前访问的若干页表项的副本,以加速地址变换的过程。与此对应,内存中的页表常称为慢表

如果快表命中,就不需要访问慢表了。

2、引入快表后,地址的变换过程

3、局部性原理

时间局部性:访问某个变量后,在不久的将来还会被访问(频繁的再次被访问);

空间局部性:程序访问了某个存储单元,不久之后,其附近的存储单元也很有可能被访问。

3.1_9 两级页表

1、单级页表存在什么问题?如何解决?

  1. 问题1:所有页表项必须连续存放,页表过大时需要很大的连续空间;
  2. 问题2:在一段时间内并非所有页面都用得到,因此没必要让整个页表常驻内存;(根据局部性原理:进程只需要访问某些特定的页面,并不是整个页表)

2、两级页表的原理、逻辑地址结构

1)将长长的页表再分页

2)逻辑地址结构:(一级页号、二级页号、页内偏移量)

3)页目录表、或外层页表、或顶级页表

3、如何实现地址变换?

  1. 按照地址结构将逻辑地址拆分成三部分;
  2. PCB中读出页目录表始址,根据一级页号查页目录表,找到下一级页表在内存中的存放位置。
  3. 根据二级页号查表,找到最终想访问的内存块号
  4. 结合页内偏移量得到物理地址

4、两级页表问题需要注意的几个细节

1)多级页表中,各级页表的大小不能超过一个页面。若两级页表不够,可以分更多级

2)多级页表的访问次数(假设没有快表结构),N级页表访问一个逻辑地址需要N+1次访存(两级列表则访问3次)

3.1_10 基本分段存储管理方式

1、什么是分段?

  1. 进程的地址空间:按照程序自身的逻辑关系划分为若干个段,每段有段名,每段从0开始编址。

  1. 重点:
    1. 段号的位数决定了每个进程最多可以分几个段
    2. 段内地址位数决定了每个段的最大长度是多少

2、什么是段表

  1. 段表:段映射表
  2. 每个程序被分段后,用段表记录该程序在内存中存放的位置
  3. 段表:段号 段长 基址

3、如何实现地址变换

4、分段、分页管理的对比

  1. 页:信息的物理单位,实现离散分配,提高内存利用率,地址是一维的,访存2次;
  2. 段:信息的逻辑单位,对系统可见,地址是二维的,访存3次;
  3. 分段比分页更容易实现信息的共享和保护(不能被修改的代码称为纯代码和可重入代码,不属于临界资源)。

3.1_11 段页式的管理方式

1、分页、分段管理方式最大的优缺点

  1. 分页:利用率高,碎片少,不方便进行信息共享和保护
  2. 分段:方便信息共享和保护,如果段长大,容易产生外部碎片

2、分段+分页的结合——段页式管理方式

  1. 先分段再分页
  2. 段号+页号+页内偏移量
  3. 地址结构是二维的

3、段表、页表

4、如何实现地址变换

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AIGC技术的发展现状和未来趋势

AIGC(人工智能生成内容)技术是指利用人工智能算法自动生成文本、图像、音频、视频等各类内容的技术。随着深度学习等技术的快速发展,AIGC技术在最近几年取得了显著进步,并在多个领域展现出巨大的潜力。 ​ 编辑 发展现状&#x…

ARM功耗管理背景及挑战

安全之安全(security)博客目录导读

服务器网站漏洞怎么修复

服务器网站漏洞的修复是一个关键且复杂的过程,涉及到多个层面的安全加固。以下是一个关于如何修复服务器网站漏洞的详细指南。安全狗专业做服务器安全,有任何服务器安全问题都可以找安全狗哦. ​一、识别和分析漏洞 首先,要确定服务器网站存在…

Linux下的基本指令(1)

嗨喽大家好呀!今天阿鑫给大家带来Linux下的基本指令(1),下面让我们一起进入Linux的学习吧! Linux下的基本指令 ls 指令pwd命令cd 指令touch指令mkdir指令(重要)rmdir指令 && rm 指令(重要)man指令(重要)cp指…

基于 NXP iMX8MM 测试 Secure Boot 功能

By Toradex秦海 1). 简介 嵌入式设备对于网络安全的要求越来越高,而 Secure boot就是其中重要的一部分。 NXP i.MX8MM/i.MX8MP 处理器基于 HABv4 特性来提供 Secure boot 启动过程中的 Chain of Trust; HABv4 是基于公共密钥加密 (Public Key Cryptogr…

C语言进阶:指针的进阶(上)

首先 在学习新知识之前 我们先来回顾下之前的学习的内容 1 指针是个变量 用来存放地址 地址唯一标识的一块内存空间 2 指针的大小是固定的4/8字节(32位平台/64位平台) 3 指针有类型的 指针的类型决定了两点 一个是指针操作的权限以及整数的步长 4 指针的…

神经网络项目:全连接网络和卷积网络实现水果三分类项目

水果三分类项目 Git源码:传送门 水果种类:草莓、树莓、桑葚 0:草莓 strawberry1:树莓 raspberry2:桑葚 mulberry 项目设计 获取数据 spider.py数据清洗 cleaner.py自定义数据集 dataset.py网络构建 net.py训练模型 t…

git工具简单使用

文章目录 git上传克隆README.gitignore常用指令冲突 git 进行版本控制的版本控制器。安装git yum install -y git 配置git git config --global user.email "youexample.com" 告诉git你的邮箱是什么?最好输入你的gitee的注册邮箱git config --global …

人工智能(pytorch)搭建模型28-基于Transformer的端到端目标检测DETR模型的实际应用,DETR的原理与结构

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型28-基于Transformer的端到端目标检测DETR模型的实际应用,DETR的原理与结构。DETR(Detected Transformers)是一种基于Transformer的端到端目标检测模型&…

把 KubeBlocks 跑在 Kata 上,真的可行吗?

背景 容器的安全性一直是广受关注的话题。这个领域也产生了很多不错的开源项目。Kata就是其中之一。 Kata Containers(简称 Kata)是一种开源项目,它提供了一种安全而高性能的容器运行时环境。Kata Containers 利用虚拟化技术(通常…

【算法刷题 | 贪心算法03】4.25(最大子数组和、买卖股票的最佳时机|| )

文章目录 4.最大子数组和4.1题目4.2解法一:暴力4.2.1暴力思路4.2.2代码实现 4.3解法二:贪心4.3.1贪心思路4.3.2代码实现 5.买卖股票的最佳时机||5.1题目5.2解法:贪心5.2.1贪心思路5.2.2代码实现 4.最大子数组和 4.1题目 给你一个整数数组 n…

Mac下XDebug安装

文章目录 1、下载对应的版本2、编译XDebug3、配置XDebug4、配置PhpStormDebug一下 前置工作 Mac下安装HomebrewMac下brew安装php7.4 1、下载对应的版本 首先按照支持的版本和兼容性来下载对应的版本,此表列出了仍支持哪些 Xdebug 版本,以及哪些版本可用…

GPT的全面历史和演变:从GPT-1到GPT-4

人工智能新篇章:GPT-4与人类互动的未来! 本文探讨了生成式预训练 Transformer (GPT) 的显着演变,提供了从开创性的 GPT-1 到复杂的 GPT-4 的旅程。 每次迭代都标志着重大的技术飞跃,深刻影响人工智能领域以及我们与技术的互动。 我…

linux+ndk把jni制作成so库供apk使用(基础)

环境配置之类的我之前的博客有写,这篇文章我们就直接开始 1.在有ndk配置的服务器创建文件夹,文件夹再创建jni文件夹,jni文件夹里面放置Application.mk,Android.mk与test.c,因为我的ndk运行配置默认是项目下面的jni目录,所以我需要多一个jni目录 2.这里的Application.mk写的是架…

OpenHarmony语言基础类库【@ohos.util (util工具函数)】

ohos.util (util工具函数) 该模块主要提供常用的工具函数,实现字符串编解码([TextEncoder]),[TextDecoder])、有理数运算([RationalNumber8])、缓冲区管理([LRUCache9])、范围判断&…

5款好用的监控员工电脑软件推荐 (如何监控员工上班工作情况)

在现代的商业环境中,管理和监控员工的工作内容是至关重要的。 为了确保员工的工作效率和质量,公司需要使用一些工具来监控他们的工作进程。 以下是五款实用的监控员工工作内容的软件。 域智盾软件 域智盾是一款专为企业打造的智能管理系统。 它借助人…

Vivado-IP-DDS and Testbench Learning

DDS内部结构 实现流程 首先新建一个工程,创建bd文件,添加DDS Compiler核,此处不多赘述 Block Design 在观测输出的信号时,需要将最高位符号位的信号取反,这样才能输出正弦波,否则输出的波形如下图所示 将t…

暴雨亮相CCBN2024 助力广电行业数智化转型

4月23日,第三十届中国国际广播电视信息网络展览会(简称CCBN2024)在北京开展,本次展览会由国家广播电视总局指导、广播电视科学研究院主办,作为国内广电视听领域首个综合性、专业化、引领性、国际化科技产业盛会&#x…

第三节课,后端登录【1】

一、总任务 二、登录接口 get 请求,有缺陷,长度有限制 三、登录逻辑 四、代码书写位置 4.1 编写业务逻辑的位置 五、写代码 5.1 代码1 5.1.1 细节 按 CtrlAltShiftL ,快速格式化 5.1. 2 自动生成接口参数 先/** 再回车 效果图 5.2 按 alt enter …

ffmpeg与sdl的个人笔记

说明 这里的ffmpeg基础知识和sdl基础知识仅提及与示例代码相关的知识点, 进阶可学习雷神的博客。 https://blog.csdn.net/leixiaohua1020 当然,如代码写的有问题或有更好的见解,欢迎指正! 音视频基础知识 在学习音视频理论知识时&#xff…