66、在执行malloc申请内存的时候,操作系统是怎么做的?

摘要:
通常,分配的内存小于128k时,使用brk调用来获得虚拟内存,大于128k时就使用mmap来获得虚拟内存。进程先通过这两个系统调用获取或者扩大进程的虚拟内存,获得相应的虚拟地址,在访问这些虚拟地址的时候,通过缺页中断,让内核分配相应的物理内存,这样内存分配才算完成。

从操作系统层面上看,malloc是通过两个系统调用来实现的: brk和mmap

brk是将进程数据段(.data)的最高地址指针向高处移动,这一步可以扩大进程在运行时的堆大小

mmap是在进程的虚拟地址空间中寻找一块空闲的虚拟内存,这一步可以获得一块可以操作的堆内存。

通常,分配的内存小于128k时,使用brk调用来获得虚拟内存,大于128k时就使用mmap来获得虚拟内 存。

进程先通过这两个系统调用获取或者扩大进程的虚拟内存,获得相应的虚拟地址,在访问这些虚拟地址 的时候,通过缺页中断,让内核分配相应的物理内存,这样内存分配才算完成。

免责声明:文章转载自《66、在执行malloc申请内存的时候,操作系统是怎么做的?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Python并发编程-并发解决方案概述orace 取昨天凌晨的日期下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

stm32 cortext-M3 类型对齐问题【worldsing笔记】

经过细测,Cortex-M3的double类型必须4字节对齐访问,其他诸如float,int,short 可以非对齐访问。否则将会产生硬件异常!即访问double类型地址必须能被4整除,测试代码如下: 1: /* 测试Cortex-M3类型对齐访问 2: * i,j,k,l控制对齐长度,对齐 3: * 长度不符合是将产生HardFa...

内存地址与内存空间

概览 基本概念 进入误区 误区诊断 总结 基本概念 什么是位?     什么是字节? 位表示的是二进制位,一般称为比特,即0或1,是计算机存储的最小单位; 字节是计算机中数据处理的基本单位; 计算机中以字节为单位存储和解 释信息,规定一个字节由八个二进制位构成,即1个字节等于8个比特。 1Byte=8bit 地址总线? (1)CPU是通过地址总线来指...

单点登录理解

1、当访问client1的时候,spring security会设置一个cookie,该cookie将作为全部应用系统和认证系统保持会话的关键(未认证的应用必须携带该cookie才能实现单点登录的效果)。 2、 认证服务器会重定向到/login地址后,认证服务器确认上一步骤的的coolie(JSESSIONID)是否有效,有效则再次重定向到code模式,...

DMAR 与 IOMMU

http://linuxperf.com/?p=67 支持虚拟化技术的硬件平台主要做两件事,一个是DMA Remapping,将DMA请求中的Guest的物理地址映射到Host的物理地址,另一个是中断Remapping,将能remappable的中断请求根据由VMM设置,位于内存的IRT(Interrupt Remapping Table)发送到指定的vc...

V4L2驱动的移植与应用(一)

V4L2(video for linux) 可以支持多种设备,它可以有以下5种接口: 1、视频采集接口(video capture interface):这种应用的设备可以是高频头或者摄像头.V4L2的最初设计就是应用于这种功能的.下面也是着重讲解这种应用; 2、视频输出接口(video output interface):可以驱动计算机的外围视频图像设备...

如何关闭WIN7自动配置 IPV4 地址 169.254

如何关闭WIN7自动配置 IPV4 地址 169.254 以管理员身份运行cmd.exe 输入:netsh winsock reset catalog 回车 输入:netsh int ip reset reset.log  回车 重启电脑   最好换个固定ip地址,可能跟别人冲突了,系统给你自动又分配的这个地址。   取消IPv6: 然后以管理员身份打开...