地址

虚拟内存管理

独自空忆成欢 提交于 2020-03-05 08:54:54
1、什么是虚拟内存 虚拟内存是计算机系统内存管理的一种技术。它使的应用程序认为他拥有连续的可用内存( 一个连续完整的地址空间 ),而实际上,他通常是被分割成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。 注意:虚拟内存不只是“用磁盘空间来扩展物理内存”的意思--这只是扩充内存级别以使其包含磁盘驱动器而已,把内存扩展到磁盘只是使用虚拟内存技术的一个结果,他的作用可以通过覆盖或者把处于不活动状态的程序以及他们的数据交换到磁盘上等方式实现。 2、为什么会有虚拟内存 许多年以前,当人们还在使用DOS或更古老的操作系统的时候,计算机内存还非常小,一般都是以K为单位进行计算的,相应的,当时的程序规模也不大,所以内存容量虽然小,但还是可以容纳当时的程序。但随着图像界面的想起还有用户需求的不断增大,应用程序的规模也随之膨胀起来。终于一个难题出现在程序员面前,那就是应用程序太大以至于内存容不下该程序,通常解决的办法是把程序分割成许多覆盖快的片段。覆盖块0首先运行,结束时他将调用另一个覆盖块。虽然覆盖块的交换是由os完成的,但是必须先有程序员吧程序先进行分割,这是一个费时费力的工作,而且相当枯燥。虚拟存储器就应运而生。 3、物理地址、虚拟地址、逻辑地址区别 32位系统的地址总线是32位的, 64位 CPU是指 CPU 内部的通用寄存器的宽度为 64 比特

char *p;sizeof(p)=?

一世执手 提交于 2020-03-04 07:51:25
sizeof(指针)是指针变量占用内存的大小(字节数),而指针是存储变量地址的,变量地址的长度即为指针变量所占内存大小,尽管不同类型变量所占内存大小不同(int四字节、char一字节),但指针存的只是首字节地址,不同的是指针递增时,增加的地址。 所以在32位机上,所有指针类型变量占用内存字节数都为4 因为32位机就是 4字节 * 8个二进制位/字节 计算出来的. 如果在64位机上,指针占用内存大小就是8个字节. 也有一种说法,指针是存变量地址,变量地址的长度与编译时使用的编译器有关,一般VS是win32,即32位,所以指针长度一般位4字节(4*8) # include <iostream> using namespace std ; int main ( ) { char c ; char * pc = & c ; int a ; int * pa = & a ; cout << sizeof ( c ) << "\t" << sizeof ( pc ) << "\t" << ( void * ) pc << "\t" ; pc ++ ; cout << ( void * ) pc << endl ; cout << sizeof ( a ) << "\t" << sizeof ( pa ) << "\t" << pa << "\t" << pa ++ << endl ;

NAT 地址转换

旧巷老猫 提交于 2020-03-04 07:16:21
NAT功能 NAT不仅能解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。 1.宽带分享:这是 NAT 主机的最大功能。解决IP4地址短缺的问题。 2.安全防护:NAT 之内的 PC 联机到 Internet 上面时,他所显示的 IP 是 NAT 主机的公共 IP,所以 Client 端的 PC 当然就具有一定程度的安全了,外界在进行 portscan(端口扫描) 的时候,就侦测不到源Client 端的 PC 。 NAT实现方式 有三种,即 1.静态转换Static Nat (静态ip 静态端口) 2.动态(源地址)转换Dynamic Nat 3.动态(目的地址)转换Dynamic Nat 4..端口多路复用OverLoad(PAT) 这些东西还是放在前面讲吧,看不懂,记不住无所谓,底层的原理 Inside 内部 Outside 外部 四个概念: Inside local 内部本地地址(内部主机的实际地址,一般为私有地址) Inside global 内部全局地址(内部主机经NAT转换后去往外部的地址,是ISP分配的合法IP地址) Outside local 外部本地地址(外部主机由NAT设备转换后的地址,一般为私有地址,内部主机访问该外部主机时, 认为它是一个内部的主机而非外部主机) Outside global 外部全局地址

CentOS虚拟机网卡配置

