【操作系统和强化学习】1.内存管理策略

这篇具有很好参考价值的文章主要介绍了【操作系统和强化学习】1.内存管理策略。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

CPU的调度可以提高CPU的利用率和计算机的响应用户的速度。为了改进性能,应该将多个进程保存在内存中。也就是说必须共享内存。
本文讨论的是如管理内存。


1.内存是什么

内存是现代计算机运行的核心,由一个很大的字节数组来组成,每个字节都有各自的地址。
CPU根据程序计数器的值(PC指针的值)从内存中取指令。
与内存管理技术有关的问题:基本硬件/符号内存地址绑定到实际物理地址以及逻辑地址与物理地址的差别等。最后是动态链接与共享库。

1.1 基本硬件

CPU可以直接访问的通用储存只有内存和处理器内置的寄存器。机器指令可以用内存地址作为参考。
CPU内置寄存器可以在一个CPU时钟周期内完成访问。大多数CPU可以在一个时钟周期内解释并执行一条或多条指令。而对于内存访问则需要多个CPU时钟周期。CPU缺少数据,通常需要暂停stall。
弥补这一不对等的问题,增加高速缓存。
增加告诉缓存要考虑的问题:1.关心物理内存的 访问速度。 2.确保操作正确,不能在用户态执行 3.保护用户进程互相不受影响。
这种保护通常通过硬件来实现,因为操作系统通常不干预CPU对内存的访问。

1.1.1 保护措施

基地址寄存器 base Register: 含有最小的合法的物理内存地址。
界限地址寄存器Limit Register: 指定了范围大小。
内存空间保护是通过cpu硬件对用户模式下产生的地址与寄存器的地址进行比较来完成的。

指令和数据绑定到储存器地址可以发生在:
1.编译时 compile time
2.加载时 load time
3. 执行时 runtime time
从虚拟地址到物理地址的运行时映射是MMU,内存管理单元,MMU中有一个重定位寄存器。

1.1.2 碎片

外部碎片和内部碎片
外部碎片的解决方法是紧缩,通过移动内存内容,将所有空闲空间合并成一整块。只有重定位是动态的,并且再运行是进行的,才能采用紧缩。

1.2 分段机制

分段:支持用户视图的内存管理方案,逻辑地址空间是由一组段构成。每个段都有名称和长度。地址指定了段名称和段内位移。
【操作系统和强化学习】1.内存管理策略

1.2.1 分段硬件

通过段表来实现,段表的每个row,都有端基地址和段界限。

1.3 分页

分段运行进程的物理地址空间是非连续的。分页paging是提供这种优势的另一种内存管理方案,并且避免了外部碎片和紧缩。二分段不可以。

【操作系统和强化学习】1.内存管理策略

1.4 虚拟存储

局部性原理: 程序执行过程呈现出明显的局部性规律,即在一段较短的时间内,程序的执行仅局限于某个部分.相应的,所访问的存储空间也局限于某个区域.
时间局部性:刚访问的数据不久可能再次被访问.---------循环结构
空间局部性:程序在一段时间内访问的地址空间可能几种在一定范围之内.-----------pc+1

请求分页储存管理:页面置换方法

什么是抖动现象?

1.4 程序运行的必要条件

程序运行之前必须要为其建立进程,而创建进程的首要任务是将程序和数据装入内存,用户源程序执行流程如下:
1.编译: 将用户源代码编译为目标代码的过程
2.链接:将编译后形成的一组目标代码以及所需要的库函数链接在一起,形成完整的装入模块
3.装入:将装入模块装入内存
4.执行:运行内存中的可执行文件

1.4.1 链接

静态链接:程序执行前,将若干从0地址开始的目标模块及所需库函数链接为完整、从唯一"0"地址开始的装配模块.
装入时动态链接:边装入内存边链接的各目标模块.
运行时动态链接:程序执行过程中需要目标模块时,才对其进行链接.

1.4.2 各种地址

符号地址: 用户源程序中使用的指令助记符、变量名、函数名等,所对应的地址空间成为符号地址空间或名空间. + ~~~~ ADD
逻辑空间:用户源程序编译后的目标模块汇总使用的,从0开始编号的地址,又称为相对地址、或虚地址,所对应的地址空间称为逻辑地址空间.
物理地址:内存中每个存储单元的编号,又称为绝对地址,或实地址,所对应的地址空间称为物理地址空间、内存空间.

