一、linux模型 Linux系统一般有4个主要部分 内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。 1.linux内核 内核(Kernal)是整个操作系统的核心,管理着整个计算机的软硬件资源。内核控制整个 ...
分类:
其他好文 时间:
2020-07-08 23:14:08
阅读次数:
91
PE文件加载带内存中的时候 都存在文件到内存的映射 RVA 相对虚拟地址 当文件到内存的映射关系如下时 1.当RVA相对偏移地址为5000时,求文件偏移 5000-1000(因为在第一个节区)+400 公式 ...
分类:
其他好文 时间:
2020-07-06 11:20:32
阅读次数:
54
一、TLS 线程本地存储(Thread Local Storage),字面意思就是专属某个线程的存储空间。变量大体上分为全局变量和局部变量,一个进程中的所有线程共享地址空间,这个地址空间被划分为几个固有的区域,比如堆栈区,全局变量区等,全局变量存储在全局变量区,虚拟地址固定;局部变量存储在堆栈区,虚... ...
分类:
编程语言 时间:
2020-07-06 10:50:45
阅读次数:
58
https://zhuanlan.zhihu.com/p/107096130假设Cache大小8KB,CacheLine大小256B,32行CacheLine,CPU是32位的。4KB的页。32位虚拟地址 = 20位虚拟页号+12位页内偏移虚拟页号物理页号0x0xVIVT虚拟地址作为索引以及tag域... ...
分类:
系统相关 时间:
2020-07-02 23:24:46
阅读次数:
117
一、Cortex-M的定位 二、内存管理单元 内存管理单元简称MMU,它负责虚拟地址到物理地址的映射,并提供硬件机制的内存访问权限检查。 在多用户、多进程的操作系统中,MMU使得各个用户进程都有独立的地址空间。 任何微控制器都存在一个程序能够产生的地址集和,被称为虚拟地址范围。 以32位机为例,虚拟 ...
分类:
系统相关 时间:
2020-06-17 12:52:35
阅读次数:
62
CPU 生成的地址通常称为逻辑地址,而内存单元看到的地址(即加载到内存地址寄存器的地址)通常称为物理地址。 编译时和加载时的地址绑定方法生成相同的逻辑地址和物理地址。然而,执行时的地址绑定方案生成不同的逻辑地址和物理地址。在这种情况下,我们通常称逻辑地址为虚拟地址,本节我们对逻辑地址和虚拟地址不加区 ...
分类:
编程语言 时间:
2020-06-13 00:14:40
阅读次数:
73
一、什么是重定位? 重定位就是你本来这个程序理论上要占据这个地址,但是由于某种原因,这个地址现在不能让你霸占,你必须转移到别的地址,这就需要基址重定位。 二、为什么需要重定位? 这个和上面的问题的解释是一样的。不是说过每个进程都有自己独立的虚拟地址空间吗?既然都是自己的,怎么会被占据呢?对于EXE应 ...
分类:
其他好文 时间:
2020-05-28 16:45:26
阅读次数:
129
1 概述 linux常见的五大进程间通信方式包括:共享内存、管道、消息队列、信号量、Socket。 2 共享内存 定义:将同一块物理内存映射到不同的进程的虚拟地址空间中,实现不同进程间对同一资源的共享。 特定:(1)不用从用户态到内核态的频繁切换和拷贝数据,直接从内存中读取就可以。 (2)共享内存是 ...
分类:
系统相关 时间:
2020-05-28 01:02:42
阅读次数:
79
真正的零拷贝有两种方式: mmap+write Sendfile mmap 是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对应关系。 这样就可以省掉原来内核 Read 缓冲区 Copy 数据到用户缓冲区,但是还是需要内核 ...
分类:
其他好文 时间:
2020-05-20 18:34:29
阅读次数:
72
续更... 学习视频:https://www.bilibili.com/video/BV1iW411d7hd?p=2 学习书本:《深入理解计算机系统》第3版。 信息存储:8位=1字节;内存所有可能地址集合称为“虚拟地址空间”;每个程序对象可以视为一个“字节快”,程序本身是一个字节序列。 进制转换:十 ...
分类:
其他好文 时间:
2020-05-14 22:15:23
阅读次数:
82