Linux内核里容易忽略的几个小知识点

本文详细解释了计算机基础概念,包括字长、字符符号问题、字节顺序及内核时间计量方法。通过实例分析,帮助读者深入理解这些核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LKD这本书虽然看过很多遍,但在工作中却发现一些小知识点却容易被忽略,包括自己在内,因此有必须把一些小知识点再强化小结一下。


1、字长
能够由机器一次处理完成的数据被称为字。某处理器多少“位”,通常指的就是它的字长。
出于某些历史和主观原因,一些操作系统根据数据长度把数据划分为字节(8位)、字(16位)、双字(32位)、四字(64位)。

2、char的符号问题
C标准里char类型可以带符号或不带符号,由编译器或处理器决定。大部分体系上,char默认是带符号的,但在ARM处理器上,char是不带符号的。比如当char默认不带符号时,
char i = -1;
它实际上把255赋给了i(整数在内存里是以补码的形式存放的,正数的补码是它本身,负数的补码是取绝对值,取反再加1)

3、字节顺序
大端big-endian:高字节存在内存低地址,低字节存在内存高地址。
小端little-endian:高字节存在内存高低址,低字节存在内存低地址。
ARM和i386都是小端字节顺序。
下面例字可以判断机器的字节顺序:
int x = 1;
if(* (char *) &x == 1)
   /*小端字节顺序*/
else
   /*大端字节顺序*/

(*和&运算符的优先级相同,但按自在右向左的方向结合)

4、内核里的时间
不要假定内核中断发生的频率,应该使用HZ来计量时间,计量时间的正确方法是乘或除以HZ,比如
HZ,2*HZ,HZ/2,HZ/1O

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值