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

news2024/12/24 21:23:41

参考资料:

参考视频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使用时,就会被释放,写入到磁盘中
  • 当然操作系统有缓存机制,物理内存会保存近期使用的页表项,来提高效率


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

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

相关文章

动手学深度学习5.6 GPU-笔记练习(PyTorch)

以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。 本节课程地址:17 使用和购买 GPU【动手学深度学习v2】_哔哩哔哩_bilibili 本节教材地址:5.6. GPU —…

STM32第十四课:低功耗模式和RTC实时时钟

文章目录 需求一、低功耗模式1.睡眠模式2.停止模式3.待机模式 二、RTC实现实时时钟1.寄存器配置流程2.标准库开发3.主函数调用 三、需求实现代码 需求 1.实现睡眠模式、停止模式和待机模式。 2.实现RTC实时时间显示。 一、低功耗模式 电源对电子设备的重要性不言而喻&#xff…

springboot校园购物网站APP-计算机毕业设计源码041037

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

以太网常用协议——ARP协议

文章目录 一、 ARP协议与MAC层1.TCP/IP协议2. MAC地址3. ARP映射4. ARP请求和ARP应答 二、以太网帧格式三、ARP协议1. 以太网ARP通信测试: 以太网使用的协议很多,常用的有ARP、UDP等。 再介绍具体协议之前需要先知道一些基本的概念: 一、 AR…

生产环境部署与协同开发-Docker(原创超全)

关闭防火墙 systemctl stop firewalld.service 关闭SELinux vim /etc/selinux/config 查看yum支持的包并安装docker引擎 yum listyum install -y docker 启动docker设置docker自启动测试docker是否安装成功? systemctl start dockersystemctl enable dockerdoc…

HCIE实验这样玩太高级了吧?实现FRR+BFD+OSPF与BGP的联动

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 晚上好,我的网工朋友。 今天搞个HCIE实验玩玩,上回分享了个张总讲解的防火墙配置实验思路,后来还特地搞了个视…

【电路笔记】-A类放大器

A类放大器 文章目录 A类放大器1、A类放大器概述2、A类放大器基本通用发射极配置3、变压器耦合配置4、总结在 放大器类型简介的文章中,我们介绍了不同类别的放大器。 在本文中,我们将更详细地介绍A类放大器。 在介绍不同的A类放大器配置前,首先的是要记住放大器类别的选择标…

面向优秀SCI论文写作的语言大模型提示词设计

模板1:Abstract 润色 I want you to act as an SCI reviewer and evaluate the abstract of a research paper. You may check if the abstract is well-written and serves as an informative and descriptive overview of the research. You may also check if it…

Centos7网络配置(设置固定ip)

文章目录 1进入虚拟机设置选中【网络适配器】选择【NAT模式】2 进入windows【控制面板\网络和 Internet\网络和共享中心\更改适配器设置】设置网络状态。3 设置VM的【虚拟网络编辑器】4 设置系统网卡5 设置虚拟机固定IP 刚安装完系统,有的人尤其没有勾选自动网络配置…

IOS17闪退问题Assertion failure in void _UIGraphicsBeginImageContextWithOptions

最近项目更新到最新版本IOS17,发现一个以前的页面突然闪退了。原来是IOS17下,这个方法 UIGraphicsBeginImageContext(CGSize size) 已经被移除,原参数如果size为0的话,会出现闪退现象。 根据说明,上述方法已经被替换…

Python + OpenCV 酷游地址教学V鄋KWK3589

本篇文章汇整了一系列的Python OpenCV 教学,只要按照教学文的顺序阅读和实作,就可以轻松入门OpenCV,并透过OpenCV 实现许多影像相关的创意应用。 接下来我们来介绍OpenCV-- OpenCV 是一个跨平台的电脑视觉函式库( 模组) ,可应用…

Supabase 自托管部署实践

Supabase 是 Firebase 的开源替代品。使用 Postgres 数据库、身份验证、即时 API、边缘函数、实时订阅、存储和向量嵌入来启动您的项目。 Supabase介绍 Supabase 是一个开源的后端即服务(BaaS)平台,提供了一系列工具和服务,帮助…

qt中数据库和excel互导数据————附带详细步骤和代码

文章目录 0 背景1 准备QXlsx环境1.1 cmake安装使用1.2 qmake使用 2 把excel数据导出到mysql数据库3 把mysql数据库的数据写入到excel4 完整代码5 项目代码仓库 0 背景 因为需要批量导入和导出数据,所以需要用到excel。实现把数据库的数据导入到excel中,…

matrix-breakout-2-morpheus靶场

1 信息收集 1.1 主机发现 arp-scan -l 1.2 端口与服务扫描 发现开放22、80、81端口 2 访问服务 2.1 访问80端口 查看源代码 2.2 访问81端口 3 目录扫描 3.1 dirsearch目录扫描 dirsearch -u 192.168.1.14 发现robots.txt文件和javascript文件 访问文件 http://192.168…

linux网络命令:httpie详解-简单易用的命令行 HTTP 客户端

目录 一、命令概述 二、基本特点 1、直观和友好的命令语句 2、内置 JSON 支持 3、支持多种请求方法 4、支持 HTTPS、代理和授权验证 5、支持多种请求数据格式 6、自定义 headers 头 7、持久 sessions 存储 8、插件支持 三、安装 1、对于基于 Debian 的系统&#xf…

【你也能从零基础学会网站开发】关系型数据库中的表(Table)设计结构以及核心组成部分

🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 关系型数据库中…

idea 项目互联网转内网开发 依赖报错问题 maven问题

场景: 这个问题困扰好久,通过分析后,发现是maven配置问题,废话不多说,上干活。 问题描述 项目互联网从转内网开发,提前下载好repository,跟项目一起导入内网,导入后,发…

Jasper Report详细使用教程

1、编写jrxml文件 1.1 新建项目 使用Jaspersoft Studio来创建一个项目,如图所示,新建一个项目,步骤: File -> New -> Project->JasperReportsProject 1.2 新建一个Jasper Report模板 找到你新建的项目。步骤:…

昇思25天学习打卡营第6天|简单的深度学习模型实战 - 函数式自动微分

自动微分(Automatic Differentiation)是什么?微分是函数在某一处的导数值,自动微分就是使用计算机程序自动求解函数在某一处的导数值。自动微分可用于计算神经网络反向传播的梯度大小,是机器学习训练中不可或缺的一步。 这些公式难免让人头大…

抛弃 Neofetch?众多优秀替代方案等你体验!

目录 抛弃 Neofetch?众多优秀替代方案等你体验Neofetch 的替代品FastfetchscreenFetchmacchina 抛弃 Neofetch?众多优秀替代方案等你体验 NeoFetch 是用 Bash 3.2 编写的命令行系统信息工具,该项目的主要开发人员已将 GitHub 存储库存档&…