电子商务网站如何进行维护和推广建设部网站官网挂证通报

news/2025/9/27 18:36:49/文章来源:
电子商务网站如何进行维护和推广,建设部网站官网挂证通报,官方网站找oem做洗发水厂家,贵阳网站建设odenetARM32位系统的内存布局图 32位操作系统的内存布局很经典#xff0c;很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB#xff0c;用户空间为1GB ~ 3GB#xff0c;内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢#xff1f; 一般处理器…ARM32位系统的内存布局图 32位操作系统的内存布局很经典很多书籍都是以32位系统为例子去讲解的。32位的系统可访问的地址空间为4GB用户空间为1GB ~ 3GB内核空间为3GB ~ 4GB。 为什么要划分为用户空间和内核空间呢 一般处理器会把运行模式分为好几个比如x86分为rang0 ~ rang3级别。ARMv7架构中又分为好几个模式比如svc模式是给内核用的usr模式是给用户态使用的。 当一个进程执行系统调用时会陷入到内核态中这个时候运行模式就从usr模式转换为svc模式这就是我们常说的内核态。处于内核态的进程是可以访问内核空间的。所以就根据CPU的运行模式划分了两个空间。 我们先看下1GB的内核空间是怎么划分的32位的系统中通常配置的物理内存通常是大于1GB的所以物理内存会划分为两部分低端内存称为线性映射区高端内存称为高端映射区。那这个分界线是怎么计算的呢在ARM32中分界线为760M。低端内存会做一比一映射到3GB ~ 3GB760M。 这里讲的线性映射就是直接把物理内存的地址映射到线性映射区中假设物理内存的DDR起始地址是0映射的时候就有一个偏移量这个偏移量就是0XC0000000page offset。线性映射的地址我们就可以很方便的完成虚拟地址到物理地址的转换只需要加减一个offset就可以。 高端内存的映射就没有线性映射那么简单了使用高端内存时需要完成动态映射。 我们先看下1GB的内核空间剩下都做什么使用了。 vmalloc区域分配的内存在虚拟地址是连续的物理页面可以是离散的。vmalloc大概占用了200M物理内存。 fixmapFix map中的fix指的是固定的意思那么固定什么东西呢其实就是虚拟地址是固定的也就是说有些虚拟地址在编译compile-time的时候就固定下来了而这些虚拟地址对应的物理地址不是固定的是在kernel启动过程中被确定的。 vectorvector区域用于映射CPU vector page大小一页4KB从0xffff0000 - 0xffff1000。 接下来看下3GB用户空间的划分方式一个进程要运行起来必然要有自己的代码段和数据段这部分在加载的时候就会被映射到虚拟地址。 堆空间:从进程的开始到1GB的这部分我们称为堆空间这部分主要是给malloc使用的。 mmap空间:1GB到3GB这部分是给mmap空间使用的mmap可以用来映射文件也可以映射匿名页面。通常用户态分配大段内存的时候Linux通常会使用mmap来完成分配。 从进程的角度看内存布局 readelf 查看程序段 接下来我们通过一个C语言程序学习下内存布局这个例子很简单用malloc函数分配了内存内存然后使用memset将该区域清零。 使用gcc编译为elf后可以使用readelf 查看该程序包含那些段。 #include stdio.h #include string.h #include stdlib.h#define SIZE (100 * 1024) void main() {char* buf malloc(SIZE);memset(buf, 0x58, SIZE);while(1)sleep(10000); }gcc -static memory_process.c -o memory_process.elf我们知道通常Linux中流行的可执行文件的格式就是elf。使用gcc编译的elf就是我们讲的elf文件目标文件除了包含了编译后的机器指令代码还包含其他链接信息比如符号表调试信息字符串等通常这些信息会根据不同的属性存放在不同的段section中这里我们只关注常见的段 。 .init程序初始化的代码段。 .text代码段程序编译完后的机器指令。 .data:初始化过的全局的静态变量还有一些局部的静态变量。 .rodata只读变量字符串常量等。 .bss未初始化的全局变量以及初始化为零的变量。 readelf 查看程序头 使用-l参数读下程序头program header它是用来描述OS是如何被映射到进程的虚拟地址空间的。 之前我们看到的30个段在这里分成了7个族并且显示每个族都包含那些段这里我们只关注叫load的族其他族主要是在程序装载的时候起到辅助作用。 第一个族里面包含inittext段他的执行权限是只读可执行的RE。起始地址0x0000000000400000大小是0x00000000000b5986。 另外一个族主要包含data和bss段他的执行权限是可读写RW。起始地址0x00000000006b6120大小是0x00000000000051b8。 进程映射的过程 地址本段在虚拟内存中的地址范围对应vm_area_struct中的vm_start和vm_end。 权限本段的权限; r-读w-写x-执行 p-私有;对应vm_flags。 偏移地址即本段映射地址在文件中的偏移对于有名映射指本段映射地址在文件中的偏移,对应vm_pgoff对于匿名映射为vm_area_struct-vm_start。 主设备号与次设备号所映射的文件所属设备的设备号对应vm_file-f_dentry-d_inode-i_sb-s_dev。匿名映射为0。其中fd为主设备号00为次设备号。 文件索引节点号对应vm_file-f_dentry-d_inode-i_ino与ls –i显示的内容相符。匿名映射为0。 映射的文件名对有名映射而言是映射的文件名对匿名映射来说是此段内存在进程中的作用。[stack]表示本段内存作为栈来使用[heap]作为堆来使用其他情况则为无。 smaps 可以查看更多的内容 ➜ example cat /proc/5823/smaps 00400000-004b6000 r-xp 00000000 08:01 2319863 /home/zhongyi/code/example/memory_process.elf Size: 728 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 640 kB Pss: 640 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 640 kB Private_Dirty: 0 kB Referenced: 640 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd ex mr mw me dw sd 006b6000-006bc000 rw-p 000b6000 08:01 2319863 /home/zhongyi/code/example/memory_process.elf Size: 24 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 24 kB Pss: 24 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 8 kB Private_Dirty: 16 kB Referenced: 24 kB Anonymous: 16 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr mr mw me dw ac sd 006bc000-006bd000 rw-p 00000000 00:00 0 Size: 4 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 4 kB Pss: 4 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 4 kB Referenced: 4 kB Anonymous: 4 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr mr mw me ac sd 010cc000-010ef000 rw-p 00000000 00:00 0 [heap] Size: 140 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 108 kB Pss: 108 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 108 kB Referenced: 108 kB Anonymous: 108 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr mr mw me ac sd 7ffd5e0db000-7ffd5e0fc000 rw-p 00000000 00:00 0 [stack] Size: 132 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 16 kB Pss: 16 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 16 kB Referenced: 16 kB Anonymous: 16 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr mr mw me gd ac 7ffd5e100000-7ffd5e103000 r--p 00000000 00:00 0 [vvar] Size: 12 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd mr pf io de dd sd 7ffd5e103000-7ffd5e105000 r-xp 00000000 00:00 0 [vdso] Size: 8 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 4 kB Pss: 0 kB Shared_Clean: 4 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 4 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd ex mr mw me de sd ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0 [vsyscall] Size: 4 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 0 kB Pss: 0 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 0 kB Referenced: 0 kB Anonymous: 0 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: ex 堆里面匿名页面分配了108个物理内存但我们的测试程序只分配了100k物理内存这里匿名页面比分配的要大这是因为进程在装载的时候也要消耗一些匿名页面。 010cc000-010ef000 rw-p 00000000 00:00 0 [heap] Size: 140 kB KernelPageSize: 4 kB MMUPageSize: 4 kB Rss: 108 kB Pss: 108 kB Shared_Clean: 0 kB Shared_Dirty: 0 kB Private_Clean: 0 kB Private_Dirty: 108 kB Referenced: 108 kB Anonymous: 108 kB LazyFree: 0 kB AnonHugePages: 0 kB ShmemPmdMapped: 0 kB FilePmdMapped: 0 kB Shared_Hugetlb: 0 kB Private_Hugetlb: 0 kB Swap: 0 kB SwapPss: 0 kB Locked: 0 kB THPeligible: 0 VmFlags: rd wr mr mw me ac sd 根据以上信息可以绘制出测试程序内存的布局图。 测试程序进程的elf这里只列出了常用的段。代码段的VMA属于page cache映射这里把init段text段rodata段分为一个族因为他们具有相同的权限在进程加载的时候会映射到代码段的VMA中。 数据段的VMA属于匿名映射bssdata段具有相同的权限在OS加载时会映射到数据段的VMA中。 从数据段开始的地方就属于堆空间我们在程序中用malloc分配了100K空间这100K大小也是在堆空间有对应的位置存在。 另外就是栈的VMA进程有属于自己的VMA的栈。 以上就介绍了进程的ELF如何和进程的地址空间映射起来的。 64位系统的布局图 64位系统可以访问的空间就变得很大了。不过是ARM还是X86实际的物理地址都不会用到64根地址线通常是使用了48根地址线。而且划分的用户空间和内核空间都是非常大的。 大家可以看这张图把空间分为了三部分一部分是内核空间一部分是非规范区域大家都不使用的最后是用户空间。 用户空间0x0000_0000_0000_0000到0x0000_ffff_ffff_ffff一共有256TB。 非规范区域 内核空间0xffff_0000_0000_0000到0xffff_ffff_ffff_ffff。一共有256TB。 内核空间又做了如下细分 vmalloc区域vmalloc函数使用的虚拟地址空间kernel image也在vmalloc区域内核镜像的起始地址 KIMAGE_ADDR TEXT_OFFSET TEXT_OFFSET是内存中的内核镜像相对内存起始位置的偏移。 vmemmap区域内存的物理地址如果不连续的话就会存在内存空洞稀疏内存vmemmap就用来存放稀疏内存的page结构体的数据的虚拟地址空间。 PCI I/O区域pci设备的I/O地址空间 Modules区域内核模块使用的虚拟地址空间 normal memory线性映射区范围是【0xffff_8000_0000_0000, 0xffff_ffff_ffff_ffff】, 一共有128TB, 但这里代码对应的是memblock_start_of_DRAM()和memblock_end_of_DRAM()函数。 memory根据实际物理内存大小做了限制所以memroy显示了实际能够访问的内存区。 MLM(__phys_to_virt(memblock_start_of_DRAM()), (unsigned long)high_memory)) high_memory __va(memblock_end_of_DRAM() - 1) 1;最终是通过dts或acpi中配置的memory节点确定的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一般路人向第39次CSP认证

