堆基础1_小白垃圾笔记

news2024/12/23 4:03:52

小白垃圾笔记,不建议阅读。

目录

1.什么是堆?

2.堆从哪里来?

3.堆管理器是什么

4.堆申请的实现方式

1.brk:brk仅仅主线程申请小空间的时候用,子线程不可调用brk。

2.mmap:主线程申请大的内存的时候和子线程申请内存的时候。

3.堆的位置

4.决定因素小总结:

5.调用过程的层次关系:


看的视频是这个:

0009.哔哩哔哩-【个人向】CTF pwn 入门-P9[高清版]_哔哩哔哩_bilibili

堆部分大概从2:38:00开始;

1.什么是堆?

虚拟内存中一块连续的线性空间。用户空间随取随用的一段空间。

动态申请。

下图中绿色的部分。(heap)

2.堆从哪里来?

堆是由堆管理器:位于动态链接库。上图中堆栈之间的部分吧。

3.堆管理器是什么

堆管理器相当于批发商。介于操作系统和用户之间。面向于操作系统和用户。

面向用户:响应用户的申请请求。

面向操作系统:向操作系统申请实际的物理内存。并且把实际的物理内存自己存储起来。

再把自己存储的内存分发给用户。

堆管理器有各种各样的实现:

不同的操作系统不同的实现。

linux使用glibc中的堆管理器。

dlmallo——General  purpose  allocator

ptmalloc2——glibc(********重点********)

jemalloc——FreeBSD and  Firefox

tcmalloc——Google

libumem——Solaris

堆管理器是用来向操作系统申请内存,之后在用户态把这些内存管理起来的一个用户态代码。

堆管理器是很长的一段代码。

堆管理器并不存在操作系统(Kernel)中,它存在于shared libraries(libc)中。

它的作用是用来管理下边的heap的内存。

那么用户态的代码是如和获取真正物理内存的?

系统调用

堆管理器封装了一些系统调用。通过系统调用向操作系统申请物理内存。申请的物理内存他自己先管理起来,再向用户提供一个向他申请内存的接口。

4.堆申请的实现方式

堆管理器是如何是实现申请操作系统所管理的物理内存的呢?

有两个申请内存的系统调用:

1.brk:brk仅仅主线程申请小空间的时候用,子线程不可调用brk。

brk(break):bss数据段实际是data的一部分,brk位于数据段的末尾。

brk就是从标记末尾的地方继续拓展,其实拓展的地方就是堆了。每调用一次brk  data上边的区域就会被扩展大一点。

那这里的图明明是虚拟空间,刚刚不是说物理空间吗?

这就和系统的分页机制有关了。(我也不知道啥是分页机制。)

视频中这样说:

虚拟内存申清的的空间直接是从操作系统映射过来的。每一个页(4kb)都可以在操作系统找到对应的位置。

 

2.mmap:主线程申请大的内存的时候和子线程申请内存的时候。

mmap:memory   map(内存映射)
什么是映射:对于动态链接段memory
实际的物理内存映射到虚拟内存中

每有一次新的申请都会在物理内存中申请一段物理空
空间然后映射(map)到mmap段。

3.堆的位置


所以:堆可以有两个位置
1.紧贴在data上方,向上增长
2.向物理内存要一大块空间映射到mmap的某个位置



4.决定因素小总结:

那么获取堆空间的两种方式是由什么决定的呢?
两个要素吧:
1:主线程都可以  过大用mmap,小用brk
2.子线程仅mmap

5.调用过程的层次关系:

下边是调用层次吧:

 malloc:向堆管理器申请内存,如果没有就向下(下一层)执行。
free:向堆管理器归还内存。

 

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

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

相关文章

Mysql小知识 delete 清空表之后,磁盘空间未发生变化?

1. 删除空洞 1.1 案例展示 首先我们先来看这样一个例子。 我现在有一个名为 sakila 的数据库,该库中有一个 film 表,这个表中有 1000 条记录,我么先来看下这 1000 条记录占用了多少存储空间: 小伙伴们可以看到,这个…

Go-FastDFS 本地对象存储,Windows环境搭建(下载安装教程)!

文章目录 Go-FastDFS简介与地址下载安装服务与管理端台可视化测试 Go-FastDFS简介与地址 go-fastdfs 是一个基于 http 协议的分布式文件系统! 它基于大道至简的设计理念,一切从简设计,使得它的运维及扩展变得更加简单,它具有高性…

Elasticsearch:使用带有 X-Opaque-Id 的慢速查询功能在 Elasticsearch 中调试慢速查询

如果你在软件堆栈中使用 Elasticsearch,你可能已经意识到 Elasticsearch 管理大量数据和提供实时搜索功能的强大能力。 了解 Elasticsearch 中的慢速查询 Slow Log 是 Elasticsearch 的内置功能,可用于识别慢速搜索。 任何花费时间超过预期的请求都会记…

Paper reading: Conditional Diffusion for Interactive Segmentation ICCV2021

交互式语义分割 We propose Conditional Diffusion Network (CDNet), which propagates labeled representations from clicks to conditioned destinations with two levels of affinities: Feature Diffusion Module (FDM) spreads features from clicks to potential targ…

单例模式-图文详解