三个地址空间的关系以及变换:【操作系统和强化学习】1.内存管理策略
装入:
【操作系统和强化学习】1.内存管理策略
动态重定位和静态重定位的比较:
【操作系统和强化学习】1.内存管理策略

1.5 连续储存管理

特征:在内存用户区为每个用户程序,分配一片连续的内存空间。
单一连续分区、固定分区、可变分区

1.5.1 单一连续分区

单一=单道
【操作系统和强化学习】1.内存管理策略

1.5.2 固定分区

事先分成若干个不同的区域。
【操作系统和强化学习】1.内存管理策略
一个分区只能装入一个用户程序, 可能存在有内部的浪费.
固定分区的数据结构:分区使用表
【操作系统和强化学习】1.内存管理策略

1.5.2 可变分区

来一个作业,要多少给你多少,第二个作业来了,在第一个作业内存的后面,来多少给多少。。。分配起来容易,回收起来难。
【操作系统和强化学习】1.内存管理策略

1.5.6 分区的分配算法

首次适应算法
【操作系统和强化学习】1.内存管理策略

循环首次适应算法
【操作系统和强化学习】1.内存管理策略
最佳适应算法—最佳就是最好么??未必!!
【操作系统和强化学习】1.内存管理策略
最差适应算法
【操作系统和强化学习】1.内存管理策略
最快适应算法
【操作系统和强化学习】1.内存管理策略
伙伴系统:
大小是2^k起始地址为X的内存块,其伙伴块的地址为buddyk(x)
下连续分区或者上连续分区
【操作系统和强化学习】1.内存管理策略
哈希算法
【操作系统和强化学习】1.内存管理策略
动态可重定位分区算法:
【操作系统和强化学习】1.内存管理策略
【操作系统和强化学习】1.内存管理策略
进程是怎样运行的?
进程控制,os对进程实现有效管理,包括创建新进程/撤销已有进程、挂起、阻塞和唤醒、进程切换等多种操作。OS听过原语(Primitive)操作实现进程控制。
原语的概念:由若干条指令组成,完成特定的功能,是一种原子操作(Action Operation)
原语的特点:
原子操作,执行过程不会被中断。
再内核态下执行,常驻内存,是内核三大支撑功能(中断处理/时钟管理/原语操作)之一。
关于软件控制的各种高速缓存的置换算法:
【操作系统和强化学习】1.内存管理策略
高速缓存的一致性 cache coherence 通常是硬件问题。

1.7 进程状态

【操作系统和强化学习】1.内存管理策略

1.8 PCB

【操作系统和强化学习】1.内存管理策略
【操作系统和强化学习】1.内存管理策略

1.8 进程间通信 IPC InterProcess Communication

两个模型:共享内存、消息传递
共享内存比较快。消息传递实现经常使用系统调用。对分布式系统,消息传递比共享内存更容易实现。
【操作系统和强化学习】1.内存管理策略

1.9 线程

每个线程是CPU使用的一个基本单元;它包括线程ID、程序计数器、寄存器组合堆栈。
它同进程的其它线程共享代码段、数据段和其它操作系统资源。如打开文件和信号。
单线程和多线程的区别:
【操作系统和强化学习】1.内存管理策略

2.0 问题, 一个进程里面有多个线程? 这多个线程可能分配到多个cpu上同时执行么?

可以,因为cpu调度的最小单位是线程

2.1 进程的阻塞与唤醒,挂起与激活有啥区别和联系?

阻塞和挂起的区别:
阻塞是指进程由于等待某些事件发生(如输入输出、信号量等)而停止运行,并将资源让渡给其他进程使用。阻塞是由操作系统内核发起的,进程本身不能主动阻塞。

挂起则是进程主动要求暂停自己的执行,直到再次被激活才能继续执行。挂起是由进程本身发起的,常用于进程间通信。

唤醒和激活的区别:
唤醒是指操作系统从阻塞状态中将进程移回就绪队列,以待分配 CPU 资源并继续执行。唤醒是由操作系统内核发起的。

激活则是指进程在未被挂起的情况下被调度器选中,获得 CPU 资源,开始执行。激活是由调度器发起的。

联系:阻塞和挂起的目的都是使进程暂停执行,等待某些事件发生或被其他进程激活。唤醒和激活则是将进程转移到就绪状态,以等待分配 CPU 资源执行。两者都是进程状态转移的过程,是进程调度的基本操作。
from chatgpt 不一定对

分段&分页

【操作系统和强化学习】1.内存管理策略文章来源地址https://www.toymoban.com/news/detail-430976.html

