当前位置: 首页 > 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;
}

相关文章:

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

低2G为进程空间 开始地址结束地址大小属性00xFFFFF1M保留0x1000000x102FFF栈不固定位置、大小0x1030000x143FFF堆不固定位置、大小0x400000主程序文件不固定位置、大小加载dll不固定位置、大小0x7ffdd000TIB位置,大小编译时固定0x7FFFE000系统与用户共享数据块位置…...

入门Python必读的流程控制语句

流程控制 if-else 语法: if 条件:语句else:语句 例子: a1 #使用方式一 if a>1:print(大于1) else:print(小于等于1) #使用方式二 print(大于1) if a>1 else print(小于等于1) 输出: >>小于等于1 >>小于等于1 if-elif-else 语法: if 条件:语句elif 条件:…...

day05-进程通信

1> 将互斥机制的代码实现重新敲一遍 代码&#xff1a; #include<myhead.h>int num520;//临界资源//1.创建互斥锁 pthread_mutex_t fastmutex;//定义任务函数 void *task1(void *arg){printf("1111111\n");//3.临界区上面获取锁资源&#xff08;上锁&#…...

如何将OpenAI Sora生成的普通AI视频转化为Vision Pro的空间视频,沉浸式体验

【基于AI的Vision Pro空间视频】工作流:这个工作流程用于将2D视频转换为适用于 Vision Pro的Spatial视频: 1、使用Deep3D将2D视频转换为3D SBS: 使用Deep3D工具将2D视频转换为3D SBS格式: 转换例子:Prediction– lucataco/deep3d – Replicatehttps://replicate.com/…...

爬虫基础(下)

requests模块可以用来获取网络数据&#xff1b; 那么对于爬虫来说&#xff0c;要获取下图网页中的内容&#xff0c;就需要网页的URL。 复制链接方法是&#xff0c;打开网页&#xff0c;点击链接框&#xff0c;右键选择复制。 requests.get()函数可用于模拟浏览器请求网页的过…...

【八股文面试】Java基础常见面试题总结(上)

Java基础常见面试题总结(上) Java有哪些特性 简单易学&#xff1b;面向对象&#xff08;封装&#xff0c;继承&#xff0c;多态&#xff09;&#xff1b;平台无关性&#xff08; Java 虚拟机实现平台无关性&#xff09;&#xff1b;支持多线程&#xff08; C 语言没有内置的多…...

c++:蓝桥杯的基础算法2(构造,模拟)+练习巩固

目录 构造 构造的基础概念&#xff1a; 模拟 练习1&#xff1a;扫雷 练习2&#xff1a;灌溉 练习3&#xff1a;回文日期 构造 构造的基础概念&#xff1a; 构造算法是一种用于解决特定问题的算法设计方法。在C语言中&#xff0c;构造算法通常涉及到创建一个函数或类来实…...

C++ 和 C#的区别

如是我闻&#xff1a; C#&#xff08;发音为 “C sharp”&#xff09;和C是两种流行的编程语言&#xff0c;它们各有特点和用途。下面是这两种语言的一些主要区别&#xff1a; 设计理念和用途: C: 是一种多范式编程语言&#xff0c;支持过程化编程、面向对象编程、泛型编程等。…...

2.14日学习打卡----初学Zookeeper(一)

2.14日学习打卡 目录: 2.14日学习打卡Zookeeper概念一. 集中式到分布式单机架构集群架构什么是分布式三者区别 二. CAP定理分区容错性一致性可用性一致性和可用性的矛盾一致性和可用性如何选择 三. 什么是Zookeeper分布式架构Zookeeper从何而来Zookeeper介绍 四. 应用场景数据发…...

SkyWalking之APM无侵入可观测原理分析

一、 简介&#xff08;为什么需要用到可观测能力&#xff09; 随着微服务的开发模式的兴起&#xff0c;早期的单体架构系统已拆分为很多的子系统&#xff0c;各个子系统封装为微服务&#xff0c;各服务间通过HTTP协议RESET API或者RPC协议进行调用。 在单体服务或者微服务较少的…...