一般路人向第39次CSP认证Q1 第一题十分水,照着他意思来就行了,十来分钟写出来交上去,不行。反复确认直到半个小时,发现交到第二题上去了。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int m, n; do…

1748:约瑟夫问题

题目 总时间限制: 1000ms 内存限制: 65536kB 描述 约瑟夫问题:有n只猴子,按顺时针方向围成一圈选大王(编号从1到n),从第1号开始报数,一直数到m,数到m的猴子退出圈外,剩下的猴子再接着从1开始报数。就这样…

做报名统计的网站微门户网站建设

前面两篇文章记录了 Spring IOC 的相关知识&#xff0c;本文记录 Spring 中的另一特性 AOP 相关知识。 部分参考资料&#xff1a; 《Spring实战&#xff08;第4版&#xff09;》 《轻量级 JavaEE 企业应用实战&#xff08;第四版&#xff09;》 Spring 官方文档 W3CSchool Spri…

net网站开发教程简易微网站模板

构造器最大的作用:创建对象. 为什么使用反射创建对象,为什么不直接来new呢? 在框架中,提供给我们的都是字符串. ----------------------------------------------------------- 使用反射创建对象: 步骤: 1);找到构造器所在类的字节码对象. 2):获取构造器对象. 3):使用反射…

安全可信网站营销活动策划方案模板

