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

文章目录

  • 前言
  • 1.内存是什么
    • 1.1 基本硬件
      • 1.1.1 保护措施
    • 1.1.2 碎片
    • 1.2 分段机制
    • 1.2.1 分段硬件
    • 1.3 分页
    • 1.4 虚拟存储
    • 请求分页储存管理:页面置换方法
    • 1.4 程序运行的必要条件
      • 1.4.1 链接
      • 1.4.2 各种地址
    • 1.5 连续储存管理
      • 1.5.1 单一连续分区
      • 1.5.2 固定分区
      • 1.5.2 可变分区
      • 1.5.6 分区的分配算法
    • 1.7 进程状态
    • 1.8 PCB
    • 1.8 进程间通信 IPC InterProcess Communication
    • 1.9 线程
    • 2.0 问题, 一个进程里面有多个线程? 这多个线程可能分配到多个cpu上同时执行么?
    • 2.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.2.1 分段硬件

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

1.3 分页

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

在这里插入图片描述

1.4 虚拟存储

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

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

什么是抖动现象?

1.4 程序运行的必要条件

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

1.4.1 链接

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

1.4.2 各种地址

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

三个地址空间的关系以及变换:在这里插入图片描述
装入:
在这里插入图片描述
动态重定位和静态重定位的比较:
在这里插入图片描述

1.5 连续储存管理

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

1.5.1 单一连续分区

单一=单道
在这里插入图片描述

1.5.2 固定分区

事先分成若干个不同的区域。
在这里插入图片描述
一个分区只能装入一个用户程序, 可能存在有内部的浪费.
固定分区的数据结构:分区使用表
在这里插入图片描述

1.5.2 可变分区

来一个作业,要多少给你多少,第二个作业来了,在第一个作业内存的后面,来多少给多少。。。分配起来容易,回收起来难。
在这里插入图片描述

1.5.6 分区的分配算法

首次适应算法
在这里插入图片描述

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

1.7 进程状态

在这里插入图片描述

1.8 PCB

在这里插入图片描述
在这里插入图片描述

1.8 进程间通信 IPC InterProcess Communication

两个模型:共享内存、消息传递
共享内存比较快。消息传递实现经常使用系统调用。对分布式系统,消息传递比共享内存更容易实现。
在这里插入图片描述

1.9 线程

每个线程是CPU使用的一个基本单元;它包括线程ID、程序计数器、寄存器组合堆栈。
它同进程的其它线程共享代码段、数据段和其它操作系统资源。如打开文件和信号。
单线程和多线程的区别:
在这里插入图片描述

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

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

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

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

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

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

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

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

分段&分页

在这里插入图片描述

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

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

相关文章

通过chatGPT学习:kubernetes中的list-watch机制介绍

1、 请解释一下,在kubernetes中的list-watch机制? Kubernetes是一个开源的容器编排和管理系统,它可以有效地管理大规模的容器化应用程序。 在Kubernetes中,list-watch机制是一种重要的机制,用于监视资源的变化并及时…

【chatGPT】让java程序员工作效率翻10倍技巧

