地址

C语言指针的概念

萝らか妹 提交于 2020-03-23 09:15:51
在计算机中,所有的数据都是存放在存储器中的。一般把存储器中的一个字节称为一个内存单元,不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等,在前面已有详细的介绍。为了正确地访问这些内存单元,必须为每个内存单元编上号。根据一个内存单元的编号即可准确地找到该内存单元。 内存单元的编号也叫做地址。既然根据内存单元的编号或地址就可以找到所需的内存单元,所以通常也把这个地址称为指针。 内存单元的指针和内存单元的内容是两个不同的概念。 可以用一个通俗的例子来说明它们之间的关系。我们到银行去存取款时,银行工作人员将根据我们的帐号去找我们的存款单, 找到之后在存单上写入存款、取款的金额。在这里,帐号就是存单的指针, 存款数是存单的内容。 对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。 在C语言中,允许用一个变量来存放指针,这种变量称为 指针变量 。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。 图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A,这种情况我们称为 P指向变量C ,或说 P是指向变量C的指针 。 严格地说,一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针

[转帖]有问有答:寻址能力与CPU的位宽有关系吗?

江枫思渺然 提交于 2020-03-23 07:31:17
有问有答:寻址能力与CPU的位宽有关系吗? https://www.expreview.com/60286.html thesea 发布于 2019-6-6 17:16 本文约 900 字,需 2 分钟阅读 (切换至 标准版 ) 答案是没有关系。这个问题以讹传讹了很多人,传了很久,确实有必要说说。 CPU的寻址能力与它的地址总线位宽有关 ,而我们通常说的CPU位宽指的是数据总线位宽,它和地址总线位宽半毛钱关系也没有,自然也与寻址能力无关。 简单的说,CPU位宽指的是一个时钟周期内CPU能处理的二进制位数,如8086 CPU是16位的,可以一次处理2个字节(16个bit),80386 CPU是32位,能一次处理4个字节,目前的CPU基本上64位的了,一次能处理8个字节。 我们的Windows操作系统也分为32位和64位,主要是针对上面CPU的位宽做了些优化,比如32位的CPU就不能用64位的Windows(因为CPU一次只能处理32bit,而操作系统给你的指令是要处理64bit),但64位的CPU就可以运行32位的Windows,也能运行64位Windows。 那CPU的地址总线位宽到底是个什么鬼? Intel的解释是Physical Address Extensions (PAE) is a feature that allows 32-bit processors to

网络002

只愿长相守 提交于 2020-03-23 05:12:17
osi七层参考模型:一个开放式的体系架构 ip地址又称逻辑地址是可以发生改变的 MAC地址又称物理地址(网卡上的物理地址)是可以改变的 1-3层点与点之间的通信 4-7层端与端之间的通信 语法:传输数据包的格式说话的顺序 TCP/IP协议簇 协议端口号 应用层 HTTP 80 FTP 20 21(用于监控) TFTP 69 SMTP 25 SNMP 161 DNS 53 TCP可靠传输 UDP 语音传输 不可靠效率高 协议数据单元PDU 应用层 上层数据 传输层 数据段 网络层 数据包 数据链路层 数据帧 物理层 比特流 T568A线序:白绿,绿,白橙,蓝,白蓝,橙,白棕,棕 T568B线序:白橙,橙,白绿,蓝,白蓝,绿,白棕,棕 1 发 2 收 3发 6收 其他线路备用 同种设备交叉线,不同设备直通线 路由器与pc机是同种设备 进制的转换: 二进制:0 1 逢二进1 八进制:0 1 2 3 4 5 6 7 逢八进1 十进制:0 1 2 3 4 5 6 7 8 9 逢10进1 十六进制:0 1 2 3 4 5 6 7 8 9 A B C D E F 逢十进1 软蝶通:企业级应用的U起,安装系统windows、linux、unix、一个u盘只能做一个系统 计算机存储量单位 1024字节 ------- 1KB 1024KB ------- 1MB 1024MB ------- 1GB

Linux内核学习--内存寻址

