进程,线程,虚拟内存,交换技术

参考资料:

参考视频1icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Hs421M78w/?spm_id_from=333.999.0.0&vd_source=97411b9a8288d7869f5363f72b0d7613

参考视频2icon-default.png?t=N7T8https://www.bilibili.com/video/BV1jE411W7e8/?spm_id_from=333.337.search-card.all.click&vd_source=97411b9a8288d7869f5363f72b0d7613


相关阐述:

  1. 进程和线程
  1. 进程
  1. 执行磁盘上由代码编写的程序,并将程序从磁盘加载到内存中,变成一个可执行的程序,我们称之为进程
  2. 每一个进程都拥有一块独立的虚拟内存(下面会讲),认为自己独占了整个物理内存(即内存条)

  1. 线程
  1. 当进程的作用机制比较复杂,一个主线程不能满足同时处理多个事件,就需要开启多个线程来进行处理;
  2. 进程中的多个线程,共享着进程的虚拟内存
  3. 进程是可执行程序的一个独立工作单位,拥有者独立的内存和工作逻辑
  1. 计算机的内存分层
  1. 分层存储器体系

计算机的存储器大致分为三类:

  1. 永久存储:磁盘
  2. 临时存储:内存条
  3. 临时存储:高速缓存(通常位于CPU,寄存器等元件中)

它们速度越来越快,价格缺越来越高

  1. 虚拟内存

通常情况下,计算机系统运行的进程所需要的内存空间是远大于计算机实际的内存条的大小的,为了应对这种情况

  1. 原始的方式
  • 最原始的办法是利用基址寄存器和界限寄存器,为进程分配一段连续的物理内存,即一部分内存条;

其中,基址寄存器存储的是进程在物理内存上开始的地址,界限寄存器存储的是进程基于开始地址的偏移量

  • 但是这样显然物理内存不够每个进程分,我们就需要在磁盘中开辟一部分空间来临时存储未分配到物理内存的进程,当物理内存中有进程关闭,就将磁盘中的进程拷贝至物理内存中,或者当物理内存中有进程处于休息状态,就将休息的进程拷贝至磁盘中,将磁盘中的待执行的进程拷贝至物理内存中执行。这项技术叫内存交换技术(swapping)

  • 在频繁的物理内存和磁盘的进程交换过程中,物理内存会产生很多间隙,称之为空洞(hole),整理物理内存空洞,将进程的物理内存地址尽可能向下移动,使他们紧密的排列在一起的技术,叫内存紧缩(Memory Compaction);内存紧缩效率很低,需要很多时间。

  1. 新的内存管理方式-虚拟内存

使用基址寄存器和界限寄存器管理内存的方式因为其效率低下,已经不再使用,取而代之的是虚拟内存

  • 虚拟内存其实就是将进程所需要的物理内存,以及磁盘文件进行切分,通常4kb为一个单位,只加载CPU使用的部分到物理内存中,其余不使用的部分仍然留在磁盘文件中,使得内存的有效使用率达到最大;其中内存中叫页框,磁盘中叫页,都是4KB

  • 当然CPU并不是直接通过物理地址访问物理内存的,它是通过内存管理单元(MMU),将逻辑上的虚拟内存地址转换为物理内存地址(具体原因下面说)
  • 当进程启动时,进程会在逻辑上分配整个物理内存甚至比物理内存更大的内存,但是只加载CPU需要的页到物理内存中,以应对进程更为复杂的运行;
  • 并且会内存中的页表生成虚拟内存到物理内存的映射关系;

  • 当进程需要对虚拟内存中的页进行读写时,MMU就会通过页表到物理内存中寻找,如果物理内存没有加载,就到磁盘中进行加载
  • 当物理内存中的页框,不被CPU使用时,就会被释放,写入到磁盘中
  • 当然操作系统有缓存机制,物理内存会保存近期使用的页表项,来提高效率


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【创建者模式-建造者模式】

概要 将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式包含以下角色 抽象建造者类(Builder):这个接口规定要实现复杂对象的那些部分的创建,并不涉及具体的部件对象的创建。具体建…

使用explain优化慢查询的业务场景分析

问:你最害怕的事情是什么?答:搓澡问:为什么?答:因为有些人一旦错过,就不在了 Explain 这个词在不同的上下文中有不同的含义。在数据库查询优化的上下文中,“EXPLAIN” 是一个常用的 …

基于PHP的初中数学题库管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的初中数学题库管理系统 一 介绍 此初中数学题库管理系统基于原生PHP开发,数据库mysql,系统角色分为学生,教师和管理员。(附带参考设计文档) 技术栈:phpmysqlphpstudyvscode 二 功能 …

YOLOv10改进教程|C2f-CIB加入注意力机制

一、 导读 论文链接:https://arxiv.org/abs/2311.11587 代码链接:GitHub - CV-ZhangXin/AKConv YOLOv10训练、验证及推理教程 二、 C2f-CIB加入注意力机制 2.1 复制代码 打开ultralytics->nn->modules->block.py文件,复制SE注意力机…

Android 大话binder通信

戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章 由于 Android 大话binder通信(上) 和 Android 大话binder通信(下) 分为两篇阅读体验不好,顾合并为一篇。 本文摘要 用故事的方式把binder通信的整个过程都描述…

