当前位置: 首页 > 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…...

无碳小车S型走不直?可能是你的转向机构参数没调对(附ProE运动仿真分析)

无碳小车S型轨迹优化&#xff1a;基于ProE运动仿真的转向机构参数调试指南 在大学生工程训练竞赛中&#xff0c;无碳小车的S型轨迹表现往往是决定胜负的关键。许多团队在实物调试阶段都会遇到一个共同难题&#xff1a;明明按照理论计算完成了设计&#xff0c;小车却总是走不出理…...

告别手动操作:用Python自动化COMSOL仿真的3个关键突破

告别手动操作&#xff1a;用Python自动化COMSOL仿真的3个关键突破 【免费下载链接】MPh Pythonic scripting interface for Comsol Multiphysics 项目地址: https://gitcode.com/gh_mirrors/mp/MPh 你是否也曾为COMSOL的重复性仿真任务感到疲惫&#xff1f;每天花费数小…...

正点原子STM32MP135实战——OP-TEE安全启动与设备树深度适配

1. OP-TEE与STM32MP135开发板简介 第一次接触OP-TEE时&#xff0c;我也被这个专业名词唬住了。简单来说&#xff0c;它就像是你手机里的保险箱&#xff0c;专门用来存放和处理敏感信息&#xff08;比如指纹、支付密码&#xff09;。在STM32MP135这块开发板上实现OP-TEE&#xf…...

OpenClaw从入门到应用——工具(Tools):技能配置

通过OpenClaw实现副业收入&#xff1a;《OpenClaw赚钱实录&#xff1a;从“养龙虾“到可持续变现的实践指南》 所有与技能相关的配置都位于 ~/.openclaw/openclaw.json 中的 skills 字段下。 {skills: {allowBundled: ["gemini", "peekaboo"],load: {ext…...

开发过程中如何利用Taotoken的容灾路由保障服务高可用

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 开发过程中如何利用Taotoken的容灾路由保障服务高可用 在构建依赖大模型API的企业级应用时&#xff0c;服务的持续可用性是核心考量…...

FanControl风扇控制软件:5分钟快速上手指南,轻松解决电脑噪音与散热难题

FanControl风扇控制软件&#xff1a;5分钟快速上手指南&#xff0c;轻松解决电脑噪音与散热难题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gi…...

新消费品牌的详情页,不该是产品说明书

很多企业做电商页面时&#xff0c;会把重点放在“展示产品”上。图片要好看&#xff0c;卖点要完整&#xff0c;参数要齐全&#xff0c;详情页要显得丰富&#xff0c;品牌故事要讲出来&#xff0c;工艺优势要摆出来&#xff0c;证书、原料、产地、功能、包装、规格、适用人群&a…...

英雄联盟LCU工具集LeagueAkari:终极自动化游戏助手完整指南

英雄联盟LCU工具集LeagueAkari&#xff1a;终极自动化游戏助手完整指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款基于…...

如何用智能去重工具高效清理重复图片:AntiDupl.NET完整使用指南

如何用智能去重工具高效清理重复图片&#xff1a;AntiDupl.NET完整使用指南 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 你是否曾面对电脑里杂乱无章的图片库感到束…...

MSP430单片机低功耗设计实战:从架构到代码的灵活性解析

1. 项目概述&#xff1a;为什么是MSP430&#xff1f;如果你在嵌入式领域摸爬滚打了一段时间&#xff0c;尤其是在对功耗极其敏感的应用场景里&#xff0c;比如智能穿戴、便携医疗设备、无线传感器网络或者那些需要电池供电数年的工业传感器&#xff0c;那么“MSP430”这个名字对…...