当前位置: 首页 > news >正文

内存管理——线性内存,进程空间

低2G为进程空间

开始地址结束地址大小属性
00xFFFFF1M保留
0x1000000x102FFF不固定位置、大小
0x1030000x143FFF不固定位置、大小
0x400000主程序文件不固定位置、大小
加载dll不固定位置、大小
0x7ffdd000TIB位置,大小编译时固定
0x7FFFE000系统与用户共享数据块位置,大小编译时固定
0x7FFFF0000x7FFFFFFF4K进程空间管理列表位置,大小编译时固定

 

一个新进程创建后,第一个执行函数为proc_startup,该函数过程如下

1、初始化进程空间管理器,该数据放在0x7FFFF000固定位置

2、建立堆,全局变量,放在系统栈中,

3、建立文件列表,全局变量,

4、加载主文件

5、根据主文件加载DLL

6、转换用户态

//此函数在进程空间中运行,在整个进程生存期都不会退出,
//无法调用独属于进程的全局变量。
void proc_startup()
{//以下变量为一个进程的全局变量,保存在系统栈中PThread_Stack_Data ptsd=(PThread_Stack_Data)(lpCurrentThread->initialStack-MAIN_STRCK_PARAM);//进入该函数,进程空间已经切换//初始化进程空间管理器mem_user_virtual_init((PMEMORY_BASIC_INFORMATION)(MBI_USER_BASE));//建立 堆;ptsd->heap=mem_heap_create((PMEMORY_BASIC_INFORMATION)(MBI_USER_BASE),2,0x4000,0x4000);ptsd =(PThread_Stack_Data)(lpCurrentThread->initialStack-MAIN_STRCK_PARAM);ptsd->lpFilseList=(LPLISTS)mem_heap_alloc(ptsd->heap,0,sizeof(LISTS));list_init(ptsd->lpFilseList);FATFS fs;f_mount (&fs,	"0:",	0	);//1、将文件加载,PXosHandel xh=  krLoadLibrary(getCurrentProcess()->filepath);//初始化进程空间,//线性空间为私有DWORD pfile=xh->addr;PIMAGE_NT_HEADERS pnh=(PIMAGE_NT_HEADERS)(((PIMAGE_DOS_HEADER)pfile)->e_lfanew+pfile);//load_file(ptsd->heap,ptsd->lpFilseList,getCurrentProcess()->filepath)asm("call %0": :"r"(pnh->OptionalHeader.AddressOfEntryPoint+pfile));//2、call mainwhile (1){print_farmat_msg("m");}
}
HANDLE get_main_heap()
{return ((PThread_Stack_Data)(lpCurrentThread->initialStack-MAIN_STRCK_PARAM))->heap;
}
LPLISTS get_main_file_list()
{return ((PThread_Stack_Data)(lpCurrentThread->initialStack-MAIN_STRCK_PARAM))->lpFilseList;
}

http://www.lryc.cn/news/304144.html

相关文章:

  • 入门Python必读的流程控制语句
  • day05-进程通信
  • 如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验
  • 爬虫基础(下)
  • 【八股文面试】Java基础常见面试题总结(上)
  • c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固
  • C++ 和 C#的区别
  • 2.14日学习打卡----初学Zookeeper(一)
  • SkyWalking之APM无侵入可观测原理分析
  • Missing artifact org.yaml:snakeyaml:jar:1.29
  • 三opencv源码解压及环境变量配置
  • vue实时监控视频播放的进度,并在播放80%位置触发相应操作
  • HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器
  • 《Go 简易速速上手小册》第2章:控制结构与函数(2024 最新版)
  • 基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)
  • HQYJ 2024-2-21 作业
  • LeetCode每日一题【283. 移动零】
  • CF1200E Compress Words
  • ip https证书推荐
  • 大气颗粒物与VOCs PMF源解析技术应用
  • VSCODE中使用Vue3教程
  • Mac M2芯片配置PHP环境
  • [嵌入式系统-25]:RT-Thread -12- 内核组件编程接口 - 网络组件 - HTTP编程
  • 一个服务器实现本机服务互联网化
  • django配置视图并与模版进行数据交互
  • Java进阶
  • ⭐北邮复试刷题106. 从中序与后序遍历序列构造二叉树__递归分治 (力扣每日一题)
  • K8S更新部署docker的两种方法举例
  • Java高并发编程基础之Thread构造函数大有内涵
  • 2023年12月 Python(六级)真题解析#中国电子学会#全国青少年软件编程等级考试