进程 写时复制 分页管理

操作系统学习-21.基本分段储存与虚拟存储器 写在前面 继续操作系统的整理,每天看一节课,然后整理。保持这个节奏,每天都做一些无害的事情,就挺好的呢。 请求分页存储管理方式 请求分页便成为目前最常用的一种实现虚拟存储器的方式。 请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能而增加了请求调页功能和页面置换功能。相应地,每次调入和换出的基本单位都是长度固定的页面,这使得请求分页系统在实现上要比请求分段系统简单(后者在换... 阅读详情

fork 创建一个子进程时,会创建一个新的地址空间,并且拷贝父进程的资源,然后就爱那个会有两种行为:
1.执行从父进程那里拷贝过来的代码段
2.调用exec执行一个新的代码段
当调用exec时,新的程序替换了当前进程的正文数据、堆和栈段,前面拷贝的就相当于白费了。所有就有了“写时复制”技术。

写时复制

  即复制的时候,页帧并没有复制,而是共享页帧,页帧被分享后就不能修改,即页帧被保护,当父进程或子进程试图写入一个共享的页帧,就会发生异常,这是内核就把这个页复制到一个新的页帧,并标记为可写,原来的额页帧仍被保护。

  vfork就把事情做绝了,所有有关于内存的东西都不复制了,父子进程的内存是完全共享的。但是这样一来又有问题了,虽然用户程序可以设计很多方法来避免父子进程间的访存冲突。但是关键的一点,父子进程共用着栈,这可不由用户程序控制的。一个进程进行了关于函数调用或返回的操作,则另一个进程的调用栈(实际上就是同一个栈)也被影响了。这样的程序没法运行下去。
  所以,vfork有个限制,子进程生成后,父进程在vfork中被内核挂起,直到子进程有了自己的内存空间(exec**)或退出(_exit)。并且,在此之前,子进程不能从调用vfork的函数中返回(同时,不能修改栈上变量、不能继续调用除_exit或exec系列之外的函数,否则父进程的数据可能被改写)。

页表

页表是一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。 每一个进程都拥有一个自己的页表,PCB表中有指针指向页表。

基本分页存储管理方式

用固定大小的页(Page)来描述逻辑地址空间,用相同大小的页框(Frame)来描述物理内存空间,由操作系统实现从逻辑页到物理页框的页面映射,同时负责对所有页的管理和进程运行的控制。

页帧(页框)

分页管理时,将若干个字节视为一页,比如4 byte,此时内存变成了连续的页,即内存为页数组,每一页物理内存叫做页帧,以页为单位进行编号,称为页帧号,页帧和页框是一个东西。

进程写时复制 参考:https://blog.youkuaiyun.com/qq_33883085/article/details/88799947 https://blog.youkuaiyun.com/boyaaboy/article/details/102512106 1. 父子进程之间在刚fork后。 父子相同处: 全局变量、.data、.bbs、.text、栈、堆、环境变量、用户ID、宿主目录(进程用户家目录)、进程工作目录、信号处理方式等等,即0~3G的用户空间是完全一样的。 父子不同处: 1.进程ID 2.fork返回值 阅读详情

相关推荐

利用VBA宏实现LightTools仿真数据自动化导出至Excel

本文详细介绍了如何利用VBA宏实现LightTools仿真数据自动化导出至Excel的完整流程。通过调用LTAPI接口,工程师可以自动执行仿真、抓取照度与光强等数值数据、捕获并粘贴仿真图像,从而将重复性工作自动化,显著提升光学设计工作的效率和准确性。

weixin_28314575的博客 497

内存请求分页实验java_实验二 进程的创建与可执行程序的加载

姓名:韩康 学号:SA***183一、进程试探编程实现一个简单的shell程序点击(此处)折叠或打开#include#include#include#include#include#define NUM 1024int mystrtok(char *argv[], char* string){//遍历字符串,截取空格之间的各个字符子串,保存入参数数组argv中int i=0;char delim...

weixin_33450988的博客 220

最新小旋风蜘蛛池X6.21解密版+绕过授权带教程

介绍: 1.站群管理:用你的域名在这里添加网站 2.站点优化:站点互链,内容优化 2.系统设置:开启蜘蛛池 3.采集管理(可开启自动采集) 4.缓存设置:推荐开启tkd缓存 其他的用户根据自己的实际情况后台进行配置,通常以下: 1.后台首页(这里显示系统的大致概况) 2.系统设置:蜘蛛池的基本设置(访问开关、跳转、统计等等) 3.站群管理: 1.网站管理(用你的域名在这里添加网站) 2.模型管理(可构建不同类型站点:电影、文章、论坛等等) 3.TKDB调用模板(即:title、keywords、descri

百度SEO程序下载 2935

linux内存管理笔记(三十六)----写时复制

​ 缺页中断是内核在访问一个虚拟地址时,发现该虚拟地址所在的页没有一个物理页框与之相对应,就会触发缺页异常进入物理页面分配的异常函数。而写时复制是指,父进程在fork出子进程的时候,并不会为子进程马上分配物理页框,而是当复进程或者子进程需要对内存进行写操作时,才会分配物理页框,分配时,先将内容完全复制到新页框,然后再进行改写,称为写时复制。 1. 写时复制原理 ​ 在传统的unix操作系统中,当执行fork系统调用时,内核复制父进程的整个用户空间并把复制得到的那一份分配给子进程,这种行为就非常耗时

奇小葩 2151

ANSYS FLUENT 超临界流体物性分段线性插值数据批量导入

使用fluent自带数据库进行超临界流体仿真时,时不时会出现计算错误,考虑是数据库不稳定引起,而使用自定义的分段线性插值物性则不会出现上述情况。 超临界流体在拟临界点附近物性变化剧烈,需要使用较多的数据点才能更准确的表述物性,如果是在对话框中修改,一次只能输入一个点,人工输入极其费时费力且容易失误。 数据批量导入方法为: 1.以CO2为例,使用REFREPRO等物性查询软件或数据资料,获得所需物性数据表。 2.在FLUENT材料Materia...

wind_rider的博客 1万+

Xftp卸载报错1628终极解决指南:深入解析InstallShield残留问题

本文深入解析了Xftp卸载时遇到的1628错误,其根源在于InstallShield安装引擎的残留问题。文章提供了从手动清理注册表项到彻底删除隐藏安装备份文件夹的完整解决方案,并给出了防患于未然的实用建议,帮助用户彻底解决这一经典安装报错。

weixin_29276847的博客 336

写时复制(COW)详解

1、写时复制简介 写时复制(Copy-on-write,简称COW)是一种计算机程序设计领域的优化策略。其核心思想是,如果有多个调用者(callers)同时请求相同资源(如内存或磁盘上的数据存储),他们会共同获取相同的指针指向相同的资源,直到某个调用者试图修改资源的内容时,系统才会真正复制一份专用副本(private copy)给该调用者,而其他调用者所见到的最初的资源仍然保持不变。这过程对其他的调用者都是透明的。此作法主要的优点是如果调用者没有修改该资源,就不会有副本(private copy)被创建,

lqycwr的博客 1万+

AFE芯片做什么用的?AFE(Analog Front End) 模拟前端

AFE采样精度的影响因素非常多,需要综合考虑各种因素,并根据实际应用场景来选择合适的参数和方法。通过减少噪声、提高采样频率、调节放大器增益、降低电源噪声、优化传输线路、进行温度补偿、选择合适的ADC分辨率、根据信号类型选择合适的AFE参数、进行器件匹配和校准等方法,可以提高AFE的采样精度,从而更好地满足各种应用需求。版权声明:本文为优快云博主「czf.Forver」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

学海无涯的专栏 4万+

打破认知!Linux 进程地址空间不是 “真实内存”?底层揭秘

本文系统介绍了进程地址空间的概念和作用。进程地址空间是操作系统为每个进程分配的虚拟内存区域,通过mm_struct和vm_area_struct结构进行管理,利用页表实现虚拟地址到物理地址的映射。

Miun123的博客 2261

运放 + MOS管构成的恒流电路分析及实用环境器件参数选择

恒流电路

五花带点肉 2万+

基于51单片机的电子记分牌的设计

基于51单片机的电子记分牌的设计 电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图(2)软件设计3 设计原理分析3.1 电源、复位、下载电路的设计(见图1、2、3)3.2 时钟电路的设计3.3 矩阵键盘电路的设计3.4 数码管显示电路设计4程序代码 摘要 本设计为电子记分牌设计,是以STC89C52芯片为核心,辅以必要电路设计进行的。用4位LED七段数码管显示比赛两方的分数(每方分数用2位

行走的皮卡丘 2036

part2.内存管理先导知识

前言想了一想,还是需要先导知识,一开始就读源码,实在是有点困难。 从内存管理开始吧,毕竟属于相对比较简单的一部分。知识内存分页管理机制Linux的内存管理程序采用了分页管理方式。内存分页管理是通过页面目录表和内存页表多组成的二级表进行。页目录表中的每一个表项(简称页目录项)(4B)用来寻址一个页表,而每个页表项(4B)用来指定一页物理内存页。因此,当指定了一个页目录项和一个页表项,可以唯一确定所对

热带雨林 552

u-boot-2014.10移植第22天----添加nand flash命令支持(四)

解决问题:nand0: MTD Erase failure: -5 drivers/mtd/nand/nand_bbt.c文件中初始化bbt/* * Allocate memory (2bit per block) and clear the memory bad block * table. */ this->bbt = kzalloc(len, GFP_

fulinux的博客 3631

浅谈Linux内存管理

<br /><br />一.引言<br />首先以应用程序开发者的角度审视Linux的进程内存管理,在吃基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。<br />二.基本知识<br />首先简单的介绍下理解linux内核编程的一些基本知识,当然也可以跳过这一节,你自认为都比较熟悉的。<br />(1)    AT&T 汇编<br />1.       基本语法<br />1)      赋值方向:movl %ebx,%eax ---- 方向从左到右。这个是与INTEL汇编醉倒的

Jdan1004的专栏 709

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

虚拟内存和memory.c解析

问题: 1.在运行应用程序的时候,是把所有的代码和数据全部加载到内存中么?如果不是,那么在用到一些代码而这些代码不在内存中该肿么办? 2.在fork一个进程的时候,我们完全的为子进程拷贝了父进程的内存空间,那么这个进程的拷贝是真的创建了两个完全一个的内存块在物理内存中么?如果不是,那操作系统怎么做的(写时拷贝)memory.c 内存管理主要实现了两个重要方式: 1.分页机制:缺页重读 2.内存读写权限:用时拷贝 在页目录和页表表项结构中会空余12位的长度供其它权限使用 其中: ...

zzzzzyyyz的博客 444

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

《小白也能秒懂的Linux进程地址空间指南》

每一个运行中的程序(进程)都拥有独立的虚拟王国,这个王国的大小在32位系统是4GB(2^32字节),64位系统可达256TB。操作系统像魔术师一样,让所有进程都感觉自己独占整个内存空间。对等特权:Chrome浏览器和记事本程序会觉得自己的内存世界同样重要安全隔离:微信无法窥探支付宝的内存数据(就像小区之间的围墙)内存幻觉:实际只用500MB的进程可以拥有4GB"虚拟领土"

shuaige_shiwoa的博客 985

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【操作系统系列】虚拟内存及 Linux 实现

虚拟内存 原因:程序用户想要分段,物理内存想要分页 采用一个中间结构将段、页结合在一起 将程序分成多个段,并从中间结构上分割出一些区和每个段建立映射,完成分段机制; 将中间结构分割成页,将这些页放到物理内存的页框中,并建立这个页和页框的映射,完成分页机制。 中间结构是一个看起来和物理内存一样,但没有对应物理存储单元的虚拟内存,正是虚拟内存这个关键概念(抽象)将分段机制和分页机制有机地结合在一起。 构建虚拟内存的核心步骤 在虚拟内存中分段、建立段表、虚存页映射到空闲物理页框、建立页表 说明:段

菜鸡也有大佬梦 592

操作系统-内存管理

我们每天都在与内存打交道——定义变量、创建对象、处理数据。在高层语言和现代框架的帮助下,很多内存管理的细节被隐藏了。然而,理解内存管理的核心原理,对于编写高效、稳定、安全的代码至关重要。你是否遇到过程序莫名其妙地崩溃,最终定位到是“内存访问违例”或“段错误”?你是否调试过因为内存泄漏导致服务运行一段时间后资源耗尽的问题?你是否想优化程序性能,却不清楚数据应该放在栈上还是堆上更合适?你是否好奇为什么你的程序可以使用的内存“看起来”远超机器的物理内存?

左灯右行的爱情 1367

Linux 0.11 内存管理

概述 内存的管理是以内存页面为单位进行的,一个内存页面是指地址连续的4K字节物理内存 page.s 包含内存页异常的中断处理过程。主要实现了对缺页和页写保护的处理 memory.c 是内存页面管理的核心文件,用于内存的初始化过程操作、页目录和页表的管理和内核其它部分对内存的申请处理过程 内存管理的主要功能 地址变换机制 内存寻址保护机制 内存分页管理机制 页目录项和页表项都是4字节 一个页大小4kb 页目录表占用一页内存,因此最多可以寻址1024个页表。每个页表占用一页内存,最多寻址1024个物理内

AnitaSun的博客 520

操作系统核心机制解析:从进程管理到存储优化的实战指南

本文深入解析操作系统核心机制,从进程管理到存储优化的实战技巧。通过Linux命令、同步与死锁案例、内存分配策略及虚拟内存管理,揭示系统架构设计的关键要素。结合实际运维经验,帮助开发者优化性能、避免常见陷阱,提升系统效率。

weixin_30296405的博客 494

【Linux】进程地址空间

本文深入探讨了Linux系统中的程序地址空间管理机制。首先回顾了程序内存空间布局,指出C/C++程序中看到的地址都是虚拟地址而非物理地址。通过fork示例展示了父子进程虚拟地址相同但内容不同的现象,揭示了操作系统通过页表和MMU实现虚拟地址到物理地址的转换机制。重点分析了写时复制技术如何实现内存高效共享,以及mm_struct结构体如何管理进程地址空间。最后阐述了虚拟地址空间的三大优势:安全隔离、解耦管理和灵活加载,并详细说明了进程地址空间与物理内存映射关系的建立过程,包括程序加载、动态分配和页面置换等环节

2403_87856518的博客 1746

linux0.11-虚拟内存

123

LIJIWEI0611的博客 661

操作系统概念黑书复习(4)第8,9章

os黑书 8 9 章

j15941558855的博客 540

Windows编程之进程的创建

本文原创,最早发表于公司内部博客, 禁止转载 文章目录前言一. PE文件格式简介1.1. 基本概念1.2. MS-DOS头1.3. PE文件头1.4. 区块二. R0和R3三. 进程虚拟地址空间3.1. 进程隔离3.2. 虚拟地址空间介绍3.3. 虚拟地址空间分区3.4. 分页3.5. VirtualAlloc、HeapAlloc、malloc、new四. 进程的创建和运行4.1. 进程的创建4.2. 内存映射文件4.3. 工作集(working set)4.3. 页错误4.4. 写时复制4.5. 页文件后

Just_bg的专栏 1619

Linux进程虚拟地址空间深度解析

虚拟化的价值:每个进程拥有独立的4GB(32位)或更大(64位)地址空间, 通过页表映射到物理内存关键数据结构mm_struct:进程内存描述符:虚拟内存区域四级页表:PGD→PUD→PMD→PTE核心机制缺页中断:按需分配物理页写时复制:优化fork()性能页面置换:LRU等算法管理物理内存工具链:/proc文件系统、pmap、gdb、valgrind等提供了完整的观察和调试能力。

X 1373

linux 和windows 内存管理区别

linux 和windows 内存管理区别 在 80 年代初,IBM 推出的 IBM PC 机采用了 Intel 16 位的 8088 处理器,该处 理器可以访问最多 1MB 的存储器。当应用程序需要的存储...

weixin_33862993的博客 1199
上一篇: 进程的状态
下一篇: 线性表
Tanswer_
博客等级 码龄11年 231粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值