概念 全世界就只要一个---在整个java程序中,只有这个类的一个实例 比如Student a new Student(); 就是Student类只创建这一个实例,只能有这一个对象存在 主要解决:一个全局使用的类频繁地创建与销毁。在内存里只有一个实例,减…

【白话机器学习系列】白话张量

白话张量 张量(Tensor)是向量和矩阵向 n n n 维的推广。向量是一维张量,矩阵是二维张量。张量作为数值容器,是机器学习,尤其是深度学习中最基础的操作对象,以至于 Google 的机器学习框架都已 TensorFlow …

ffmpeg在windows环境下的详细安装教程

这两天整理好用的录屏软件,发现了Captura这个软件,软件本身的安装很简单,但由于Captura需要依赖ffmpeg(一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序),而ffmpeg在安…

springboot X-Accel-Redirect 大文件下载实现

文章目录 前言一、什么是 X-Sendfile?二、相关请求头说明三、食用步骤总结 前言 文件下载的方式: nginx代理附件路径,直接访问。无法控制用户的权限。服务端流式读取文件内容。这个过程需要后端进程将文件读取到内存中然后再发给用户&#…

全民开发|零代码平台搭建库存管理系统,助力企业降本增效

什么是库存管理系统 库存管理系统是一种用于监控和跟踪商业组织存货的系统机软件。它帮助企业管理其库存,确保所需的商品和服务始终可用,并在需要时提供报告和预测。库存管理系统可追踪库存级别、库存周转率、订单、销售和交付等方面的数据,…

LIS系统源码

LIS系统(Laboratory Information System) 即实验室(检验科)信息系统,它是医院信息管理的重要组成部分之一,自从人类社会进入信息时代,信息技术的迅速发展加快了各行各业现代化与信息化的进程。LIS系统逐步采用了智能辅…

​​​​Linux Shell 实现一键部署postgres15

postgres 前言 PostgreSQL 是一个功能强大的开源对象关系数据库系统,拥有超过 35 年的积极开发经验 这为其赢得了可靠性、功能稳健性和性能的良好声誉。 通过官方文档可以找到大量描述如何安装和使用 PostgreSQL 的信息。 开源社区提供了许多有用的地方来熟悉Postg…

【是德出品,必属精品】示波器探头的11个误解

误解1. 100 MHz 的“信号”,使用 100 MHz 的示波器探头。 示波器探头带宽与配合它们使用的示波器带宽采用相同的方法进行规定,即产品响应的 -3dB 点。举例来说,如果使用 100 MHz 带宽的探头测量 100 MHz 1Vpp 正弦波,那么探头输出…

挖掘算力产业的创新力量和新型机遇|2023 开放原子全球开源峰会先进计算分论坛即将启幕

随着高新技术激发出磅礴的发展势能,海量的算力需求也在不断提升。如何升级和创新现有算力格局,打造多维感知、异构计算、智能调度的先进计算算力网?如何真正实现 “打破算力烟囱”、让算力像水和电一样流动起来?已成为时下焦点话题…

提升倾斜摄影三维模型数据的几何坐标纠正和三维重建速度具体技术方法探讨

提升倾斜摄影三维模型数据的几何坐标纠正和三维重建速度具体技术方法探讨 倾斜摄影三维模型数据的几何坐标变换和三维重建是一项非常耗时的任务,因此如何提高其速度一直是研究的重点。以下是一些实现倾斜摄影三维模型数据的几何坐标变换和三维重建速度的方法&#x…

网站建设对企业会有什么影响

随着互联网的发展,如今网络的普及,很多企业都开始搭建网站,以便展示自己的企业形象和产品。很多企业会认为,网站建设是一件很麻烦的事情,如果需要在网上宣传的话,就用一个链接来做好了。实际上不是这样的&a…

Linux 系统大技能,搞定 90% 日常运维

一、Linux 系统日常运维九大技能 1、安装部署 方式:U盘,光盘和网络安装 其中网络安装已经成为了目前批量部署的首选方式:主要工具有Cobbler和PXEkickstart 可以参考如下链接内容: http://www.cnblogs.com/mchina/p/centos-px…

智能语音信息处理团队14篇论文被语音技术顶会Interspeech 2023接收

近日,Interspeech 2023会议发出了审稿结果通知,语音及语言信息处理国家工程研究中心智能语音信息处理团队共14篇论文被会议接收,论文方向涵盖语音识别、语音合成、话者识别、语音增强、情感识别、声音事件检测等,各接收论文简介见…

WordPress主题Modown_v8.7主题免授权+Erphpdown15.21+团购+第三方登录

团购内置在主题里面了已不需要安装插件了,官方带免费子主题,主题无需授权和其他操作,安装启用即可免授权使用 主题简介 Modown是模板兔基于Erphpdown wordpress下载插件开发的一款全新的针对收费付费下载资源/付费查看内容/VIP会员免费下载查看/虚拟资源售卖的WordPress主题…

基于html+css的图展示104

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Vue+springboot篮球文化体育商城商铺系统的设计与实现

随着生活和工作方面的压力逐渐增加,人们对网购的依赖和需求也就变得越来越大。篮球文化商铺是一个能使得人在繁忙或者不喜欢出门的人,足不出户而又很方便地购买到自己喜爱的篮球商品,这样既满足了自己的心灵需要,也不会影响到工作…