地址

oslab oranges 一个操作系统的实现 实验三 认识保护模式(二):分页

Deadly 提交于 2019-12-04 14:29:17
实验目的: 掌握内存分页机制 对应章节: 3.3 实验内容: 1.认真阅读章节资料,掌握什么是分页机制 2. 调试代码,掌握分页机制基本方法与思路 – 代码3.22中,212行---237行,设置断点调试这几个循环,分析究竟在这里做了什么? 3. 掌握PDE,PTE的计算方法 – 动手画一画这个映射图 4. 熟悉如何获取当前系统内存布局的方法 5. 掌握内存地址映射关系的切换 – 画出流程图 6. 基础题:依据实验的代码, – 自定义一个函数,给定一个虚拟地址,能够返回该地址从虚拟地址到物理地址的计算 过程,如果该地址不存在,则返回一个错误提示。 – 完善分页管理功能,补充alloc_pages, free_pages两个函数功能 7. 进阶题(选做) – 设计一个内存管理器,选择其一实现:首次适应算法、最佳适应算法、伙伴算法,要 求实现内存的分配与回收。(提示,均按照页为最小单位进行分配、对于空闲空间管 理可采用位图法或者双向链表法管理) 完成本次实验要思考的问题: 1. 分页和分段有何区别?在本次实验中,段页机制是怎么搭配工作 的? 2. PDE、PTE,是什么?例程中如何进行初始化?CPU是怎样访问 到 PDE、PTE,从而计算出物理地址的? 3. 为什么PageTblBase初始值为2M+4K? 4. 怎么读取本机的实际物理内存信息? 5. 如何进行地址映射与切换? 6.

windows中的句柄

早过忘川 提交于 2019-12-04 14:00:26
指使用的一个唯一的整数值,来标识 应用程序 中的不同 对象 和同类中的不同的实例 , 诸如,一个窗口,按钮,图标,滚动条,输出设备,控件或者文件等。 windows 之所以要设立句柄,根本上源于内存管理机制的问题— 虚拟地址 ,简而言之数据的地址需要变动,变动以后就需要有人来记录管理变动,(就好像户籍管理一样),因此系统用句柄来记载数据地址的变更。 有些数据(例如不常用的数据会为常用数据让出其占用的内存空间,进而被淘汰进硬盘虚拟内存之中)的物理地址总是变动的,系统为进程分配固定的地址(句柄)来存储进程下的数据对象变化后的地址。 Unix中的文件描述符基本上也属于句柄。 来源: https://www.cnblogs.com/Stephen-Qin/p/11869378.html

0day2安全——笔记1

北慕城南 提交于 2019-12-04 12:13:01
第一章 PE和内存之间的映射 节偏移 文件偏移地址(File Offset Address): 数据 在PE文件中的地址 装载地址(Image Base):PE装入内存的基地址 虚拟内存地址(Virtual Address,VA):PE文件中的 指令 被装入内存后的地址 相对虚拟地址(Relative Virtual Address,RVA):相对虚拟地址是虚拟内存地址相对于映射基址(装载地址)的偏移量 关系: VA = Image Base + RVA节偏移=文件虚拟地址偏移量-文件物理地址偏移量文件偏移地址=虚拟内存地址-装载基址-节偏移 例:虚拟内存地址为0x4010D4, 文件虚拟地址偏移量为1000h,文件物理地址偏移量为200h 0x4010D4-0x400000(1000h-200h)=0x2D4 来源: https://www.cnblogs.com/luocodes/p/11863368.html

IP地址的格式和分类