前言 Python可以用于复杂的数据分析和Web开发项目&#xff0c;还能以极少的代码行数完成令人惊叹的任务。本文将分享25个简短的Python代码示例&#xff0c;用来展示Python编程语言的魅力和效率。 1.列表推导式 Python的列表推导式提供了一种优雅的方法来创建列表。 # 将一个…

完整教程:微论-神经网络的亲情密码,权重矩阵的家庭关系论

完整教程:微论-神经网络的亲情密码,权重矩阵的家庭关系论2025-09-27 18:26 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !importan…

Ansible + Docker 部署 Apache Nifi 1.28 单用户集群

Ansible + Docker 部署 Apache Nifi 1.28 单用户集群1. 准备工作 1.1 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构10.0.0.13 arc-pro-dc01my.registry.com 16 1 500GB CentOS 7.9.2009 x86_6410.0.…

候机的队伍

候机的队伍今天乘机,小朋友们很激动地早早地去排队了。我苦口婆心地教育他们,不需要这么早排队。因为座位都是固定的,而需要早排队的理由只有两个: 1. 带了较多行李,需要早点登机占个位置。 2. 缓解焦虑,早点坐上…

个人网站怎么做支付功能抖音代运营合作协议免费

聚苯乙烯&#xff08;Polystyrene&#xff0c;简称PS&#xff09;是一种常见的合成聚合物&#xff0c;属于热塑性塑料。它是由苯乙烯单体聚合而成的&#xff0c;具有轻质、透明或半透明、电绝缘性好等特点。常见: 包装材料白色泡沫塑料&#xff08;EPS&#xff0c;用于包装、保…

