• 2024-11-21Linux内核中的PAGE_SHIFT
    Linux内核中的PAGE_SHIFT什么是PAGE_SHIFT?在Linux内核中,PAGE_SHIFT是一个非常重要的宏,它定义了一个页的大小,通常是2的幂次方。这个值表示了虚拟地址空间中一个页的偏移量占用了多少位。换句话说,它告诉我们一个页的大小是多少字节。PAGE_SHIFT的作用页大小的确定:PAGE_SHIFT
  • 2024-11-20[Linux]进程地址空间
    进程地址空间以32位机器为例程序地址空间地址空间描述的基本空间大小是字节,每个字节都要有为一的地址,所以在32位的机器下就会有2^32次方个地址,也就是4G的空间范围。这些空间被划分成为了一个个区域。范围是0x00000000-0xFFFFFFFF我们知道,在一个程序中变量或函数的地址分
  • 2024-11-16进程地址空间
    1.进程的地址空间在讲程序地址空间,我们先看一段代码和现象:#include<stdio.h>#include<unistd.h>intgval=100;intmain(){printf("我是一个进程,pid:%d,ppid:%d\n",getpid(),getppid());pid_tid=fork();if(id==0){//child
  • 2024-11-06chapter15
    relocation.py参数第一题问题用种子1、2和3运行,并计算进程生成的每个虚拟地址是处于界限内还是界限外?如果在界限内,请计算地址转换。种子为1时:种子为2时:种子为3时:第二题问题使用以下标志运行:-s0-n10。为了确保所有生成的虚拟地址都处于边界内,要将-l(界限寄
  • 2024-11-05Mit6.S081笔记:页表笔记
    xv6手册:https://pdos.csail.mit.edu/6.S081/2020/xv6/book-riscv-rev1.pdf相关翻译:http://xv6.dgs.zone/labs/requirements/lab5.html感觉页表很多地方没理解,学习的时候把一些关键地方记录起来,如有错误恳请各位大佬指正。页表笔记​​ 页表是操作系统为每个进程提供私有地址
  • 2024-11-04【鸿蒙南向开发】—— 小型系统内核(LiteOS-A)【内存管理】
  • 2024-11-04Windows 虚拟地址 到底是如何映射到 物理地址 的?
    一:背景1.讲故事我发现有很多的.NET程序员写了很多年的代码都没弄清楚什么是 虚拟地址,更不用谈什么是 物理地址 以及Windows是如何实现地址映射的了?这一篇我们就来聊一聊这两者之间的联系。二:地址映射研究1.找虚拟地址怎么去找 虚拟地址 呢?相信很多朋友都知道应用
  • 2024-10-27CPU如何通过内存地址访问内存:寻址方式
    寻址方式:物理寻址分段寻址虚拟寻址分页寻址:引申出多级页表起源:寻址方式的发展取决于CPU位数和内存大小,16位就用物理分段寻址,32位用虚拟分段寻址或者2级分页寻址,64位一定用4级分页寻址了CPU的位数决定了:寻址能力:能够直接寻找地址的范围,比如16位的cpu只能找到从0
  • 2024-10-19【Linux】Linux进程地址空间
    1.程序地址空间分配回顾在前⾯C语⾔以及C部分介绍过⼆者的内存分配如下图所示:全局变量区和未初始化全局变量区也被称为数据区,数据区中除了有全局变量,还有静态变量和常量使⽤下⾯的代码演示不同的内容所处的地址:#include<stdio.h>#include<unistd.h>#include<stdli
  • 2024-10-12【Linux】————进程控制
                                 作者主页:   作者主页                           本篇博客专栏:Linux专栏              
  • 2024-09-194G内存的32位系统,内核地址空间分配1G的情况下,为什么实际可用的低端内存只有800M左右?
    在32位系统中,即使物理内存为4GB,但由于地址空间和硬件限制,实际可用的低端内存(lowmemory)只有大约800MB左右。以下我将详细解释其中的原因。1.32位地址空间的限制1.132位系统的地址空间虚拟地址空间: 在32位系统中,虚拟地址空间的范围是0x00000000到0xFFFFFFFF,总共4G
  • 2024-09-15Linux内存管理方式
    Linux内存管理涉及到多个方面,包括物理内存的分配和回收、虚拟内存的管理、页面置换、内存保护等。以下是Linux内存管理的主要方式和机制:1.虚拟内存(VirtualMemory)虚拟地址空间:每个进程拥有自己的虚拟地址空间,虚拟地址空间与物理内存是分开的。进程在运行时使用虚拟地
  • 2024-09-12C++面试题整理 1
    1.new和malloc什么区别?new和malloc都用于在堆上分配内存,new是c++中的关键字,分配内存后还会调用构造函数2.std中unorded_map,map,multimap有什么区别?unorderd_map中元素不按键值排序,底层数据结构是哈希表,相对map查询速度快,内存开销大map中元素按键值排序,底层数据结构是红黑
  • 2024-09-10【整理】虚拟地址全解析:操作系统内存管理与进程调度的深度揭秘!
    原创freedom47概述在现代计算机系统中,虚拟地址是内存管理的关键组成部分。虚拟地址不仅帮助操作系统高效地管理物理内存,还在进程的内存分配中发挥重要作用。本文将详细介绍虚拟地址的定义、作用、操作系统的内存管理、进程内存分配、32位与64位架构的内存分配差异,以及物
  • 2024-09-08windows加载PE文件的流程
    读取PE文件当一个PE文件被执行时,Windows的创建进程函数(CreateProcess)首先被调用,负责为新进程创建虚拟地址空间。操作系统从磁盘读取PE文件,将其头部内容(DOS头、PE头和节表)载入内存,以获取该文件的结构和装载信息。检查PE文件有效性操作系统首先会检查PE文件的合法性,比如验证
  • 2024-09-05Linux驱动开发基础(定时器、mmap)
    所学来自百问网目录1.定时器1.1定时器时间单位1.2内核函数1.3定时器的应用举例2.mmap2.1内存映射现象与数据结构2.2ARM架构内存映射简介2.2.1一级页表映射过程2.2.2二级页表映射过程2.2.3应用程序新建内存映射2.2.3.1mmap调用过程2.2.3.2cache和buffer
  • 2024-08-31一个操作系统的设计与实现——第20章 加载64位内核,64位显卡驱动与内存管理系统
    20.164位ELF格式在64位模式下,由于内存地址变宽,ELF格式中的内存地址也要跟着变宽。这并不是一个麻烦的问题,因为ELF格式的整体结构没有发生变化,仍然由一个文件头,加上若干程序头表组成。对于64位ELF格式的文件头,我们需要关注的信息如下表所示:偏移量字节数含义0x188程
  • 2024-08-25Linux 进程 | 进程地址空间
    文章目录进程地址空间程序地址空间进程地址空间进程地址空间程序地址空间地址空间一共有如下的几个区域,从下到上地址逐渐增加,其中栈区的空间是从上往下使用,即从高地址往低地址增长;堆区的空间是从下往上使用,即从低地址往高地址增长,需要注意的是,在不同位操作系统下
  • 2024-08-20Linux多进程
    进程的概述进程是计算机科学中的一个基本概念,它指的是在操作系统中正在执行的程序的实例在Linux操作系统中,进程是程序执行的实体,是资源分配的基本单位在在Ubuntu中,通过使用ps命令可以查看当前的进程列表psaux进程与程序的区别定义:程序:程序是一组指令的集合,它们被编写
  • 2024-08-04内核简介
    Linux内核基础楔子这部分的内容首先要回忆一下计算机的基础知识,基本的计算机结构包括CPU(算数逻辑单元ALU、控制单元CU)、存储器、输入和输出。CPU和其它设备是通过总线连接的。CPU执行的基础被称为指令集,CPU执行存储器存取指令时:CPU发出存取信号,然后就从存储器存取数据。存取器通
  • 2024-07-15全网最最实用--基于Mac ARM 芯片实现操作系统MIT 6.S081-lab3
    文章目录实验三页表一、代码理解1.对于内存布局定义的理解2.对虚拟内存的理解3.对分配和释放物理内存的理解--删除或者分配物理内存为啥不需更改相应的页表?二、Printapagetable1.题目描述2.题目思考3.提交实验三、Akernelpagetableperprocess1.题目描述2.题目
  • 2024-07-06【Linux】:程序地址空间
    朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成!C语言专栏:C语言:从入门到精通数据结构专栏:数据结构个 人 主 页 :stackY、C++专栏  :C++Linux专 栏 
  • 2024-07-01内存管理-0-开篇
    一、什么是内存管理1.基础内存管理可以大致分为5块(1)物理内存管理node、zone、page、buddy-system、slab(2)虚拟内存管理虚拟内存分用户空间和内核空间,用户空间又分为很多段(代码段、数据段、栈、堆、mmap映射区、动态共享库等等);内核空间也是分为很多区域的,比如低端内存
  • 2024-06-20学习笔记:计算机内存管理
    虚拟内存    单片机是没有操作系统的,所以每次写完代码,都需要借助工具把程序烧录进去,这样程序才能跑起来。        单片机的CPU是直接操作内存的「物理地址」。        在这种情况下,要想在内存中同时运行两个程序是不可能的。如果第一个程序在20
  • 2024-05-26Linux线程:线程的概念及定义
    目录一、线程的概念1.1什么是线程 1.2Linux中线程和进程的关系1.3页表的结构及实现二、线程的创建及使用2.1pthread_t一、线程的概念1.1什么是线程1、在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。2、一切