1.直接使用物理地址

(1)安全风险:

用户有可能在程序中操作不当,直接操作了某个未知的物理地址,导致数据被改写。有可能导致那部分内存的程序或者设备损坏。

使用虚拟地址的话,会有相对应的保护机制。

(2)地址不确定

众所周知,编译完成后的程序是存放在硬盘上的,当运行的时候,需要将程序搬到内存当中去运行,如果直接使用物理地址的话,我们无法确定内存现在使用到哪里了,也就是说拷贝的实际内存地址每一次运行都是不确定的,比如:第一次执行a.out时候,内存当中一个进程都没有运行,所以搬移到内存地址是0x00000000,但是第二次的时候,内存已经有10个进程在运行了,那执行a.out的时候,内存地址就不一定了。

(3)效率低下

用的时候,我们一般的办法是将不常用的进程拷贝到磁盘的交换分区中,好腾出内存,但是如果是物理地址的话,就需要将整个进程一起拷走,这样,在内存和磁盘之间拷贝时间太长,效率较低。

2.虚拟地址的实现

虚拟地址实际上就相当于在物理地址和进程间引入一个第三者,一般实现方法有两种:分段映射和分页映射。

分段映射能够解决安全隐患、地址不确定问题,但是对于效率问题仍然没有很好的解决。因此引出了新的方法:分页方式。分页的方式实际上就是讲内存以4KB为单位分页(一页4KB),然后在Linux内核中提供页项目表、页表,一个大小占多个页的进程,在运行的时候,并不是所有的也都在运行,这时候将运行的页拷贝到内存,这样就缓解了效率的问题。

原文:https://www.cnblogs.com/zhuangquan/p/12157266.html

linux虚拟地址被大量占用,《Linux中为什么要使用虚拟地址》相关推荐

  1. linux系统查看串口占用,Linux 系统串口信息查看

    先确认系统启动的时候串口的信息. ECM_5412@chenfl:~$ dmesg | grep tty [ 0.000000] console [tty0] enabled [ 2.511678] ...

  2. linux php进程端口占用,linux如何查看端口占用情况

    在linux中可以使用lsof和netstat命令来查看端口占用情况,其中lsof语法为"lsof -i:端口号",netstat语法为"netstat -tunlp | ...

  3. linux 物理内存不知道怎么占用,Linux系统下如何查看物理内存占用率

    Linux下看内存和CPU使用率一般都用top命令,但是实际在用的时候,用top查看出来的内存占用率都非常高,如: Mem:   4086496k total, 4034428k used,    5 ...

  4. linux查看server端口占用,Linux查看端口占用的命令

    Linux查看端口占用的命令 apt-get install lsof lsof -i:端口号 lsof常用命令 lsof -i:8080:查看8080端口占用 lsof abc.txt:显示开启文件 ...

  5. linux system查看内存占用,Linux查看系统内存占用

    1.查看内存情况 free -h 解释下基本概念 Mem 内存的使用信息 Swap 交换空间的使用信息 total 系统总的可用物理内存大小 used 已被使用的物理内存大小 free 还有多少物理内 ...

  6. Linux查看进程是否占用,Linux 下查看哪个进程占用swap空间

    #!/bin/bash echo -e "PID\t\tSwap\t\tProc_Name" # 拿出/proc目录下所有以数字为名的目录(进程名是数字才是进程,其他如sys,ne ...

  7. Linux系统编程----12(线程概念,Linux线程实现原理,栈中ebp指针和ebp指针,线程的优缺点和共享资源)

    线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread). 更准确的定义是:线程是"一个进程内部的控制序列" 一切进程至少都有一个执行线程 线程在进程内部运行,本 ...

  8. linux 程序占内存,linux概念之程序占用内存

    1.在linux下,查看一个运行中的程序,占用了多少内存,一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存 ...

  9. linux查看内存cpu占用

    linux查看内存cpu占用 top 命令  按q退出 可以添加额外选项选择按进程或按用户查看 如: top -u gitu PID:进程id PR:进程的优先级别,越小越优先被执行 NInice:值 ...

  10. (DT系列五)Linux kernel 是怎么将 devicetree中的内容生成plateform_device【转】

    转自:https://blog.csdn.net/lichengtongxiazai/article/details/38942033 Linux kernel 是怎么将 devicetree中的内容 ...

最新文章

  1. 2014年十大战略性技术趋势
  2. jQuery中get()和eq()的区别
  3. 信息系统项目管理师历年论文题目
  4. /usr/bin/ld: cannot find -l*** 这里***可以指lapack等
  5. Java知识系统回顾整理01基础03变量03字面值
  6. CoordinatorLayout 使用综述系列(二)与AppBarLayout结合上下联动效果
  7. 环形链表得golang实现
  8. 阿里云申请免费ssl证书并配置nginx
  9. CCOMBOX下拉弹出框,因属性对话框自动隐藏而弹出框没有隐藏问题
  10. 高中计算机会考教案,高中信息技术会考模拟试题讲课教案.pdf
  11. (01)f103,4pin四脚的 oled(01)
  12. IGBT工作原理,解析IGBT工作原理及作用
  13. codesmith mysql 模板_CodeSmith代码自动生成器 JAVA模版的制作---CodeSmith+MySQL+MyEclipse 10...
  14. python自动化webdriver_轻松自动化---selenium-webdriver(python) (六)
  15. AI新贵「蓦然认知」首秀,这个和百度有点关系的公司要让机器认知世界
  16. 服务器e5系列和e5v4系列,至强E5-2600v4系列CPU一览表
  17. 用docker跑机器学习环境
  18. C++对于文件的操作(4)——更改文件指定位置的数据(在新旧数据长度不一致的情况下)
  19. 错误笔记:JavaWeb:请求的资源[/$%7BpageContext.request.contextPath%7D/login]不可用
  20. maven工程私服仓库配置(阿里云仓库)

热门文章

  1. 学校拥有计算机清单和所放位置说明,大学计算机基础期末考试指南(2011)
  2. Activity的task相关
  3. CYQ.Data 轻量数据访问层(八) 自定义数据表实现绑定常用的数据控件(中)
  4. 滴滴开源首次发布年度报告
  5. 中小企业利用VRRP实现链路负载均衡
  6. jquery.timers使用说明
  7. 项目开发中遇到的小问题及小规范
  8. 智能电视系列(4)-高通,天才与极限
  9. 如果编程语言是女人(译)
  10. 下拉列表与多选框以及GridView中的多选框的问题