地址

c语言-指针

孤街醉人 提交于 2020-04-05 15:34:03
指针 一、指针的地址 1、变量的地址 计算机中,数据存储在内存中,内存可划分为若干存储单元,每个单元可以存放8位二进制数,即1个字节。内存单元采用线性地址编码,每个单元具有唯一一个地址编码。 【1】变量的地址: 系统 为变量分配的内存单元的地址(内存中每一个字节都有一个编号, 就是“地址”,是一个 无符号整型数 ) 【2】变量的有关概念 存储内容:数据值 空间大小:数据类型 空间位置:地址 生存周期:存储类别 2、变量的访问方式 【1】直接访问 int a; float b; a = 3; //直接将3放入a的地址 b = 4; 【2】间接访问:定义一个变量p,存放a的地址,通过p来访问a 3、指针变量: 存放地址的变量 例:p为指针变量,它存放整型变量a的首地址,就称指针变量p 指向 整型变量a 二、指针变量的定义与引用 指针变量在使用前必须定义,使其指向特定类型的变量,指针变量存放地址,必须定义为“指针类型”。 1、定义方法   类型符 *指针变量名 指针变量的类型 所指向的内存中存放的数据的类型 int *p1,*p2; char *ps; float *pf1,*pf2; 2、指针变量的赋值 【1】指针变量的值为地址,是一个无符号整数, 但不能直接将整型常量赋给指针变量 。 注:变量的类型必须与指针变量的类型相同,若不赋值,则指针变量的值是随机的( 会很危险

简要概括内存机制

南笙酒味 提交于 2020-04-04 12:58:09
1-逻辑地址 为什么要引入逻辑地址? 逻辑地址是虚拟的,并非真实的物理地址。逻辑地址是写在程序中的,因为程序是写死的,不方便更改,而实际使用中内存是变化的,如果直接在程序中写物理地址,会引发错误,因此引入逻辑地址。 程序无法得知可用的物理地址,所以必须做出映射。 2-逻辑地址和物理地址如何完成映射 一种简单的思路:固定偏移量 缺陷: 在实际使用中,程序1内存的实际使用量通常小于200,余下的内存成为内碎片 程序1如果运行完,程序3要运行,但需要201内存,那么200那块内存就会被浪费,被称为外碎片 解决办法:分页 二者如何建立联系?需要一张中间表,称为page table,程序中的page -> page frame进行映射 补充知识 分页优化 参考:B站 https://www.bilibili.com/video/BV1u7411z7Sv?from=search&seid=9878274338412530575 来源: https://www.cnblogs.com/tudoo/p/12626898.html

嵌入式学习-MMU

。_饼干妹妹 提交于 2020-04-03 12:04:12
原文: https://blog.csdn.net/u011003120/article/details/51812188 参考: https://blog.csdn.net/groundhappy/article/details/54889677 MMU 存储器管理单元,在之前因为是操作物理地址,不需要MMU,因此是处于关闭状态的,而这次则是打开MMU并且使用MMU. 一、MMU的作用 1.将虚拟地址转化为物理地址 2.进行访问权限的管理 看上图可以得知,有三个运行的程序,他们的虚拟地址都为0x400000,但是若要使用物理地址,他们的物理地址不能够相同,因此就需要一个机制,使他们的相同的虚拟地址对应不同的物理地址,这个机制就是上图中的Page tables(即页表),虚拟地址通过查表的方式对应到不同的物理地址上。 二、地址转化 首先需要知道的是,以段(Section,1M)的方式进行转换时只用到一级页表,而页(Page)的方式进行转换时用到两级页表,有粗也转换和细页转换两种,页的大小有3种:大页(64KB)、小页(4KB)和极小页(1KB)。 1.地址转化总体分析 整个地址转换的过程分为了两步,为一级转换和二级转换。 虚拟地址的[31:20]位作为一个表的索引,表的名字为translation table,即TTB,如果表的后两位为00,则为无效的转换,如上图,如果后两位为01

OSI体系结构——网络层详解