我怕爱的太早我们不能终老 提交于 2020-03-04 05:48:26
虚拟机与主机通信方式这里我选择--------桥接方式    我认为桥接模式方便 一、 虚拟机的配置 1、在虚拟机的“编辑”里选择“虚拟网络编辑器” 2、配置虚拟网络编辑器   - 主机的网络设置为共享 二、centOS的配置 这里配置静态ip 1、使用root账号登录之后使用 ifconfig 首先查看当前的IP地址信息,主要注意网卡MAC地址,要保证当前系统正在使用的网卡MAC地址与网卡配置信息里的一致,当前系统正在使用的网卡MAC地址为:00:0C:29:D6:99:32。   2 查看当前虚拟机有几张网卡可用,使用vim命令打开网卡配置信息, vim /etc/udev/rules.d/70-persistent-net.rules      如果发现eth0对应的MAC地址不为:"00:0C:29:D6:99:32",则里面肯定有其他网卡的MAC地址为"00:0C:29:D6:99:32",可能是eth1、eth2,将网卡地址为"00:0C:29:D6:99:32" 名字改为eth0,然后将eth0注释或者删除,保存退出。   退出之后回到linux命令行,重启一下网卡配置信息,使用命令:start_udev    3 配置系统实际上使用的网卡及其静态IP地址 vim /etc/sysconfig/network-scripts/ifcfg-eth0   DEVICE

12个icon图标资源网站

怎甘沉沦 提交于 2020-03-03 23:28:43
1.除了Icon以外,还有很多不错的UI设计素材。 地址: http://worldui.com/ 2.除了免费Icon资源下载以外,还提供Icon定制的付费服务。 地址: http://dryicons.com/ 3.很喜欢这个icon资源站的展示方式。 地址: http://www.icotrip.com/ 4.Icones.pro,icon资源站,每日推荐的Icon资源还不错,可以按照浏览数,下载数等查看Icon资源。 地址: http://icones.pro/ 5.IconPNG 共收录 21372 个 图标icons 和 416 个 icon 图标系列。 地址: http://www.iconpng.com/ 6.FindIcons.com就是一个帮您找免费图标的图标搜索引擎。有3000多套图片集和30多万个免费Icon资源。 地址: http://findicons.com/ 7.IconFinder是我个人最喜欢的一个Icon资源站,拥有152,466 icons以及775 icon集,强烈推荐! 地址: http://www.iconfinder.com/ 8.EasyIcon:拥有超过40万个Icon资源,完全收录Open Icon Library 11,489个图标。 地址: http://www.easyicon.cn/ 9

第三讲:ifconfig:最熟悉又陌生的命令行

半世苍凉 提交于 2020-03-03 23:28:25
你知道怎么查看IP地址吗? 当面试听到这个问题的时候,面试者常常会觉得走错了房间。我面试的是技术岗位啊,怎么问这么简单的问题? 的确,即便没有专业学过计算机的人,只要倒腾过电脑,重装过系统,大多也会知道这个问题的答案:在 Windows 上是 ipconfig,在 Linux 上是 ifconfig。 那你知道在 Linux上 还有什么其他命令可以查看 IP 地址吗?答案是 ip addr。如果回答不上来这个问题,那你可能没怎么用过 Linux。 那你知道 ifconfig 和 ip addr 的区别吗?这是一个有关 net-tools 和 iproute2 的「历史」故事,你刚来到第三节,暂时不用了解这么细,但这也是一个常考的知识点。 想象一下,你登录进入一个被裁剪过的非常小的 Linux 系统中,发现既没有 ifconfig 命令,也没有 ip addr 命令,你是不是感觉这个系统压根儿没法用?这个时候,你可以自行安装 net-tools 和 iproute2 这两个工具。当然,大多数时候这两个命令是系统自带的。 安装好后,我们来运行一下 ip addr。不出意外,应该会输出下面的内容。 这个命令显示了这台机器上所有的网卡。大部分的网卡都会有一个 IP 地址,当然,这不是必须的。在后面的分享中,我们会遇到没有 IP 地址的情况。 IP 地址是一个网卡在网络世界的通讯地址

5/27 C语言 指针系列

时间秒杀一切 提交于 2020-03-03 21:07:09
1、序。数据在内存中是如何存储的,又是如何读取的? 在程序中定义一个变量,在对程序进行编译的时候,系统会给这个变量分配内存单元。编译系统根据程序中定义变量类型,分配一定长度的空间。 2、指针。 地址指向该变量的单元,地址指向该变量的单元,将地址形象化称作为指针,就是通过它能够找到以他为地址的内存单元。 3、访问。 访问分为直接访问和间接访问,直接访问是直接读取一个数据的地址,间接访问是通过中介访问自己的数据的地址,一般要进行两步以上。 4、指向。 一个变量的地址称为变量的指针,指针是通过地址来体现的。假设i_pointer中的值是变量i的地址的变量(2000),这样就在i—pointer和变量i中建议一种联系,通过i—pointer就知道i的地址,从而找到i的内存单元 来源: https://www.cnblogs.com/serious123/p/10934385.html