分享一个在 WinForm 桌面程序中使用进度条展示报表处理进度的例子,提升用户体验

前言 在有些比较消耗时间的业务场景中,比如生成报表等,如果没有在操作的过程中向用户反馈操作进度,会让用户以为程序 “死” 掉了,用户体验非常不好。 WinForm 桌面程序项目与 Console 项目不一样,如果 Console 项目…

C++ initializer_list类型推导

目录 initializer_list C自动类型推断 auto typeid decltype initializer_list<T> C支持统一初始化{ }&#xff0c;出现了一个新的类型initializer_list<T>&#xff0c;一切类型都可以用列表初始化。提供了一种更加灵活、安全和明确的方式来初始化对象。 class…

MIT6.s081 2021 Lab Page tables

Speed up system calls 思路 题目要求在每个进程初始化时为它的页表插入一个页表项&#xff0c;内核通过这样预先缓存页表项的操作&#xff0c;来加速特定系统调用的执行速度。 由于前不久刚过完一遍《OSTEP》&#xff0c;因此我认为自己对页表机制还算比较熟悉&#xff0c;…

Open AI Stream Completion Set Variable Inside Function PHP With Openai-php SDK

题意&#xff1a;使用 OpenAI 的 PHP SDK&#xff08;例如 openai-php&#xff09;来在函数内部设置和完成一个流&#xff08;stream&#xff09;相关的变量 问题背景&#xff1a; How to set variable inside this openai-php sdk function in stream completion ? I am usi…

【笔记】手工部署之linux中开放已安装的mysql与tomcat端口

在需要打包的springboot项目中输入mvn clean package 在target下面获得jar包 进入linux中你想要该jar包存在的位置 将jar包上传至linux中 此时在浏览器中输入linux的ip地址&#xff1a;端口号/mapping路径为404 故&#xff1a; 在linux中另开一个标签页 检查mysql和tomcat已…

JavaFX布局-BorderPane

JavaFX布局-BorderPane 实现方式Java实现FXML实现 综合案例 将容器空间分成五个区域&#xff1a;顶部&#xff08;Top&#xff09;、底部&#xff08;Bottom&#xff09;、左侧&#xff08;Left&#xff09;、右侧&#xff08;Right&#xff09;和中心&#xff08;Center&#…

Java案例找素数(三种方法)

目录 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; 四&#xff1a;运行结果&#xff1a; 一&#xff1a;问题&#xff1a; 二&#xff1a;思路分析&#xff1a; 三&#xff1a;具体代码&#xff1a; Ⅰ&#xf…

03 _ 类型基础(2):动态类型与静态类型

静态类型语言与动态类型语言 通俗定义 静态类型语言&#xff1a;在编译 阶段确定所有变量的类型 动态类型语言&#xff1a;在执行阶段确定所有变量的类型 Javascript 与 C 对比 静态类型与动态类型对比 其他定义 强类型语言&#xff1a;不允许程序在发生错误后继续执行 语…

【STM32】温湿度采集与OLED显示

一、任务要求 1. 学习I2C总线通信协议&#xff0c;使用STM32F103完成基于I2C协议的AHT20温湿度传感器的数据采集&#xff0c;并将采集的温度-湿度值通过串口输出。 任务要求&#xff1a; 1&#xff09;解释什么是“软件I2C”和“硬件I2C”&#xff1f;&#xff08;阅读野火配…

视频号视频怎么下载保存到手机,视频号视频如何下载到电脑本地

在数字化浪潮的推动下&#xff0c;视频号成为了我们获取信息、分享生活的重要平台。但有时候&#xff0c;我们遇到一些精彩的内容&#xff0c;想要保存下来以便日后观看&#xff0c;却发现视频号并不提供直接的下载功能。下面我就来为大家详细介绍视频号视频下载的方法&#xf…

Datax快速使用之牛刀小试

前言 一次我发现业务他们在用 datax数据同步工具&#xff0c;我尤记得曾经 19 年使用过&#xff0c;并且基于当时的版本还修复了个 BUG并且做了数据同步管道的集成开发。没想到时间过的飞快&#xff0c;业务方基于海豚调度 2.0.6 的版本中有在使用&#xff0c;由于业务方还没有…

大促前夕即高点,综合电商平台的“稀缺”魔法正在消失?

新一期618大促早已结束良久了&#xff0c;但似乎其产生的余韵却仍旧未消散。 从最直观的资本市场走势来看&#xff0c;自这一波618大促陆续开展之后&#xff0c;包括京东、阿里巴巴、拼多多等港美股股价就一改此前的上行态势&#xff0c;持续下滑至今。 事实上&#xff0c;早…

【计算机网络期末复习】例题汇总(一)

重点例题选择填空简答题与传输媒体的接口的特性重点 计算机网络的性能指标计算机网络体系结构例题 选择

【Linux】线程id与互斥(线程三)

上一期我们进行了线程控制的了解与相关操作&#xff0c;但是仍旧有一些问题没有解决 本章第一阶段就是解决tid的问题&#xff0c;第二阶段是进行模拟一个简易线程库&#xff08;为了加深对于C库封装linux原生线程的理解&#xff09;&#xff0c;第三阶段就是互斥。 目录 线程id…