此生再无相见时 提交于 2019-12-04 12:01:41
IP地址 IP地址时IP协议提供的一种地址格式,它为互联网上的网络设备分配一个用来通信的逻辑地址,目前分为IP v4和IP v6两种,v4的意思是version4,v6是同样的意思。 IP v4 IP v4是一个32位二进制数,不便于记忆,为了使用方便,使用“点分十进制”表示法,将这个二进制数每8位断开一次,每8位是一个字节,一个字节表示的十进制整数范围是0~255. IP地址分类 公有地址:需要向因特网信息中心申请,在互联网上可以直接使用的IP地址。 私有地址:不需要注册,可以在组织内部网络随便使用。 IP地址格式 IP地址这个32位2进制数被分为两个部分,网络位 + 主机位,网络位表示设备同属于一个网络,主机位表示网络中不同的设备的唯一ID。 子网掩码 子网掩码的功能是将IP地址划分为网络ID和主机ID,IP地址 按位与 子网掩码就是网络ID。 IP v4地址被分为A、B、C、D、E五类,下面列出来A、B、C三类。 类别 最大网络数 IP地址范围 单个网段最大主机数 私有地址IP地址范围 A类 126(2^7-1-1) 1.0.0.0 - 127.255.255.255 16777214 10.0.0.0 - 10.255.255.255 B类 16384(2^14) 128.0.0.0 - 191.255.255.255 65534 172.16.0.0 - 172.31

汇编基础知识

帅比萌擦擦* 提交于 2019-12-04 11:26:14
1: 数据的表示 微型计算机的字长与微处理器的寄存器位数有关。 以 Intel 80X86 系列微处理器为例,CPU 是 8086/8088、80286 的字长是 16 位(二进制位 bit),那么它们的寄存器的位数一定是 16 位的; 32 位字长的微机 CPU 是 80386/80486 或者 Pentium 系列,它们的寄存器的位数则是 32 位的。 学习汇编语言我们会用到十六进制(H)的数据形式,要使自己尽快习惯用十六进制来思维。在汇编语言中,数值后面分别用字母 B 、 H 、 D 代表二进制(Binary)、十六进制(Hexadecimal)、十进制数(Decimal)(十进制数可以省略 D )。 在计算机中还规定采用字节、字、双字等单位来表示数据。 字节(Byte):8 位二进制数。如 00000101B 或表示成 05H ; 10000101B 或表示成 85H 。 字(Word):16 位二进制数,等于 2 字节。如 1100010111010110B 或表示成 C5D6H 。 双字(Double Word):32 位二进制数,又称为双精度数,等于 4 字节。如 23456789H 。 2: 寄存器的分类 8086 寄存器都是 16 位的寄存器,根据用途可分为 4 种类型。分别是数据寄存器、地址寄存器、段寄存器和控制寄存器 (1)数据寄存器

DEBUG的基本命令的使用[MASM]

好久不见. 提交于 2019-12-04 11:25:50
DEBUG 的基本命令的使用 DEBUG 是专门为汇编语言设计的一种调试工具,它通过步进,设置断点等方式为汇编语言程序员提供了非常有效的调试手段。 DEBUG 的命令都是一个字母,后跟一个或多个参数: 字母 [ 参数 ] 命令的使用中注意: ① 字母不分大小写; ② 只使用 16 进制数,没有后缀字母; ③ 分隔符(空格或逗号)只在两个数值之间是必须的,命令和参数间可无分隔符; ④ 每个命令只有按了回车键后才有效,可以用 Ctrl+Break 中止命令的执行; ⑤ 命令如果不符合 Debug 的规则,则将以 “error” 提示,并用 “^” 指示错误位置。 许多命令的参数是主存逻辑地址,形式是 “ 段基地址 : 偏移地址 ” 。其中,段基地址可以是段寄存器或数值;偏移地址是数值。如果不输入段地址,则采用默认值,可以是缺省段寄存器值。如果没有提供偏移地址,则通常就是当前偏移地址。 对主存操作的命令还支持地址范围这种参数,它的形式是: “ 开始地址 结束地址 ” (结束地址不能具有段地址),或者是: “ 开始地址 L 字节长度 ” 。 DEBUG命令一览: 分类 命令格式 功能简介 读写寄存器 R 显示所有寄存器的当前内容 R 寄存器名 显示和修改指定寄存器内容 RF 显示和修改标志寄存器内容 汇编和反汇编 A[ 内存地址 ] 从指定地址开始汇编指令 U[ 内存块 ]

thinkphp关于本地引用图片

非 Y 不嫁゛ 提交于 2019-12-04 11:05:54
路由到重定向地址 重定向的外部地址必须以“/”或者http开头的地址。 如果路由地址以“/”或者“http”开头则会认为是一个重定向地址或者外部地址,例如: /static/admin/image/one/苹果.PNG 将会前往如下地址: http://localhost:8080/static/admin/image/one/苹果.PNG 默认入口为public目录 引用相关文件: <script type="text/javascript" src="__STATIC__/admin/lib/jquery/1.9.1/jquery.min.js"></script> 来源: https://www.cnblogs.com/summerGraden/p/11856628.html