痞子三分冷 提交于 2020-04-02 16:30:00
前言 网络层是OSI参考模型中的第三层,同时也是TCP/IP模型的第二层。它介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。 一、功能目的 网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。 网络层提供的两种服务: 1.网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务,以及每一个分组独立交付的策略。 2.网络层不提供服务质量的承诺。 虚电路服务与数据报服务的对比: 二、网际协议IP 网际协议IP是TCP/IP体系中两个最主要的协议之一,同时IP协议也是最重要的互联网标准协议之一。 与IP协议配套使用的还有三个协议: (1)地址解析协议 ARP( address resolution protocol ) (2)网际控制报文协议 ICMP( internet control message protocol ) (3)网际组管理协议 IGMP(

Linux 15 进程地址空间

大憨熊 提交于 2020-04-02 13:37:34
15.1 进程只能访问有效内存区域的内存地址,每个内存地址都有相关权限可以让相关进程可读、可写、可执行。如果一个内存访问了不在有效范围内的内存区域时,或以不正确的方式访问内存区域,内核会终止该进程。并报段错误。 有效内存中的对象有: -可执行文件代码的内存映射,称为代码段/文本段。 -已初始化的全局或静态变量的内存映射,称为数据段; -未初始化的全局或静态数据的零页映射,称为bss段; -用于进程用户空间栈的零页内存映射,栈段; -每一个诸如C库或动态链接库等共享库的代码段、数据段和bss段也会被载入进程地址空间; -任何内存映射文件; -任何共享内存段; -任何匿名的内存映射,比如由malloc()申请的内存; 其中后4个都是堆区。 15.2 内存描述符 mm_struct 内核使用内存描述符结构体表示进程的地址空间,该结构包含了和进程地址空间有关的全部信息。用mm_struct表示。 其中mm_users成员表示该地址空间的进程引用数; 其中mmap和mm_rb都表示地址空间的各个内存对象,前者用链表表示,后者用红黑树表示; 所有的mm_struct结构体都通过自身的mmlist域连接在一个双向链表中,该链表首元素是init_mm内存描述符,它表示init的地址空间; mmlist_lock用于访问上述链表时的同步控制。 task_struct的mm域指向了进程的内存描述符

第一次个人编程作业

孤者浪人 提交于 2020-04-01 08:46:41
Github项目地址 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) · Planning · 计划 20 15 · Estimate · 估计这个任务需要多少时间 600 1605 · Development · 开发 60 240 · Analysis · 需求分析 (包括学习新技术) 180 900 · Design Spec · 生成设计文档 20 20 · Design Review · 设计复审 10 15 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10 · Design · 具体设计 10 15 · Coding · 具体编码 30 120 · Code Review · 代码复审 10 10 · Test · 测试(自我测试,修改代码,提交修改) 30 60 · Reporting Standard · 报告 60 120 · Test Repor · 测试报告 20 30 · Size Measurement · 计算工作量 10 20 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 20 30 · · 合计 600 1605 解题思路    1.首先分割电话号码,把电话号码提取出来。

第一次个人编程作业

ぐ巨炮叔叔 提交于 2020-04-01 08:44:49
github PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) · Planning · 计划 30 35 · Estimate · 估计这个任务需要多少时间 5 5 · Development · 开发 25 30 · Analysis · 需求分析 (包括学习新技术) 25 30 · Design Spec · 生成设计文档 40 30 · Design Review · 设计复审 45 30 · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 50 30 · Design · 具体设计 30 50 · Coding · 具体编码 150 180 · Code Review · 代码复审 45 30 · Test · 测试(自我测试,修改代码,提交修改) 30 60 · Reporting Standard · 报告 15 40 · Test Repor · 测试报告 35 50 · Size Measurement · 计算工作量 15 10 · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 25 30 · 合计 565 640 解题思路   先根据“,”的位置把姓名分离出来,然后把电话号码分割开。对于地址

VLAN的分类

