笔记整理—内核!启动!—linux应用编程、网络编程部分(6)随机数与proc文件系统

随机数实际上只存在于理论上,我们正常情况下接触到的随机数都是伪随机数。我们可用使用rand()连续多次调用返回一个伪随机数;使用srand()去设置随机数产生的种子。

rand()返回的值为0~rand_MAX之间的一个数,a=rand%6就返回0~6之间的一个值。只去使用rand()函数,多次访问的值为相同值,因为返回的是同一序列,rand()的默认使用1为种子。所以每次使用rand()函数都应该去使用srand()函数设置随机数种子,从而得到不同的随机数。一般为了得到不同的随机数种子,会使用time的返回值做种子,tiem以秒为单位,使用连续调用的最短时间为1秒以上,毕竟种子相同则输出的随机数将会相同。

正常的项目中,随机数将不只会使用rand()函数去得到,而是使用一定的算法去实现更真实一些的随机数,例如可用使用内核中的随机事件作为随机数种子。

proc文件系统

操作系统级别调试:

(1)简单的程序将使用单步调试:对环境有要求如JLink。

(2)复杂的程序使用printf打印调试信息。

(3)框架体系使用日志记录信息作为调试:输出重定向。

(4)内核调试存在的困境:①内核不能使用以上三种调试方法。②项目太大,添加一个功能会对其他功能造成影响。③编辑成本高。

为了降低内核调试于学习的难度,引入了proc文件系统。

在内核架构添加一个虚拟文件系统,内核运行时,将一些关键数据结构以文件的形式呈现于/proc目录中,将不可见的数据结构以可见的方式呈现。

/proc/cmdline存放的就是bootcmd的操作值。

/proc目录下的文件大小都是0,因为都是虚拟文件,本质就是内核一个数据结构格式化后的字符串。

/proc/cpuinfo可见的cpu信息。

/proc/devices所有设备安装的东西。

这些文件也就是有了系统情况输出的可能。使用shell中的cat结合正则表达式可用得到想要的信息。

sys文件系统,本质和proc文件系统一样,都是虚拟文件系统,都是将内核信息可视化。区别在于/proc为只读,但/sys为可读可写。写入时支持值更改,但有可能会对硬件造成影响,因为有的硬件只负责输出。原本的proc文件系统是支持值更改的,后面由于proc的管理逐渐混乱,出现了sys文件系统。

相关推荐
顶点多余5 分钟前
9.15 面试问题总结(一面挂)
linux·面试·职场和发展
顺风尿一寸13 分钟前
从 ls -U 到 Tomcat libs加载jar包:ext4 目录哈希序如何影响 Java 文件排序顺序
linux·jvm
Logic10128 分钟前
C语言/数据结构位运算题解:异或XOR找出独特卡片数字——只出现一次的元素
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质
小雪崩30 分钟前
嵌入式学习 day49:ARM基础
嵌入式硬件·学习
田径他爸来了35 分钟前
嵌入式学习第38天——裸机imx6ull(uart接口;配置波特率为115200,8位数据位,无校验,一位停止位)
嵌入式硬件·学习
问心无愧051337 分钟前
ctf show web53
笔记
qeen8742 分钟前
【Linux】操作系统之进程介绍(一)
linux·笔记·学习·进程
邪修king1 小时前
Re:Linux系统篇(二十五):文件系统(一):磁盘硬件底层原理:从物理结构到 CHS/LBA 寻址,搞懂硬盘数据的定位逻辑
java·linux·运维·gpt
小则又沐风a1 小时前
TCP协议讲解-----了解TCP可靠性的基石
linux
八年。。1 小时前
WSL学习(三)——搭建Linux + C++ + SOME/IP 基础开发环境
开发语言·笔记·ubuntu