到了这里,关于【操作系统和强化学习】1.内存管理策略的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从操作系统角度了解内存管理

    内存管理的主要功能有: 内存空间的分配与回收 。由操作系统完成主存储器空间的分配和管理,使程序员摆脱存储分配的麻烦,提高编程效率。 地址转换 。在多道程序环境下,程序中的逻辑地址与内存中的物理地址不可能一致, 因此存储管理必须提供地址变换功能,把逻辑地

    2024年02月09日
    浏览(31)
  • 操作系统-笔记-第三章-内存管理

    一、第一章——操作系统的概念 二、第二章——【进程】 二、第二章——【线程】​编辑 二、第二章——【进程调度】 二、第二章——【进程同步与互斥】 二、第二章——【锁】 三、第三章——内存管理 四、第四章——文件管理 五、第五章——输入输出管理 ​​​​​

    2024年02月11日
    浏览(48)
  • 【JavaEE】简单了解操作系统、进程&内存管理

    目录 前言:  一、操作系统: 操作系统的定位: 应用程序: 系统调用: 操作系统内核: 驱动程序: 硬件设备:  二、进程:  什么是进程?  进程的描述与组织:  描述: 组织: PCB中的 特征(属性) CPU分配——进程调度:  进程调度的相关属性:  三、内存管理:

    2024年02月03日
    浏览(28)
  • 计算机系统结构与操作系统实验三(6)-内存管理

    实现内存管理 这里修改makefile文件和run.sh文件 在《操作系统真相还原源码》的基础上稍加修改makefile 注意:这里要用 make all 命令来执行makefile文件了 本实验所有源码👉👉👉 计算机系统结构与操作系统实验三bochs源代码

    2024年02月15日
    浏览(32)
  • 【操作系统笔记04】操作系统之内存管理方式(分页、分段、段页式)、虚拟存储技术、页面置换算法

    这篇文章,主要介绍操作系统之内存管理方式(分页、分段、段页式)、虚拟存储技术、页面置换算法。 目录 一、操作系统 1.1、基地址变换机构 1.2、具有快表的地址变换机构

    2023年04月21日
    浏览(29)
  • 【地铁上的面试题】--基础部分--操作系统--内存管理

    内存管理是指操作系统或编程语言运行时环境对计算机系统中的内存资源进行分配、使用和回收的过程。其主要目标是有效地管理内存资源,以提供给程序足够的内存空间来存储和执行程序所需的数据和指令。内存管理的作用包括: 内存分配:将可用的内存空间分配给程序和

    2024年02月11日
    浏览(76)
  • 【操作系统】24王道考研笔记——第三章 内存管理

    1.基本概念 2.覆盖与交换 覆盖技术: 交换技术: 总结: 3.连续分配管理方式 单一连续分配 固定分区分配 动态分区分配 动态分区分配算法: 总结: 4.基本分页存储管理 定义: 页表: 地址转换的实现: 子问题: 逻辑地址结构: 总结: 5.基本地址变换机构 流程: 原理:

    2024年02月11日
    浏览(35)
  • 头歌操作系统 课后作业4.1:段式内存管理 答案

    第1关:0号进程和1号进程的mynext变量的取值变化 编程要求 根据相关知识,修改版本 1.3 内核回答问题: 通过 gdb 调试查找答案,将第三关的答案填写在 /data/workspace/myshixun/第三关.txt 中。 1 号进程的 output_char 函数调用会执行几次? 每次调用时,1 号进程和 0 号进程的 mynext 变

    2024年02月06日
    浏览(30)
  • 操作系统课程设计(作业调度、内存管理、进程调度、进程阻塞等)

    资源下载: https://download.csdn.net/download/fufuyfu/85811450 操作系统是计算机系统配置的基本软件之一。它在整个计算机系统软件中占有中心地位。其作用是对计算机系统进行统一的调度和管理,提供各种强有力的系统服务,为用户创造既灵活又方便的使用环境。本课程是计算机及

    2024年02月03日
    浏览(37)
  • 如何剪裁操作系统源码——移植FreeRTOS的内存管理模块到ARMV8裸片

    本文面向的需求场景是,为缺乏标准库实现的处理器IP移植内存管理模块,即为裸片部署C标准库中的 malloc() 和 free() 函数。 具体做法是——从操作系统的内存管理组件中剪裁出必要的源码,适配到目标处理器的开发环境(SDK/IDE/CMAKE工程子目录)中。 1.1 C标准库中的内存管理

    2024年02月13日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包