-
oracle获取缓冲区的大小怎么换算成mb_一步步编写操作系统 34 内核利用bios中断获取物理内存大小...
2020-12-15 13:31:55接上文,另一个获取内存容量的方法是bios 0x15中断的子功能0...低于15MB的内存是以1KB为单位大小来记录,单位数量在寄存器AX和CX中记录,其中AX和CX的值是一样的,所以在15MB空间以下的实际内存容量=AX*1024。AX、C...接上文,另一个获取内存容量的方法是bios 0x15中断的子功能0xE801。
此方法虽然简单,但功能也不强大,最大只能识别4G内存,不过这对咱们32位地址总线足够了。稍微有点不便的是,此方法检测到的内存是分别存放到两组寄存器中的。低于15MB的内存是以1KB为单位大小来记录,单位数量在寄存器AX和CX中记录,其中AX和CX的值是一样的,所以在15MB空间以下的实际内存容量=AX*1024。AX、CX最大值为0x3c00,即0x3c00*1024=15MB。16MB~4GB是以64KB为单位大小来记录,单位数量在寄存器BX和DX中记录,其中BX和DX的值是一样的,所以16MB以上空间的内存实际大小=BX*64*1024,不用在意BX和DX最大值是多少,前面说过啦,只支持4G空间,您可以反推一下看看。
咱们还是列个表,将其用法分为输入、输出两部分介绍。
再次提醒,中断返回后,AX和CX中,其值的单位是1KB,而BX和DX的单位是64KB。
当初我看到这儿的时候,脑子中不禁弹出了两个问号:
1 为什么要分“前15MB”和“16MB以上”这两部分来展示4GB内存?
2 为什么寄存器结果是重复的?如寄存器AX和CX相等,BX和DX相等?
为了解决第1个问题,让我们实际测试下,让事实说话。测试方法是修改bochs配置文件bochsrc.disk中的内存容量参数megs,然后执行bios中断。测试结果见表
表中“实际物理内存”和“检测到的内存大小”,它们之间总是差1MB,言外之意是,总有1MB内存不可用。这是怎么回事?真是一波未平一波又起啊。
很多问题都是祖上传下来的^_^,即著名的历史遗留问题。80286是拥有24位地址线,其寻址空间是16MB。当时有一些ISA设备要用到地址15MB以上的内存做为缓冲区,也就是此缓冲区为1MB大小,所以硬件系统就把这部分内存保留下来,操作系统不可以用此段内存空间。保留的这部分内存区域就像不可以访问的黑洞,这就成了内存空洞memory hole。现在虽然很少很少能碰到这些老ISA设备了,但为了兼容,这部分空间还是保留下来,只不过是通过bios选项的方式由用户自己选择是否开启。bios厂商不同,一般的菜单选项名称也不相同,不过大概意思都差不多。比如咱们开机进入bios界面后,会有类似这样的选项:
memory hole at address 15m-16m
将此选项设为enable或disable便开启或关闭对这类扩展ISA设备的支持。
话说,起初定义这个0xe801子功能,就是为了支持扩展ISA服务。现在来回答这个问题。
如果检测到的内存容量大于等于16MB,bios 0x15中断返回的结果中,AX*1024必然是小于等于15MB,而BX*64*1024肯定大于0。所以,内存容量分成两部分展示,只要符合这两个结果,就能检查出内存空洞。当然如果物理内存在16MB以下,此方法就不灵了,但检测到的内存依然会小于实际内存1MB。所以实际的物理内存大小,在检测结果的基础上一定要加上1MB。
至于第2个疑问,手册上是这么说的:
Not sure what this difference between the "Extended" and "Configured" numbers are, but they appear to be identical, as reported from the BIOS.
这句英文中的两个单词"Extended"和"Configured"已经在表5-4的“用途”列中出现了,后面数字相同的为一组,比如AX的用途为 Extended 1,CX的用途为Configured 1,AX和CX为一组,BX和DX类同。
这句英文大概意思是:不清楚"Extended" 和 "Configured"之间的区别,但它们似乎是相同的,bios就是这样说的。咱们这里暂时就不深究了,毕竟咱们只是想拿到内存容量,以后等咱们有精力了再深入学习吧。
此中断的调用步骤:
1将AX寄存器写入0xE801。
2执行中断调用int 0x15。
3在CF位为0的情况下,“返回后输出”中对应的寄存器便会有对应的结果.
【再续】
-
Java基本类型占用的内存大小 ,运算符笔记
2021-01-06 16:32:12Java基本类型占用的内存大小 ,运算符,计算机存储换算单位笔记 ...单位换算2.基本类型 一、运算符 按位与运算符(&) 如果相对应位都是1,则结果为1,否则为0 运算规则:0&0=0; 0&1=0;Java基本类型占用的内存大小 ,运算符笔记
文章目录
一、运算符
按位与运算符(&)
如果相对应位都是1,则结果为1,否则为0 运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:两位同时为“1”,结果才为“1”,否则为0
另,负数按补码形式参加按位与运算。
“与运算”的特殊用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
例:设X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
还可用来取X的2、4、6位。按位或运算符(|)
如果相对应位都是0,则结果为0,否则为1 参加运算的两个对象,按二进制位进行“或”运算。
运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1; 即 :参加运算的两个对象只要有一个为1,其值为1。例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。
另,负数按补码形式参加按位或运算。
“或运算”特殊作用:
(1)常用来对一个数据的某些位置1。
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。
例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。异或运算符(^)
如果相对应位值相同,则结果为0,否则为1 参加运算的两个数据,按二进制位进行“异或”运算。
运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
“异或运算”的特殊作用:
(1)使特定位翻转 找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。
例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。
(2)与0相异或,保留原值 ,X ^ 0000 0000 = 1010 1110。取反运算符(~)
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。参加运算的一个数据,按二进制位进行“取反”运算。
运算规则:~1=0; ~0=1;
即:对一个二进制数按位取反,即将0变1,1变0。
使一个数的最低位为零,可以表示为:a&~1。
1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。左移运算符(<<)
按位左移运算符。左操作数按位左移右操作数指定的位数。 将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。
例:a = a << 2 将a的二进制位左移2位,右补0,
左移1位后a = a * 2;
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。右移运算符(>>)
按位右移运算符。左操作数按位右移右操作数指定的位数。 将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。
操作数每右移一位,相当于该数除以2。
例如:a = a >> 2 将a的二进制位右移2位,
左补0 or 补1 得看被移数是正还是负。例如,下面的代码被求值后,temp 的值是 -4:
-14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)。
var temp = -14 >> 2
二、复合赋值运算符
操作符 描述 列子 += 加和赋值操作符 C+=A等价于C=C +A -= 減和赋值操作符 C-= A等价于C=C-A *= 乘和赋值操作符 C*=A等价于C=C * A /= 除和赋值操作符 C/=A等价于C=C / A (%)= 取模和赋值操作符 C%=A 等价于 C=C%A <<= 左移位赋值运算符 C <<=2 等价于 C = C<<2 >>= 右移位赋值运算符 C >>=2 等价于 C = C>>2 &= 按位与赋值运算符 C&= 2等价于C=C&2 ^= 按位异或赋值操作符 C^= 2等价于C=C^2 I= 按位或或赋值操作符 CI= 2等价于C=C I 2 三、 逻辑运算符
操作符 描述 列子 && 逻辑与运算符,当且仅当两个操作室为真,条件才为真 A=true,B=true.(A&&B)为真 II 逻辑或运算符,两个操作数任何一个为真,条件为真 A=true,B=false. (A ! 逻辑非运算符,用来反转操作数的逻辑状态. 如果条件为true, 逻辑非将得到false A=false,B=false. !(A&&B) 为真 三、基本类型
1.单位换算
1MB=1024KB
1KB=1024B
1B(字节)=8位由八个二进制位组成
2.基本类型
类型 字节数 byte 1B(字节)=8bit short 2B(字节)=16bit char 1B(字节)=8bit byte 4B(字节)=32bit int 4B(字节)=32bit float 4B(字节)=32bit long 8B(字节)=64bit long 8B(字节)=64bit 在Java中,boolean被当成int处理,所以4个字节。
对于32位的JDK:
new一个Object对象占用4+8=12字节,其中,4个字节是引用,8个字节是堆内存。对于64位的JDK:
new一个Object对象占用8+16=24字节。其中,8个字节是引用,16个字节是堆内存。在Hotspot中,每个对象占用的总空间是以8的倍数计算的,对象占用总空间(对象头+声明变量)不足8的倍数时候,自动补齐。而,这些被填充的空间,我们可以称它为“填充物”。
-
不同类型占用内存大小
2021-03-01 22:11:02单位换算: 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 ...字:word 字节:byte 位: bit
-
字长(bit):是指字的长度
-
单位换算: 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit)
-
16位编译器
char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned long: 4个字节
-
32位编译器
char :1个字节 char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) short int : 2个字节 int: 4个字节 unsigned int :4个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned long: 4个字节
-
64位编译器
char :1个字节 char*(即指针变量): 8个字节 short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 8个字节 long long: 8个字节 unsigned long: 8个字节
-
-
常见Mbps、mb、Kbps、kb、bps单位换算-洋葱先生-杨少通
2020-09-15 19:33:14我们大部分网友可能 会认识MB(兆字节),这个与我们常用的比较多的内存大小居多。但是如果牵涉到带宽Mbps的时候,可能有点难以理解了,比如我们经常看到有2Mbps带 宽,很多人会理解为2MB,然后用文件拖动测试发现...我们在选择VPS、服务器主机的时候,经常会看到常见的MB、GB、Mbps等等一些标注单位。我们大部分网友可能 会认识MB(兆字节),这个与我们常用的比较多的内存大小居多。但是如果牵涉到带宽Mbps的时候,可能有点难以理解了,比如我们经常看到有2Mbps带 宽,很多人会理解为2MB,然后用文件拖动测试发现怎么没有2MB,于是会各种的抱怨商家如何黑心。
f05358186748194891ec6e80e2660cce.jpg
所以,我们在选择VPS服务器的时候,需要看清楚商家的标注单位,这样在换算之后就不难理解真实的数据参数。这样我们在选择的时候也就明白,这里简单的整理如下。
第一、简单的概念
Mbps,表示Milionbit per second,含义就是百万位每秒;
Kbps ,表示Kilobit per second,含义就是千位每秒;
bps ,表示bit per second,含义就是位每秒;
MB,表示百万字节也称兆字节;
KB,表示千字节;
B,表示字节;
第二、基本的换算
1MB=1024KB=1024*1024B
1Mbps=1000Kbps=1000/8KBps=125KBps
看到这里就不难理解,如果我们选择VPS主机的时候1Mbps带宽,那下载速度一般不会超过125KB每秒,而不是我们理解的的1MB/S。这样依次类推,我们选择2Mbps带宽,那下载速度不会超过250KB每秒。
-
十六进制数对应内存单位(K、M、G)大小
2020-09-16 09:08:13然后进行倍数换算,用需要转换的十六进制数去与比较接近的常用十六进制数,得出倍数关系,再将这种倍数关系转换成十进制数的倍数关系,然后再乘以常用十六进制数的对应十进制数即可。 我们来看几个例子: 0x5000:... -
Linux 磁盘存储管理 详细注解
2020-12-07 21:16:06内存大小单位换算 1B=8字节 , 1024字节=1K , 1024K=1M , 1024M=1G , 1024G=1T 磁盘介绍: 名词 磁盘/硬盘/disk是一个东西,与内存不... -
Java对象所占内存空间
2020-12-03 16:23:36Java对象所占内存空间Java对象所占内存空间硬盘各容量单位的换算关系:Java类型所占空间Java计算对象所占内存大小 Java对象所占内存空间 bit是计算机中最小的储存单位,一个byte是由8个bit组成,它是最小的可寻址... -
编译ROM时添加内置软件太多导致Image内存不足
2017-07-24 15:57:57platform:firefly RK3399 os:Android7.1.1 编译ROM时添加内存及文件过大时导致Image内存不足,在device/rockchip/rk3399/box/BoardConfig.mk里... := 1500000000,然后修改最大不要1.5G,单位换算成G,计算一下最好 -
对 int a=2;在内存存储的理解!
2011-08-14 23:18:00定义了一个变量,给它取个名字叫... 而在存储的时候是这样存的由于内存的最小单位是字节,也就是1B是最小的单位,而一个int类型的数据在32的系统中要占用32位大小, 换算一个 8位=1字节 即8bit=1B 那么32位=4字节。 ... -
RedHat Linux enterprise 5.4下安装配置Oracle 10.2
2011-04-21 21:21:39在RedHat的32位操作系统中,该文件的配置单位均是以页为单位的,换算方式是1页=4K,按照这种换算方式可以将K和实际内存以及CPU的大小进行服务器的调优。 下面我们以物理内存为1G,SWAP大小为2G的例子进行实际讲解 ... -
C面经——基础部分
2020-08-09 11:54:051、计算机内部的内存单位换算 1G = 2^10 M = 2 ^ 20 K = 2 ^30 B 1B = 8bit 例:100万个整形数据占多大? 答:1M 2、fwrite函数的参数是什么? 答:int fwirte(const void *ptr,int size,inr count,FILE * ... -
redis 3.0配置说明
2017-05-22 11:20:46redis.conf# Redis配置文件示例. ...# ./redis-server /path/to/redis.conf# 当需要配置内存大小时,可能通常以1k,5GB,4M等的形式指定,单位换算如下: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 -
十分钟复习Bitmap
2020-11-05 22:33:091.1 屏幕尺寸1.2 屏幕分辨率1.3 dpi1.4 屏幕尺寸、分辨率、dpi换算关系1.5 密度无关单位 dp、sp1.6 dp、px、dpi[换算关系](https://developer.android.com/training/multiscreen/screendensities#dips-pels)2 Bitmap... -
02-JVM实战
2020-10-18 02:18:3002、实践和单位换算 1Byte(字节)=8bit(位) 1KB=1024Byte(字节) 1MB=1024KB 1GB=1024MB 1TB=1024GB 设置堆内存大小和参数打印 -Xmx100M -Xms100M -XX:+PrintFlagsFinal 查询+PrintFlagsFinal的值... -
oracle ORA-27102: out of memory解决办法
2020-05-18 09:18:21操作系统版本: Linux 64位 数据库版本:任何版本 问题描述 修改数据库参数后启动数据库报错 ...共享内存在shmall这个参数中设置,shmall单位为页,换算成内存大小还需要把两个值相乘,如shmall=4194304,那么 -
06-八种数据类型和基本数据类型的转换
2020-10-09 16:56:39八种数据类型 字节(Byte):计算机文件大小的基本单位。Bit意为“位”、“比特”,是计算机运算的基础;二进制中的一位,是二进制最小信息单位。...单位换算 1字节(Byte)=8位(Bit) 1KB=1024byte 1MB=1024. -
Linux命令查询系统基本配置信息
2019-10-31 20:36:31内存显示:132275600 kB,单位换算一下有126G 磁盘显示:根据分区大小,小计算了一下有5T之多 感觉好像是在炫富啊 ,哈哈,不是我滴啦,废话不多说记录一下,方便以后备用! 查看操作系统信息 命令:head -n 1 /... -
关于字节
2007-08-09 14:18:00一个Byte等于8个bit(位),bit是最小的单位。 就好想你用宽带上网,1M、2M、10M... Byte用于计算硬盘、内存的大小。 1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024M 1TB=1024GB 它们的换算是2的10次方,但是我们买硬盘和内存 -
字节和位 B和b的区别
2020-03-08 15:14:33“B”不是最小的单位,“B”是Byte的意思,一个Byte等于8个bit(位),bit是最小的单位。 就好想你用宽带上网,1M、2M、10M...Byte用于计算硬盘、内存的大小。 1B=8bit 1KB=1024B 1MB=1024KB 1GB=1024M 1TB=1024GB ... -
1tb等于多少g 1TB和500G有什么区别
2020-07-09 15:46:30移动硬盘、U盘是生活中常见的用品,他们的内存大小是什么标准。很多人对于1tb等于多少g和1tb和500g有什么区别不太了解,下面小编将为大家详细介绍,希望对大家有帮助! 1tb等于多少g 移动硬盘的1TB等于1024G。 TB:... -
服务器宽带估算及选择
2018-09-26 15:45:30购买服务器除了选择配置(CPU、内存、存储)外,另外一个重点就是宽带的选择,1M、5M、10M、20M等等不知道如何选择,一方面...服务器宽带单位换算 Byte(字节)和bit(比特):一般情况下,我们用大写的B代表Byt... -
每天一个新知识之Linux的磁盘管理及在线磁盘新增
2020-06-15 22:26:16一、常用磁盘管理命令 ...单位换算,使用人类可读的格式 -T 增加文件系统类型 -l 只显示本机的文件系统 2、dh命令 Linux du命令用于显示目录或文件的大小,du会显示指定的目录或文件所占用的磁盘空间。 #用法: du -
文件下载带宽计算
2020-04-09 10:39:59一,内存换算 1TB=1024GB; 1GB=1024MB; 1MB=1024KB; 1KB=1024Byte; 1Byte=8bit。 二,单位含义 MB的含义是“兆字节”,一般用作文件大小; Mb的含义是“兆比特”,一般用作网络... -
面试官问基本数据类型不会回答,看这一篇足够了(建议收藏!!!)
2021-01-09 16:15:30计算单位换算简单理解字节 数据类型的作用是什么? 程序当中有很很多数据,每一个数据都是有相关类型的,不同的数据类型的占用的空间大小也是不一样的,数据类型的作用就是指导JVM在运行程序的时候给该数据分配多大... -
字节数组 Byte[]
2019-12-17 11:06:32字节(Byte 发音:/'bait/):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。符号:英文标点占一个字节,中文标点占... -
『无欲则无求』Linux文件系统管理 — 57、常用硬盘管理命令
2020-07-08 10:33:31文章目录1、df命令2、du命令(1)`ls或者ll`命令统计目录的大小是不准确的,为什么?(2)du与df的区别3、fsck文件系统修复命令4、显示...-h:换算成人类习惯看的单位(人性化显示)。 -T:多出了一列文件系统类型。 -
位字节等计量关系
2010-07-14 11:48:00字节(Byte):字节是通过网络...”占2个字节的大小 一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个字节,此类单位的换算为: 1 艾字节(EB,Exabyte -
C# 线程数
2015-04-16 15:23:00理论上,一个进程可用虚拟空间是2G,默认情况下,线程的栈的大小是...“***属性”,选择“配置属性”下的“链接器”下的“系统”,将堆栈保留大小设置为:524288,这个值就是512KB,这里的单位是字节,所以要自己换算,这样理... -
EasyAndroid 包含各种工具类的集合,会不定期更新,欢迎贡献code 使用方法: 2.0.0以后,放弃了support库,请使用AndroidX ...resource2Bitmap : 根据资源ID获取一个指定大小的bitmap getBitmapFromFile ...
-
Linux C 编程一站式学习.pdf
2010-11-24 01:27:27作者:宋劲杉,PDF 格式,大小 8 Mb。 这是一本从零基础开始学习编程的书,不要求读者有任何编程经验,但读者至少需要具备以下素质: 熟悉Linux系统的基本操作。如果不具备这一点,请先参考其它教材学习Linux系统的...