MMU内存管理单元

女生的网名这么多〃 提交于 2020-03-03 20:52:13
arm-linux学习-(MMU内存管理单元) 什么是MMU MMU(Memory Management Unit)主要用来管理虚拟存储器、物理存储器的控制线路,同时也负责 虚拟地址映射为物理地址 ,以及提供硬件机制的内存访问授权、多任务多进程操作系统。(来自百度百科, 对其几个点不熟悉,因此可以只考虑加粗部分 ) 发展历史 注意:学习一个知识点,很重要的一步是了解其 为什么而存在?它的存在是为了解决什么问题? 然后,在学习的过程中带着这些问题去理解、去思考。 在许多年以前,还是使用DOS或一些古老的操作系统时,内存很小,同时,应用程序也很小,将程序存储在内存中基本能够满足需要。随着科技的发展,图形界面及一些其他更复杂的应用出现,内存已经无法存储这些应用程序了,通常的解决办法是将程序分割成很多个 覆盖块 ,覆盖块0最先运行,运行结束之后,就调用另一个覆盖块,虽然这些操作由OS来完成,但是,需要程序员对程序进行分割,这非常不高效;因此,人们想出了一个 虚拟存储器(virtual memory) 的方法。虚拟存储器的基本思想是:程序、数据、堆栈的总大小可以超过内存空间的大小,操作系统将当前运行的部分保存在内存中,未使用的部分保存在磁盘中。比如一个16MB的程序和一个内存只有4MB的机器,操作系统通过选择可以决定哪部分4MB的程序内容保存在内存中,并在需要时,在内存与磁盘中交换程序代码

编译器简介

只谈情不闲聊 提交于 2020-03-03 16:47:54
语言处理系统 高级语言->汇编语言->机器码->硬件 预处理器:将源程序的存放在不同文件中的多个模块聚合起来,并替换宏。 汇编器:将编译器形成的汇编语言程序输出转换成可重定位的机器码。 编译器 是一个程序,它可以将 高级编程语言编写的程序 翻译成目标语言(如机器语言)编写的程序。 解释器 也是一个程序,但它不是翻译,而是直接根据用户的输入来执行制定的操作。 java就是编译器和解释器(虚拟机)的结合,实现一次编译,到处运行。Javac 的编译,编译 Java 源码生成“.class”文件里面实际是字节码,而不是可以直接执行的机器码。Java通过字节码和 Java 虚拟机(JVM)这种跨平台的抽象,屏蔽了操作系统和硬件的细节,这也是实现“一次编译,到处执行”的基础。 链接器:大型程序会分成多部分编译,一个文件中的代码可能指向另一文件中的位置。链接器可以解决外部内存地址的问题。 加载器:把所有可执行文件放在内存中执行。 可重定位 程序内使用的是逻辑地址,在系统加载程序,给出物理地址时,才会把逻辑地址转换为物理地址,这就是可重定位。即将逻辑地址重新定位成物理地址。 静态重定位:即在程序装入内存的过程中完成,是指在程序开始运行前,程序中的各个地址有关的项均已完成重定位,地址变换通常是在装入时一次完成的,以后不再改变,故成为静态重定位。 动态重定位:它不是在程序装入内存时完成的

03大端和小端(Big endian and Little endian)

寵の児 提交于 2020-03-03 15:12:50
1.大端和小端的问题 ​ 对于整型、长整型等数据类型,Big endian 认为第一个字节是最高位字节( 按照从低地址到高地址的顺序存放数据的高位字节到低位字节 ),而 Little endian 则相反,它认为第一个字节是低位字节(按照从低地址到高地址的顺序存放数据的低位字节到高位字节)。 (1)例如,假设从内存地址 0x0000 开始有以下数据: /*地址*/ 0x0000 0x0001 0x0002 0x0003 /*数据*/ 0x12 0x34 0xab 0xcd ​ 如果我们去读取一个地址为 0x0000 的四个字节变量,若字节序为 big-endian,则读出结果为 0x1234abcd;若字节序为 little-endian,则读出结果为 0xcdab3412。 (2)如果我们将 0x1234abcd 写入到以 0x0000 开始的内存中,则 Little endian 和 Big endian 模式的存放结果如下: /*地址*/ 0x0000 0x0001 0x0002 0x0003 /*big-endian*/ 0x12 0x34 0xab 0xcd /*little-endian*/ 0xcd 0xab 0x34 0x12 (3)总结:一般来说,x86 系列 CPU 都是 little-endian 的字节序,PowerPc 通常是 big-endian