关于linux shell 算术运算

关于linux shell 算术运算,第1张

let指执行C风格算数表达式

1. --a &&echo "TRUE" || echo "FALSE"

可以看作((--a)&&(echo "TRUE"))||(echo "FALSE")

先对a自减,a=0,然后 a为逻辑非,故不执行&&后的语句,而由于||之前的表达式值为FALSE,故执行||后的语句

2. b-- &&echo "TRUE" || echo "FALSE"

可以看作(b &&(echo "TRUE"))||(echo "FALSE")b--

b=1 然后&&做echo命令,而echo的返回值非零,故||之后的表达式不执行

3.a<4为真,故c=9

echo的c=9

假设你的数据时存储在一个文件中,文件名字为test.txt

第一列的和:

cat test.txt | awk '{sum1+= $1}END{print sum1}'

第一列和第二列的平均值:

cat test.txt | awk '{sum1+=$1sum2+=$2count++}END{print sum1/count,sum2/count}'

额.........2^12是表示页的大小是4KB了......2^20就是页的多少.2^20个页,每个页是4K,这样能寻址范围就是32为系统的最大上限了.就是4G了.(2^20*4K=4G)

=================================================================

为何2^12表示页是4k的原因是因为一个内存地址对应一个最小内存单元,就是1个字节.4096个内存地址.就是4K这么大小的内存里含有的内存最小单元的个数.

2^20次怎么来的是这样的,包含4096个的地址的表(页索引表)有1024个(因为10位索引每一种变化都指向一个表所以有1024个).有一个表(一级页目录表)包含1024个(道理同上)这样的表.这样就变成最简单的乘法算数了.1024*1024*4096=4G

=================================================================

之所以不采用一级也表是因为一级页表的话就是20位的偏移量.2^20个偏移量存在内存里是比较占空间和没效率的.所以最基础的就是从2级也表开始.在各种系统里页表分级不同偏移位不同.linux 2.6内核里设计上有4级页表.但是只用了3级页表


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7241921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存