images/logo.jpg

枕石的个人博客

C语言:x86 64_Linux汇编笔记


x86-64 Linux 汇编笔记(Intel 语法,System V ABI)

本文结合实际 ELF 二进制反汇编输出,整理出常见指令、字段、操作类型,以及它们在函数、初始化、PLT/ GOT 中的作用。

内存管理:堆

本文本文参考OSDev Wiki上关于CPU缓存的介绍,原文地址:https://wiki.osdev.org/CPU_Caches


Introduction(介绍)

最初,内存的速度和 CPU 一样快。随着时间推移,CPU 的速度越来越快。内存速度也在提升,但无法跟上 CPU 提升的速度,这意味着 CPU 需要花越来越多的时间等待来自 RAM 的数据(这会对性能造成严重影响)。

内存管理:堆

本文参考OSDev Wiki上关于“堆”的介绍及实现,原文地址:https://wiki.osdev.org/Heap

堆内存

Heap(堆)

堆是应用程序和内核都离不开的重要组成部分。通常,它位于更高层次的内存管理机制之下,而高层机制负责处理更大粒度的内存块。在大多数操作系统中,内存是按页(page)或其他较大的块进行分配的。在 X86 和 X64 架构中,一页通常是 4KB,但也可能更大。然而,对于较小的分配需求,如果直接占用整页会造成大量浪费。例如,只需要 24 字节却分配整整 4KB 页,将导致严重的内存浪费。因此,大多数应用程序和内核都会实现第二层内存管理:在以 4KB(或更大)为单位分配得到的内存块基础上,根据需求将这些一组页面或单独页面拆分成更小的部分进行分配。

内存管理:概述与介绍(译文)

本文译自 OSDev Wiki 上的一篇文章,原文链接为 Memory management - Overview and Introduction

内存管理是任何操作系统内核中的关键组成部分。为程序提供一种快速、可重复地分配和释放内存的机制是内核的一项主要职责。针对物理内存的分配存在多种实现方法,包括位图法、伙伴分配算法,以及基于树结构或队列/栈的内存管理方式。

内存管理:Brendan's Memory Management Guide(译文)

本文译自 OSDev Wiki 上的一篇文章,原文链接为 Brendan’s Memory Management Guide

概述

内存管理是所有操作系统开发者迟早都需要处理的问题。这个主题非常广泛;起初看起来似乎很简单,但往往会演变成比最初预想的更复杂的内容。这就容易导致人们在操作系统规模较小时做出一些看似合理(并且最初运行良好)的设计决策,但这些决策在系统变大后可能会成为严重的问题。