大城市里の小女人 提交于 2020-03-23 03:17:26
1.内存寻址的基本流程   首先,一般的书中或者博客中,在介绍Linux内核的时候,首先都会介绍Linux的内存寻址,这样的一块知识和程序的关联在哪里,下面的内容就首先的讨论一下这个问题。   在我们书写程序的时候,我们有的时候会操作地址空间空间,那么我们用到的地址是真实的内存空间地址么,答案是否定的,我们用到的是逻辑地址,在操作系统中,存在着这样的三个地址概念,他们是逻辑地址、线性地址和物理地址。   逻辑地址:包含在机器语言中,用来指定一个操作数或者一条指令的地址。每一个逻辑地址都由一个段和偏移量组成,偏移量指明了他从段开始的地址到实际地址的距离;   线性地址:也称作虚拟地址,是一个32位的无符号整数(32位操作系统),可以表达4GB的地址空间。其地址用十六禁止的数字表示,值得范围从0x00000000到0xffffffff。   物理地址:用于内存单元的寻址,是真正的内存的地址。   三种地址之间的关系如下:      从80286模型开始,Intel的处理器以两种不同的方式进行地址转换,这两种方式分别是实模式和保护模式,下面我们描述的都是保护模式下的地址转换。 2.内存中的分段机制   首先,我们来讨论下CPU的寻址方法:   (1)根据指令的类型来确定应该使用哪一个段寄存器,例如转移指令中的地址在代码段,取数指令中的地址在数据段。   (2)根据段寄存器中的内容

关于句柄

强颜欢笑 提交于 2020-03-23 02:31:13
所谓句柄实际上是一个数据,是一个Long (整长型)的数据。 句柄是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的句柄标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS句柄有点象C语言中的文件句柄。 从上面的定义中的我们可以看到,句柄是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个句柄,之后其他的WINDOWS函数就可以使用该句柄,以引用相应的对象。 如果想更透彻一点地认识句柄,我可以告诉大家,句柄是一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要。对象被移动意味着它的地址变化了。如果地址总是如此变化,我们该到哪里去找该对象呢? 为了解决这个问题

关于什么是句柄(经典)

安稳与你 提交于 2020-03-20 04:31:19
转自:http://hi.baidu.com/fancys_he/blog/item/2861344affcfe32609f7efd1.html 句柄 是WONDOWS用来标识被应用程序所建立或使用的对象的唯一整数,WINDOWS使用各种各样的 句柄 标识诸如应用程序实例,窗口,控制,位图,GDI对象等等。WINDOWS 句柄 有点象C语言中的文件 句柄 。 从上面的定义中的我们可以看到, 句柄 是一个标识符,是拿来标识对象或者项目的,它就象我们的姓名一样,每个人都会有一个,不同的人的姓名不一样,但是,也可能有一个名字和你一样的人。从数据类型上来看它只是一个16位的无符号整数。应用程序几乎总是通过调用一个WINDOWS函数来获得一个 句柄 ,之后其他的WINDOWS函数就可以使用该 句柄 ,以引用相应的对象。 如果想更透彻一点地认识 句柄 ,我可以告诉大家, 句柄 是 一种指向指针的指针。我们知道,所谓指针是一种内存地址。应用程序启动后,组成这个程序的各对象是住留在内存的。如果简单地理解,似乎我们只要获知这个内 存的首地址,那么就可以随时用这个地址访问对象。但是,如果您真的这样认为,那么您就大错特错了。我们知道,Windows是一个以虚拟内存为基础的操作 系统。在这种系统环境下,Windows内存管理器经常在内存中来回移动对象,依此来满足各种应用程序的内存需要

HTTP相关:TCP/IP、DNS

