首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

进程虚拟地址空间

虚拟地址会通过硬件 MMU(内存管理单元)映射到实际物理地址空间中,建立虚拟地址到物理地址映射关系后,对虚拟地址读写操作实际上就是对物理地址读写操作,MMU 会将物理地址“翻译”为对应物理地址...Linux 系统下,应用程序运行在一个虚拟地址空间中,所以程序中读写内存地址对应也是虚拟地址,并不是真正物理地址,譬如应用程序中读写 0x80800000 这个地址,实际上并不对应于硬件 0x80800000...针对以上一些问题,就引入了虚拟地址机制。程序访问存储器所使用逻辑地址就是虚拟地址,通过逻辑地址映射到真正物理内存上。...所有应用程序运行在自己虚拟地址空间中,使得进程虚拟地址空间和物理地址空间隔离开来,这样做带来了很多优点: ⚫ 进程与进程、进程与内核相互隔离。...因为每个进程都有自己映射表,可以让不同进程虚拟地址空间映射到相同物理地址空间中。通常,共享内存可用于实现进程间通信。 ⚫ 便于实现内存保护机制。

2.5K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    物理地址和虚拟地址分布

    上一节内容学习我们知道了CPU是如何访问内存,CPU拿到内存后就可以向其它人(kernel其它模块、内核线程、用户空间进程、等等)提供服务,主要包括: 以虚拟地址(VA)形式,为应用程序提供远大于物理内存虚拟地址空间...Linux内核空间虚拟地址分布 ? 在 Kernel Image 下面有 16M 内核空间用于 DMA 操作。...Linux用户空间虚拟地址分布 ? 用户进程代码区一般从虚拟地址空间 0x08048000 开始,这是为了便于检查空指针。...Linux物理地址和虚拟地址关系 ? Linux 将 4G 线性地址空间分为2部分,0~3G 为 user space,3G~4G 为 kernel space。...虽然这样存在效率问题,但是内核毕竟可以正常访问所有的物理地址空间了。 到这里我们应该知道了 Linux 是如何用虚拟地址来映射物理地址,最后我们用一张图来总结一下: ?

    2.1K31

    物理地址和虚拟地址分布

    上一节内容学习我们知道了CPU是如何访问内存,CPU拿到内存后就可以向其它人(kernel其它模块、内核线程、用户空间进程、等等)提供服务,主要包括: 以虚拟地址(VA)形式,为应用程序提供远大于物理内存虚拟地址空间...Linux内核空间虚拟地址分布 ? 在 Kernel Image 下面有 16M 内核空间用于 DMA 操作。...Linux用户空间虚拟地址分布 ? 用户进程代码区一般从虚拟地址空间 0x08048000 开始,这是为了便于检查空指针。...Linux物理地址和虚拟地址关系 ? Linux 将 4G 线性地址空间分为2部分,0~3G 为 user space,3G~4G 为 kernel space。...虽然这样存在效率问题,但是内核毕竟可以正常访问所有的物理地址空间了。 到这里我们应该知道了 Linux 是如何用虚拟地址来映射物理地址,最后我们用一张图来总结一下: ?

    2.1K111

    windows下串口编程,串口操作类封装

    以往都是在嵌入式设备中经常操作串口,或者使用QT串口类。在Win32中处理串口也是有办法,操作文件打开和读写进行串口操作。使用ReadFile、WriteFile函数。...串口数据读取过程 串口读取事件分为两个阶段: 第一个阶段:串口执行到ReadFile()函数时,串口还没有开始传输数据,所以串口缓冲区第一个字节是没有装数据,这时候总超时起作用,如果在总超时时间内没有进行串口数据传输...它由所有由malloc,new等人返回地址组成。每个进程都有自己虚拟地址空间。虚拟地址使用在理论上受到程序地址大小限制:32位程序具有4GB地址空间; 64位程序有更多。...虚拟内存子系统将您程序使用虚拟地址映射到CPU发送到RAM芯片物理地址。 在任何特定时刻,大部分分配虚拟地址都是未映射;因此物理内存使用低于虚拟内存使用。...如果访问已分配但未映射虚拟地址,操作系统会无形地分配物理内存并将其映射。 如果不访问虚拟地址,操作系统可能会取消映射物理内存。

    2.4K10

    Linux 串口基本用法

    查看Linux本机串口: 1、查看串口是否可用 如果需要查看这个串口设备输出: cat ttyUSB0 如果需要对这个设备输入: echo yaoxu > ttyUSB0 常用调试工具有: minicom...2、查看串口名称使用 ls -l /dev/ttyS* 一般情况下串口名称全部在dev下面,如果你没有外插串口卡的话默认是dev下ttyS*,一般ttyS0对应com1,ttyS1对应com2,当然也不一定是必然...; 3、查看串口驱动 cat/proc/tty/drivers/serial 4、查看串口设备 dmesg | grep tty* 5、查一下板子上串口有没有设备 grep tty/proc/devices...PC上串口一般是ttyS,板子上Linux串口一般叫做ttySAC; 串口权限问题 临时调试解决 在使用串口进行通信时,经常需要使用指令来赋予用户读写权限 $ sudo chmod 777 /dev.../ttyUSB0 但这样权限是一次性 每次重启或者关闭计算机,插拔USB串口都无效了,炸裂!

    10K41

    Java串口编程:串口数据发送与监听读取「建议收藏」

    大家好,又见面了,我是你们朋友全栈君。 本人在近期开发工作中遇到向串口发送设备控制指令需求,遂对串口编程进行了略微深入钻研,在此对自己一些心得和经验进行总结,以供大家参考与交流。...当然如果自己设备上有串口的话也可以不用创建虚拟串口,只需要将一个串口数据发送引脚(引脚3,如图 2所示)和另一个串口数据接收引脚(引脚2)使用一根铜线链接即可实现数据收发。...如果设备上只有一个串口,要实现串口数据收发,可以将串口引脚2和引脚3使用铜线相连接,这样从本串口发送数据就会通过本串口接收到。...SerialPort类同样代表本地串口,不过其代表是打开串口,可以通过该类实例方法close关闭已经打开串口,也可以通过该类实例方法获取串口输入输出流,实现往串口数据读写操作。   ...,当有数据到达串口时候就会触发事件,在事件响应方法中读取串口接收到数据。

    6.2K20

    你应该学会串口仿真

    开工第一天,就让自己动手学起来吧,小猿带你一步一步成长为一名合格嵌入式开发人员,在嵌入式开发过程中,尤其是在硬件平台没有就位时候,我们需要仿真我们软件功能,而串口绝对是一个在嵌入式开发中经常会用到外设...,所以对串口仿真就显得尤为重要,辣么你会不会呢,速来围观吧 我们以IAR为例来仿真串口通信,在新版IAR欢迎界面可以看到 ?...在Product explorer里面有许多内容,点击进去就可以找到对串口和定时器仿真例程,和非常详细说明文档。在AdvancedDebugging 中有串口仿真的例子和定时器仿真的例子。...点击打开仿真串口,同时可以打开连接文档参考建立自己仿真工程。 ? 说明文档 ? 工程如下: ? 可以看到通过Terminal I/O串口输出串口仿真结果。...稍加修改就可以在自己项目中实现串口仿真。 ? 亲测,非常好用和实用,是您开发好帮手。更多详细功能需要你自己去挖掘,这里不在赘述。

    1.2K70

    鸿蒙系统开发教程_韦东山 2-1移植RTOS需要做

    移植最小系统要做几件事 串口相关 打印(只是打印调试信息) 串口驱动(可发可收,APP执行printf时可以从串口打印,所以需要驱动) MMU(Memory Management Unit,内存管理单元...)设置:虚拟地址与物理地址 完善中断子系统 提供系统tick时钟 为串口驱动实现基于中断读取字符函数 实现存储设备驱动程序 在存储设备上烧录文件系统 3.1 串口相关 与Linux串口驱动相比...,鸿蒙串口驱动极大简化了。...对于输入:使用中断,我们只需要提供底层硬件相关代码。 要注意:使用虚拟地址。...示例如下 3.2.2 地址映射 使能MMU后,CPU发出地址被称为"虚拟地址",它不是直接发送给硬件,而是发给MMU MMU根据页表 进行权限判定 转换为物理地址,发给外设 运行app1时

    1.1K10

    韦东山鸿蒙移植01-移植RTOS需要做

    )设置:虚拟地址与物理地址 完善中断子系统 提供系统tick时钟 为串口驱动实现基于中断读取字符函数 实现存储设备驱动程序 在存储设备上烧录文件系统 3.1 串口相关 与Linux...串口驱动相比,鸿蒙串口驱动极大简化了。...对于输入:使用中断,我们只需要提供底层硬件相关代码。 要注意:使用虚拟地址。...3.2.2 地址映射 使能MMU后,CPU发出地址被称为"虚拟地址",它不是直接发送给硬件,而是发给MMU MMU根据页表 进行权限判定 转换为物理地址,发给外设 运行app1时,CPU发出...3.3.2 串口接收数据中断 使用串口接收数据时,如果使用"查询"方式,低效并且费电。 一般都使用中断方式。

    1.5K41

    用户态进程如何得到虚拟地址对应物理地址?

    一般我们不需要从用户态得到进程虚拟地址对应物理地址,因为一般来说用户进程是完全不关心物理地址。 少数应用场景下,用户可能会关心,比如在用户态做DMA场景(如DPDK之类)。...还有一些场景,比如想调试剖析每一页内存占用情况,是否swap出去了等。 从用户态得到虚拟地址对应物理地址,我们不可能去walk进程page table,也没有权限。...在/proc/pid/下面有个文件叫pagemap,它会每个page,生成了一个64bit描述符,来描述虚拟地址这一页对应物理页帧号或者SWAP里面的便宜,详见文档: linux/Documentation...不同体系架构MMU不同,页表格式也不同,但是pagemap这个接口与具体页表格式无关,可以说都被抽象化了。...下面我们忽略swap影响(假设关闭了swap或者page一直是pin状态),从DPDK抄一段虚拟地址转换为物理地址代码: #define phys_addr_t uint64_t #define

    3.8K21

    Linux可执行文件与进程虚拟地址空间

    Linux可执行文件与进程虚拟地址空间 一个可执行文件被执行同时也伴随着一个新进程创建。...Linux会为这个进程创建一个新虚拟地址空间,然后会读取可执行文件文件头,建立虚拟地址空间与可执行文件映射关系,然后将CPU指令指针寄存器设置成可执行文件入口地址,然后CPU就会从这里取指令执行...代码段中存放是可执行二进制指令,数据段存放初始化过变量,BSS段存放未初始化变量,从装载角度,把这些段称为segment。 32位虚拟地址空间 ? 64位虚拟地址空间 ?...Linux将进程虚拟地址空间中一个段叫做虚拟内存区域(VMA)。在/proc目录下,可以查看一个进程虚拟地址空间,通过命令 cat /proc/pid/maps ?...segment映射到进程虚拟地址空间中一个VMA中。

    4.3K30

    基于MATLAB GUI串口通信

    之前学过单片机 对于串口通信比较了解 最近在学习MATLAB 发现它还可以控制串口 于是通过MATLAB GUI创建了一个串口通信小软件 效果如下 如果没有单片机或者其他硬件的话 我们可以直接用软件模拟串口...本人选择了Configure Virtual Serial Port Driver 这个软件 软件网上就有 下一个使用几天就行了 选择两个没有被占用串口 点击Add pair 会发现左边多出了一对串口...这对串口现在已经连接在了一起 我是COM1和COM2 现在如果往 COM1发信息 那么COM2就会接收到 之后我通过MATLAB uicontrol 函数搭建了 UI界面...并逐步实现了 串口通信 布局代码如下 打开串口以及接收数据 以及动态显示代码如下 function openserial(h1,h2,h3,h4,h5,h6,h7) global s...发送数据 在 MATLAB中打开相应串口并使能接收 就看到数据显示了 如果在串口中一直发送数据 同时在MATLAB中点击使能绘图 在Axes框中就会出现 每一时刻接收 数据

    1.2K21

    串口调试助手是做什么 串口调试助手如何下载

    随着科技发展,计算机运用有很大意义上普及,但是如果计算机出了什么问题,一般人是不清楚。但是在没有特别严重问题时,是可以通过计算机自己检测。...例如串口调试,就是通过计算机自动检测,来查看计算机串行端口进行调试设备。那么串口调试助手是做什么?...image.png 一、串口调试助手作用 主要作用是搜索串口,对计算机中端口检测,然后列举出来;也可以设置或者提高波特率;可以设置串口输出路线信号,还可以读取串口输出路线信号,大概是四个输出路线...二、串口调试助手如何下载 可以去相关软件网站搜索,可以询问周围对计算机很精通的人,让其推荐一下,然后再直接搜索调试助手官方网站,进行下载。...串口调试助手可以方便对串口相关检查和应用。自己操作起来会比较麻烦,建议下载一个调试助手软件,会非常方便,并且下载也不需要付费,只需要占一点内存,下载之后使用也很简单,并且正规途径下载,安全放心。

    4.8K30

    【Python】简单串口收发数据

    实现效果: Python端运行时候打开COM3,然后准备从键盘获取数据,并发送,同时接收串口调试助手COM1发送过来数据 Python端: ? 串口调试助手: ?...串口调试助手使用COM1,能显示Python端发过来数据,当点击发送时候,Python端暂时不会显示,因为Python端读取键盘那个方法是堵塞,当Python端发送时候才同时把数据显示出来(如果想一发送就显示...1、安装pyserial(类似于java库,用于调串口函数) 2、安装VSPD(因为没有硬件,用这个虚拟串口) 1、由于我用是win7 64位,无法安装pyserial-2.7.win32.exe...,然后左边会显示出来,要删除的话选中COM,点右边下面那个删除(一般是这个串口被卡住了才这么干)。..." #串口 baudRate=9600 #波特率 ser=serial.Serial(serialPort,baudRate,timeout=0.5) print "参数设置:串口=

    5.2K30

    AccessPort 小巧串口监控软件

    优点: 完全免费 操作简单 可查看波特率等串口配置信息 缺点: 不能监控已打开串口 已打开串口必须先关闭,运行accessport监控后重新打开,才能监控到数据 监控USB串口过程中不能拔掉USB串口...否则关闭监控或关闭accessport时会导致系统蓝屏 如果需要拔出USB串口,需要提前停止监控功能。...部分长数据帧可能无法查看完整报文 Access Port 概述 本软件是一款集端口调试、数据拦截功能为一体调试工具,简单、易用、功能强大;可以调试串口程序或下位机程序,也可以拦截通过串口数据流、控制流...简要描述: 1.用于串口调试,支持常用110-256000波特率,支持自定义波特率。 2.能以字符或十六进制接收或发送任何数据,能发送、接收任意大小文件。...20.支持串口监控功能,可以监控串口设置以及收发数据。 21.在线自动更新提示功能,当有可用新版本时提示用户下载。 22.本程序线程安全,可以同时启动多个副本调试多个串口

    11.9K20

    C#中串口通信

    RS-232-C :也称标准串口,是目前最常用一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定用于串行通讯标准。...RJ-45接口 :是以太网最为常用接口,RJ45是一个常用名称,指的是由IEC(60)603-7标准化,使用由国际性接插件标准定义8个位置(8针)模块化插孔或者插头。 串口属性 ? 1....PortName 串口名    默认值COM1 串口对于操作系统来说是一个文件,如果设置PortName为本机不存在串口名(即文件名),如“COM7”或“COMK”,Open()打开串口将失败,提示“...当然没有校验位也是可以。对于偶和奇校验情况,串口会设置校验位(数据位后面的一位),用一个值确保传输数据有偶个或者奇个逻辑高位。...这样使得接收设备能够知道一个位状态,有机会判断是否有噪声干扰了通信或者是否传输和接收 串口(COM)读写操作三种方式: 第1种方式是采用微软在.NET2.0推出了一个串口控件,SerialPort类

    2.7K32

    STM32串口通信

    串口是绝大多数 MCU 中不可或缺一个外设,同时也是我们开发中经常使用一种调试手段,所以在STM32学习中,串口配置使用也是必须要掌握。那么,对于新手来讲,串口是什么呢?...了解了上述要点,我们结合实例来学习它配置流程。  ① 本讲学习串口这个外设,因此要添加外设库函数文件。打开串口源文件,来看串口配置流程。...③ 接着初始化串口成员变量。...⑤ 编译下载之前,检查下载器中串口与实验板接线图。   ⑥ 确认正确接线后,我们编译工程并将代码下载到实验板中。接着打开串口助手,检查是否识别到当前端口号,正确选择后再检查串口配置。...所有都正确配置后,打开串口,在发送区发送一个字符,这时可以观察到接收区收到了它发送字符,同时用户灯也会闪烁一次,这样就说明我们串口通信是成功

    97630
    领券