DNS解析时的递归查询和迭代查询

旧城冷巷雨未停 提交于 2019-12-04 10:52:45
DNS域名解析时是分层查询的,例如查询www.yahoo.com的ip地址 主机会先将这个查询信息发送到一个本地的DNS服务器,例如本地的网通电信服务器,这个DNS服务器本身是不存放任何DNS记录的,它有的只是一个缓存,存放近期查询过的DNS记录,查询时如果该域名在记录中,那么直接返回对应的IP地址,如果不在其中,会去查询根域名服务器。 这个根域名服务器说,我这里没有www.yahoo.com的ip,你可以去com服务器查询,接着返回com服务器的地址;(其实就是返回顶级域名服务器的地址) 去com服务器查询,又查不到,又返回yahoo.com服务器的地址 再去yahoo.com服务器查询,好了这次查到了www.yahoo.com的地址,返回本地DNS服务器再返回本机。 结论:DNS的解析过程是分层的,www.yahoo.com 会先查询最后一个点后面的服务器地址,再是倒数第二个点,这样一步一步查到整体域名的IP。 来源: https://www.cnblogs.com/tajian/p/11856266.html

实模式/保护模式

一曲冷凌霜 提交于 2019-12-04 09:44:36
## 实模式和保护模式 ### 实模式 时间短,一般无法感知 CPU 复位 (reset) 或加电 (power on) 的时候就是实模式启动 ,这个时候处理器是以实模式工作, 不能实现权限分级,也不能访问 20 位以上的地址线 ,也就是只能访问 1M 内存( 2^18bits, 18 位地址线) 之后一般就是加载 OS 模块,进入保护模式 8086 地址线是 20 位,寄存器是 16 位,采用: 物理地址 = 段地址 <<4 + 偏移 从 8086 发展来的 32 位处理器地址线扩展到 32 位,有 4GB 寻址空间 在保护模式下,系统计算地址的时候是按照对 1MB 求模进行 ——Wrap-Around 技术 ### 保护模式 #### 起源 最开始的程序寻址是:段 + 偏移,这样的好处是程序员指定的地址就是物理地址,物理地址对程序员可见 这样带来的问题是: 1. 无法支持多任务 2. 程序的安全性无法得到保证 在 windows 的旧版本中,电脑时不时死机 / 蓝屏,这其实就是因为内存被破坏导致的。 因为在实模式中 , 将物理内存看成分段的区域,程序代码和数据位于不区域,系统程序和用户程序区别对待,而指针是任意的,如果用户程序指针指向了系统程序或其他用户程序区域,并改变了区域的数据,就会造成破坏,导致程序 / 系统崩溃 在保护模式下,全部 32 条地址线有效, 4G 寻址空间

网络初识

心已入冬 提交于 2019-12-04 08:41:44
网络层: MAC地址:网卡地址,数据包的发送地址 网址: 区分不同的计算机是否属于同一个子网络。 IP协议 : 规定网络地址的协议 目前,广泛采用的是IP协议第四版,简称IPv4 子网掩码 : 判断两台计算机是否属于同一个子网络 网络部分全部为1,主机部分全部为0 判断任意两个IP地址是否处在同一个子网络: 方法是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是 传输层: 端口: 0到65535之间的一个整数,正好16个二进制位。0到1023的端口被系统占用,用户只能选用大于1023的端口 ,用于区别数据包到底供哪个程序(进程)使用 UDP协议 无法确定对方是否收到数据包 TCP协议:近似于有确认机制的UDP协议 数据包结构: TCP标头:端口,接收方网址默认端口为80 IP标头:双方的IP地址,接收方的IP由DNS协议得到 以太网标头:双方的MAC地址,发送方为本机的网卡MAC地址,接收方为网关的MAC地址 上网设置 * 本机的IP地址; * 子网掩码; * 网关的IP地址; * DNS的IP地址。 DNS协议: 将网址转换成IP地址 服务器响应: 经过多个网关的转发,Google的服务器172.194.72.105,收到了这四个以太网数据包。根据IP标头的序号