北城余情 提交于 2020-03-19 01:59:31
最近在看HTTP的书,看得有点慢,而且断断续续的,很多东西看完就忘了。知识点多且零散,感觉要多看几遍才能消化。 TCP/IP协议族按层次分为4层:   应用层:     应用层决定了向用户提供应用服务时通信的活动。   传输层:     传输层为应用层提供处于网络连接中的两台计算机之间的数据传输。   网络层:     网络层用来处理在网络上流动的数据包。   链路层:     链路层用来处理连接网络的硬件部分。 TCP/IP通信传输流: IP协议:   Internet Protocol的作用是把各种数据包传送给对方,有两个条件(MAC地址、IP地址)保证了数据能准确传输给对方。   MAC地址:     网卡所属的固定地址(物理地址) 。IP间通信依赖MAC地址,通信时一般要进行多次中转才能连接对方,中转过程就会用到MAC地址和ARP协议(ARP协议根据对方IP地址,寻找中转设备的MAC地址,通过中转设备传送,从而连接对方)。   IP地址:     指明节点被分配到的地址。IP地址是可以和MAC地址配对的,且IP地址可以变换。 TCP三次握手: 为了准确无误地将数据传送给目标,TCP协议采用了三次握手的机制。发送端先发送一个带SNY(synchronize)标志的数据包给对方,接收端收到后,会回传一个带有SYN/ACK(acknowledgement)标志的数据包表示确认收到

2.寄存器

喜你入骨 提交于 2020-03-19 01:40:12
寄存器 通过操作数据总线,控制总线和地址总线实现数据的读取,肯定是非常灵活的方式,假如对某个存储单元进行比较复杂的操作,不断的进行读取显然需要优化,比如说加入缓存,事物或者中间变量什么的,当然,这里我们只能加入硬件,比如说寄存器(看来机器码会与寄存器有关) 通用寄存器 :就算是将寄存器理解为存储单元里面的变量,也要为他们取一个好听且有意义的名字 1.数据寄存器 AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。 BH&BL=BX(base):基址寄存器,常用于地址索引 CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。 这4个16位的寄存器可以分为高8位(AH,BH,CH,DH)以及低八位(AL,BL,CL,DL),这2组8位寄存器可以分别寻址,并单独使用。 2.指针寄存器和变址寄存器 SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置 BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置 SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针

RIP中不连续子网问题

非 Y 不嫁゛ 提交于 2020-03-18 22:52:00
RIPv1:路由器上所运行 RIP 协议的默讣版本是 v1,自劢汇总无法关闭,所以上面丌连续子网 所带来的问题,丌能通过关闭自劢汇总来解决。但如果把丌连续的子网转发成连续的子网, 问题就可以解决,办法是给接口配置第二丧 IP 地址,IP 地址叏10.0.0.0/8主网的子网,通过在丌连续的子网乀间的链路上配置相同主网的子网 IP 地址,即采用配置 仍 IP 地址的方式来实现子网的连续性,解决了因为自劢汇总収生后,子网路由被抑刢掉而 导致的子网丌可达。此种做法优点是 RIPv1 在丌做大的拓扑绋极调整的前提下,仅靠配置 第二个 IP 地址就解决了不连续子网问题;不足之处是需要配置第二个 IP 地址,要消耗掉多个子网网段 RIPv2:如果路由器运行的是 RIPv2,则可以直接关闭自动汇总,子网是否连续就不重要了,因 为 RIPv2会直接通告相应的子网路由,在 RIPv2 的环境中,因为默认情况下自动汇总是开启的,所以网络在设计时,应尽量 不要出现同主网的子网被其它主网分隔的情况。如果出现了,关闭自动汇总是最佳的做法, 不足之处是路由表中路由条目会有所增多 [R4-rip-1]undo summary 使用这个命令关闭自动汇总 来源: https://www.cnblogs.com/yechaoxu/p/8026351.html

IP地址0.0.0.0/0是什么意思

大兔子大兔子 提交于 2020-03-18 19:29:32
今天遇到这样的问题,0.0.0.0代表什么? 参考RFC文档: 0.0.0.0/8 - Addresses in this block refer to source hosts on “this” network. Address 0.0.0.0/32 may be used as a source address for this host on this network; other addresses within 0.0.0.0/8 may be used to refer to specified hosts on this network 根据RFC文档描述,它不只是代表本机,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,地址块0.0.0.0/32仅含有一个地址,被保留用于某主机需要发送一个IPv4分组,但不知道自己地址的情况下。通常用于主机正在启动,主机为了获取自己的地址,向引导DHCP服务器发送一个IPv4分组,以全0的地址作为源地址,受限广播地址作为目的地址。 在路由器配置中可用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。当到达了一个知道如何到达目的地址的路由器时,这个路由器就会根据最长前缀匹配来选择有效的路由。子网掩码匹配目的IP地址而且又最长的网络会被选择