Missing artifact org.yaml:snakeyaml:jar:1.29

关于导入本地maven项目pom.xml出现missing artifact org....报错处理 环境变量配置maven&#xff0c;eclipse中配置maven&#xff0c;重启eclipse。...

三opencv源码解压及环境变量配置

1.双击opencv-3.4.6-vc14-vc15.exe 2.选择解压的路径&#xff0c;点击【extract】 3.设计环境变量...

vue实时监控视频播放的进度,并在播放80%位置触发相应操作

video标签&#xff1a;播放时触发canplay事件 <video:src"filePath"controlsv-if"filePrefix mp4 || filePrefix avi"canplay"getVideoDur()"id"myVideo"class"preview"></video>canplay触发的方法&#xff…...

HTML+CSS滚动条样式如何单独给firefox设置 scrollbar-width: none;,而不影响其他浏览器

要在Firefox中单独设置滚动条样式,你可以使用​​@-moz-document​​规则。这个规则允许你为特定的浏览器或浏览器引擎应用样式。 下面是一个例子,演示如何在Firefox中隐藏滚动条: @-moz-document url-prefix() {/* 在这里添加只对Firefox生效的样式 */body {scrollbar-wi…...

《Go 简易速速上手小册》第2章:控制结构与函数(2024 最新版)

文章目录 2.1 条件语句:决策的艺术2.1.1 基础知识讲解2.1.2 重点案例:用户角色权限判断实现用户角色权限判断扩展功能实现代码功能扩展:添加或删除用户2.1.3 拓展案例 1:成绩等级判断实现成绩等级判断功能实现代码扩展功能:详细反馈...

基于EasyCVR视频汇聚系统的公安网视频联网共享视频云平台建设思路分析(一)

随着社会的发展和科技的进步&#xff0c;视频监控系统在各个领域的应用越来越广泛&#xff0c;视频云平台建设已经成为了行业数字化转型的重要一环。公安网视频汇聚联网共享云的建设需要充分考虑技术、架构、安全、存储、计算等多方面因素&#xff0c;以确保平台的稳定性和可用…...

HQYJ 2024-2-21 作业

复习课上内容&#xff08;已完成&#xff09;结构体字节对齐&#xff0c;64位没做完的做完&#xff0c;32位重新都做一遍&#xff0c;课上指定2字节对齐的做一遍&#xff0c;自己验证&#xff08;已完成&#xff09;两种验证大小端对齐的代码写一遍复习指针内容&#xff08;已完…...

LeetCode每日一题【283. 移动零】

题目&#xff1a; 思路&#xff1a; 双指针&#xff0c;i和j。当i和j所指元素都不为0时&#xff0c;他们同时向后走&#xff0c;当j所指元素为0时&#xff0c;只走j&#xff0c;i固定。这样下来&#xff0c;i就指向最后一个非0元素的下一个位置&#xff0c;j就指向那些0元素之…...

CF1200E Compress Words

题目描述 Amugae has a sentence consisting of n words. He want to compress this sentence into one word. Amugae doesnt like repetitions, so when he merges two words into one word, he removes the longest prefix of the second word that coincides with a suffix…...

ip https证书推荐

公网IP地址是每个连接到互联网的设备所必需的标识。公网IP地址是用于在互联网上唯一标识一个设备的IP地址&#xff0c;它由一组由四个数字组成的字符串组成&#xff0c;每个数字在0到255之间。随着互联网的发展&#xff0c;只有公网IP地址的站点也开始重视传输信息安全&#xf…...

Qwen3.5-27B部署教程(Docker进阶):自定义模型路径、挂载外部存储与日志卷

Qwen3.5-27B部署教程&#xff08;Docker进阶&#xff09;&#xff1a;自定义模型路径、挂载外部存储与日志卷 1. 环境准备与快速部署 在开始之前&#xff0c;请确保您的系统满足以下要求&#xff1a; 硬件要求&#xff1a;至少4张RTX 4090 D 24GB显卡软件要求&#xff1a;已…...

Multisim 13.0 仿真 LC 振荡器:从起振到稳定,手把手教你分析波形与频率稳定度

Multisim 13.0 仿真 LC 振荡器&#xff1a;从起振到稳定&#xff0c;手把手教你分析波形与频率稳定度 在电子工程领域&#xff0c;LC振荡器作为基础电路之一&#xff0c;其设计与分析能力是每位硬件工程师的必修课。Multisim作为业界广泛使用的电路仿真软件&#xff0c;为我们…...

从ReVeal到实战:基于图神经网络的智能漏洞检测技术演进与落地思考

1. 图神经网络在漏洞检测中的崛起 第一次接触代码漏洞检测领域时&#xff0c;我被传统方法的繁琐流程震惊了。记得当时需要手动定义数百条规则来检测缓冲区溢出漏洞&#xff0c;每次遇到新漏洞类型就得加班加点补充规则。直到2018年遇到ReVeal论文&#xff0c;才发现图神经网络…...

C# + Halcon实战:药盒上多个条形码一次扫全的配置与代码详解(.NET Framework 4.8)

C# Halcon实战&#xff1a;药盒多条形码高精度识别系统开发指南 在药品包装生产线上&#xff0c;一个药盒往往同时印有追溯码、物流码和防伪码等多种条形码。传统扫码设备通常需要多次定位才能完成读取&#xff0c;而基于Halcon的机器视觉方案能实现毫秒级的多码同步识别。本文…...

终极指南:OpenAI Python SDK推理强度参数调优实战

终极指南&#xff1a;OpenAI Python SDK推理强度参数调优实战 【免费下载链接】openai-python The official Python library for the OpenAI API 项目地址: https://gitcode.com/GitHub_Trending/op/openai-python 掌握OpenAI Python SDK推理强度参数配置&#xff0c;让…...

LabelImg图像标注工具:从零开始创建AI训练数据的完整指南

LabelImg图像标注工具&#xff1a;从零开始创建AI训练数据的完整指南 【免费下载链接】labelImg LabelImg is now part of the Label Studio community. The popular image annotation tool created by Tzutalin is no longer actively being developed, but you can check out…...

告别配置噩梦:OpCore-Simplify让黑苹果EFI构建效率提升90%

告别配置噩梦&#xff1a;OpCore-Simplify让黑苹果EFI构建效率提升90% 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是许多技术爱好者…...

利用M2LOrder实现安全高效的内网穿透方案设计与验证

利用M2LOrder实现安全高效的内网穿透方案设计与验证 1. 引言 你有没有遇到过这样的麻烦事&#xff1f;自己电脑上开发了一个网站或者服务&#xff0c;想给同事或者客户临时看一下效果&#xff0c;结果发现对方根本访问不了。原因很简单&#xff0c;你的服务跑在公司的内网或者…...

lingbot-depth-pretrain-vitl-14效果展示:多光照/反光表面深度补全自然边缘案例

lingbot-depth-pretrain-vitl-14效果展示&#xff1a;多光照/反光表面深度补全自然边缘案例 1. 引言&#xff1a;当深度图遇上“反光杀手” 你有没有遇到过这种情况&#xff1f;用深度相机扫描一个光滑的桌面&#xff0c;或者对着窗户拍一张照片&#xff0c;结果生成的深度图…...

Nunchaku-FLUX.1-dev副业变现路径:AI绘画接单全流程(接单→提示词→交付)

Nunchaku-FLUX.1-dev副业变现路径&#xff1a;AI绘画接单全流程&#xff08;接单→提示词→交付&#xff09; 1. 从兴趣到收入&#xff1a;为什么选择Nunchaku-FLUX.1-dev做副业 如果你对AI绘画感兴趣&#xff0c;并且拥有一张消费级的显卡&#xff0c;比如RTX 3090或4090&am…...