本来写给我自己用来着, 想着以后忘记了就分享出来 1.写枚举 对于程序员来说枚举的命名需要大写并且写枚举也是被迫的(大部分人的感受都一样啊喂) 所以可以直接用chatgpt偷懒 录入关键字 : 例:帮我写个java枚举 xxxxx (活动兑奖状态,0待开始,1兑奖中 ,2…

国内晶圆代工现状简析,与国外差距又在哪里?

从去年的科技战开始,美国频频用芯片作为筹码来遏制中国科技产业的发展,使得科技产业不能自主。在这样的大环境下,做大做强自家芯片成为亟不可待的任务。然而,目前中国芯片发展存在诸多困难。在半导体产业链中,中国目前…

芯片全产业链:【设计】-【制造(原材料+制造装备+代工)】-【封装】

http://www.elecfans.com/d/671198.html 国内芯片产业链及主要厂商梳理,芯片的各个细分领域龙头有哪些呢? 1.芯片设计 1.1 芯片设计软件-EDA verilog HDL/传统原理图输入法 关系 HDL和传统原理图输入法的关系就好比高级语言与汇编语言的关系 参考&#xff1a…

芯片供应最难的居然是TI,交期拉长

关注星标公众号,不错过精彩内容 来源 | 芯头条 据台媒报道,全球供应链相当长又复杂,各业者按其所处产业与地位,供需状况其实不同,也就是所面对的缺货、长短料与需求反转的感受不一。但整体来看,随着疫情缓解…

2021年全球晶圆代工营收市占分布预测

原网址: https://xueqiu.com/6828609820/167031894 根据TrendForce集邦咨询旗下半导体研究处表示,2020年上半年全球半导体产业受惠于疫情导致的恐慌性备料,以及远距办公与教学的新生活常态,下半年则因华为禁令的提前拉货&#xf…

晶圆涨、封测涨、芯片涨、材料涨…涨价的野火烧到哪了?

作者:小芯,排版:橡皮 微信公众号:芯世相(ID:xinpianlaosiji) 继8寸晶圆产能紧缺涨价、半导体元器件上涨、覆铜板等原材料上涨后,由晶圆紧缺引发的“多米诺骨牌”开始逐步蔓延&#x…

涨超10%!国内最大MEMS晶圆代工厂成功上市!市值超400亿!

今日(5月10日),中国传感器产业史上又一标志性事件诞生——中国大陆目前规模最大、技术最先进的 MEMS 晶圆代工厂——中芯集成成功上市! 本次上市,中芯集成募集资金达百亿,是中国MEMS制造产业慕资规模最大的…

签千亿订单,中芯国际可量产3nm芯片?

本文转载自IT之家,IT之家 3 月 3 日消息 中芯国际发布公告称,公司就购买用于生产晶圆的阿斯麦产品与阿斯麦集团签订购买单,根据阿斯麦购买单购买的阿斯麦产品定价,阿斯麦购买单的总代价为 1201598880 美元。 据介绍,中…

中国12家厂商”逐鹿“国产替代,国产MCU选型合集来了

扫码报名直播领取 MCU厂家选型合集手册.PDF 前言 据统计,整体MCU价格在8月大幅下行后,9月下行趋势减缓,价格下跌型号数量明显减少,整体价格企稳。 在中国市场, 物联网和边缘计算等新兴应用对MCU有着强大的需求&#x…

【电巢】电源管理芯片:国产化替代厂家竞逐千亿黄金赛道

前言 整个2022年三季度,全国新能源电动车的起火已高达600多起,同比上升了30%多,如果具体到每天来看,平均每天都有超过7起新能源电动车火灾发生。 7月22日,台湾省专业赛车手林某颖驾驶着一辆白色特斯拉Model X&#xff…

第六大晶圆代工厂商2021净利润大增593.3%

3月29日,华虹半导体发布2021全年业绩公告,销售收入创历史新高,达16.31亿美元,较上年度增长69.6%;净利润为2.31亿美元,较2020年上升593.3%。 公告指出,华虹半导体销售收入增长因付运晶圆增加及平…

代码恐怖故事:揭秘形成复杂代码库的常见原因

【编者按】本文主要分享一些开发者在软件开发行业中遇到的复杂代码库所带来的问题和挑战。本文列举了造成复杂代码库的常见原因:过分抽象、过度通用化、虚假的测试覆盖、对过时技术的过度热衷、缺乏架构设计、缺少代码版本控制等。文章还强调了管理层对复杂代码块问…

前端使用后端回传的url,显示图片的使用方法

前言 在开发过程中,有时需要动态的添加后端回传的指定url图片。但如果直接使用图片路径充当url,这时就会存在这样一个问题:后端的图片已经变了,但是前端的图片还是原来的。 原因 这是因为浏览器有缓存的功能。如果后端回传的ur…

图片转base64的几种场景(网络图片,本地图片,用户上传图片)

转载于博客园 https://www.cnblogs.com/zhangdiIT/p/7895903.html 写的很棒 推荐给大家 场景一&#xff1a;将用户本地上传的资源转化&#xff0c;即用户通过浏览器点击文件上传时&#xff0c;将图片资源转化成base64&#xff1a; <input type"file" id"im…

C实现响应浏览器HTTP GET请求上传图片

参考链接&#xff1a; 1.C 实现一个简易的Http服务器 https://www.cnblogs.com/life2refuel/p/5277111.html 2.C&#xff1a;C语言实现HTTP的GET和POST请求 https://www.cnblogs.com/diligenceday/p/6255788.html 因为工作需要&#xff0c;需要实现在嵌入式设备上响应浏览器的…

input file 实现上传预览图片,以base64上传,兼容IE8+,firefox,chrome

前言 最近在公司开发一个项目&#xff0c;其中涉及到一个公能&#xff0c;主要是上传一些小图片&#xff0c;而且在网站上需要大量引用这个小图片的&#xff0c;对于上传一些小的头像等。一开始觉得直接上传就好了&#xff0c;但是发现这样子的话&#xff0c;一个小图片就会发…

关于微信内置浏览器,打开图片上传功能,调用的问题

关于微信内置浏览器&#xff0c;打开图片上传功能&#xff0c;调用的问题 前段时间&#xff0c;项目完结测试的时候&#xff0c;同事打开魅族手机测试&#xff0c;无意中发现一个奇葩的问题&#xff01; 描述&#xff1a; 显示的是文件系统&#xff0c;列表式的&#xff0c;没有…

A-Level化学例题解析及练习

今日知识点&#xff1a;Ionisation energy and valence electrons 例题 The table gives the successive ionisation energies for an element X. What could be the formula of the chloride of X A XCl B XCl2 C XCl3 D XCl4 解析 Answer: C Definition of…

一枚Android 短信小偷 病毒的分析

一、样本简介 样本来自于吾爱破解论坛链接地址为http://www.52pojie.cn/thread-410238-1-1.html&#xff0c;样本不是很复杂有空就分析了一下。Android病毒样本还是很有意思的&#xff0c;有需要分析的样本发到论坛分析分析。 二、样本信息 文件名称&#xff1a;10086.apk …