可紊 提交于 2020-03-31 07:28:06
(1)基于端口的VLAN 基于端口的VLAN就是将交换机中的若干个端口定义为一个VLAN,同一个VLAN中的站点具有相同的网络地址,不同的VLAN之间进行通信需要通过路由 器。采用这种方式的VLAN其不足之处是灵活性不好,例如当一个网络站点从一个端口移动到另外一个新的端口时,如果新端口与旧端口不属于同一个VLAN, 则用户必须对该站点重新进行网络地址配置,否则,该站点将无法进行网络通信。 (2)基于MAC地址的VLAN 在基于MAC地址的VLAN中,交换机对站点的MAC地址和交换机端口进行跟踪,在新站点入网时根据需要将 其划归至某一个VLAN,而无论该站点在网络中怎样移动,由于其MAC地址保持不变,因此用户不需要进行网络地址的重新配置。这种VLAN技术的不足之处 是在站点入网时,需要对交换机进行比较复杂的手工配置,以确定该站点属于哪一个VLAN。 (3)基于IP地址的VLAN 根据用户三层逻辑地址;来进行VLAN划分,不同的IP等地址可以划分进不同的VLAN。但注意这个不是路由!只要用户的IP地址不变,VLAN好号也不变,这与它的地址和逻辑位置无关,相对于MAC的VLAN会更加方便。但IP层面的处理,意味着更多资源的开销。 (4)基于策略的VLAN 通常可以根据MAC、IP、以太网协议类型、上层应用等来进行灵活划分。 来源: https://www.cnblogs.com

2.内存寻址

江枫思渺然 提交于 2020-03-31 04:26:23
内存地址 三种内存地址:1)逻辑地址(机器指令中操作数或指令的地址) 分段单元 2)线性地址(虚拟地址) 分页单元 3)物理地址(用于内存芯片级内存单元寻址 多CPU时,共享同一内存,RAM芯片由独立的CPU并发访问; 由内存仲裁器保证RAM的读写的串行执行 Linux中的分段 80X86才使用分段(把程序划分为逻辑相关的实体),Linux更喜欢使用分页(当所有进程使用相同的段Register值时,它们共享同样的一组线性地址,这样内存管理简单; RISC对分段的支持有限.). 两者都划分进程的物理地址空间:分段可以给每一个进程分配不同的线性地址空间,而分页可以把同一线性地址空间映射到不同的物理空间. 段选择符由宏__USER/KERNEL_CS/DS定义.对内核代码寻址,吧__KERNEL_CS宏产生的值装入cs寄存器即可.这样执行指令时,只需指定逻辑地址的偏移部分,段选择符已经隐含在寄存器内. 所有段(内核/用户的数据/代码段)的Base=oX0000000,即逻辑地址(的偏移量字段值)=线性地址(的值).所有进程使用相同的逻辑地址. 每个CPU一个GDT,会插入未使用的项使得经常一起访问的描述符能够处于同一32字节的硬件Cache中; 大多数用户态APP不适用局部描述符表,所以定义了一个缺省的LDT供进程共享,同时进程可以创建自己的LDT. 硬件中的分页

网络数据传输过程分析

家住魔仙堡 提交于 2020-03-30 21:32:19
在现在的生活中,我们已离不开网络了,但网络是如何传输的呢?我们并不知道。下面是我的一些理解,有不对的地方,还请大家指出,我们共同学习。 首先我们要明白我们要明白什么是IP,什么是物理地址,什么是网关。下面由我通俗地解释一下,IP是可变的,它只是代表了你所在的网络区域,并不能代表就是这台计算机。而物理地址却是不可变的,也就是说,在网络底层的物理传输过程中,是通过物理地址来识别主机的,它一般也是全球唯一的。形象的说,物理地址就如同我们身份证上的身份证号码,具有全球唯一性。物理地址与IP地址的区别,形象举个例子,例如你要到某一学校寻找一个同学,你知道他的名字,也知道他的长相,你首先依据他名字先找到他的班级,再依据他的相貌找到他。这里的名字就相当IP地址(可变),长相就物相当于物理地址(不可变)。我们上网所输入的网址其实也是一个IP地址。网关,网关又称网间连接器、协议转换器。网关在传输层上以实现网络互连,是最复杂的网络互连设备,仅用于两个高层协议不同的网络互连。可通俗的说网关是路由器。可在计算机命令窗口输入ipconfig/all,寻找自己IP地址,物理地址。说了这么久,还没开始,现在终于开始了。 网络的传输以下主要说到这些层,应用层,传输层,网络层,数据链路层。要想具体了解其他层,以下有链接。应用层直接和 应用程序 接口并提供常见的网络应用服务。接着是传输层,在了解传输层的时候