网站推广策划的思路包括哪些内容广州网站建设功能

来源&#xff1a;半导体行业观察摘 要在本项目中&#xff0c;我们提出了一种基于学习的芯片布局方法&#xff0c;这是芯片设计过程中最复杂&#xff0c;最耗时的阶段之一。与以前的方法不同&#xff0c;我们的方法具有从过去的经验中学习并随着时间的推移而不断改进的能力。特别…

Keil uVision5 设置 hex 输出路径,不放Objects目录下

前言全局说明最近从 keil 2 换到 keil5, 新建项目后编译输出的 .hex 文件被放到 Objects目录下,找着不方便。一、说明 1.1 环境: Windows 7 旗舰版二、修改路径 2.1 打开项目设置选项 从工具栏打开或 从菜单里打开2.…

深入解析:【Linux】进程概念(六):进程地址空间深度解析:虚拟地址与内存管理的奥秘

深入解析:【Linux】进程概念(六):进程地址空间深度解析:虚拟地址与内存管理的奥秘pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; f…

深入解析:Metal - 5.深入剖析 3D 变换

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

垃圾收集器G1ZGC详解

垃圾收集器G1&ZGC详解 一、G1 收集器(-XX:+UseG1GC) G1(Garbage-First)是面向多处理器、大内存的服务器级收集器,核心目标是可预测的 GC 停顿时间与高吞吐量平衡。1. 核心特性Region 划分:将 Java 堆划分为最…

菠菜网站怎么做外贸网站该怎么做

控制actor在level中沿着一个spline path运动。 由finterp to 函数的输出数值来控制每一帧actor运动的距离。 从开始位置到spline path的终点的时间&#xff0c;是1/interp speed。假如我们控制actor从开头到终点运动的总时间是1秒&#xff0c;那么 interp speed就传入0.5&#…

Godot Outline

Godot OutlineGodot 4.5 这几天更新了,补全了模板缓冲, 在渲染Depth Buffer时,一般使用D32S8的类似格式。在Godot中,原本Depth Buffer就只渲染了Depth,因此S8的通道没有被使用。Stencil即特定材质可以向这个通道里…

油猴脚本(tampermonkey)离线安装文件下载,带油猴(tampermonkey)插件清单

油猴插件(Tampermonkey)是一款浏览器扩展程序(也称为“用户脚本管理器”),主要是在浏览器中安装和运行自定义脚本,用于修改或增强网页功能。目前支持Chrome、Firefox、Edge、Safari等主流浏览器,基本就是丰富浏…

树在线网页制作网站wordpress目录在哪里

一款博客网站源码 源码软件库 为大家内置了主题 清爽又强大真正的永久可用的一条源码&#xff0c;该版本为整合版本&#xff0c;内置了Joe主题&#xff0c;搭建后直接启用即可~ 安装环境要求&#xff1a; PHP 7.2 以上 MySQL, PostgreSQL, SQLite 任意一种数据库支持&#xff…

海口建网站 模板c 网站开发培训

文章目录 文章介绍下载连接安装教程 文章介绍 安装Qt5.12.2 下载连接 点击官网下载 安装包下载完毕 安装教程 点开设置&#xff0c;添加临时储存库&#xff0c;复制连接“https://download.qt.io/online/qtsdkrepository/windows_x86/root/qt/” 点击测试&#xff0…

SentinelOne与MITRE ATTCK企业版2025评估的深度解析

本文深入探讨SentinelOne对MITRE ATT&CK评估体系的立场转变,分析企业级网络安全评估标准的发展趋势,并揭示安全厂商在资源调配与产品路线图之间的战略平衡。文章聚焦于现代网络安全技术演进与实战化评估体系的内…