笔记整理—内核!启动!—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文件系统。

相关推荐
电工小王(全国可飞)1 小时前
STM32 HAL库 CAN过滤器配置
stm32·单片机·嵌入式硬件
c7_ln1 小时前
编程视界:C++命名空间
开发语言·c++·笔记
路由侠内网穿透1 小时前
本地部署资源聚合搜索神器 Jackett 并实现外部访问
linux·运维·服务器·网络协议·tcp/ip
mercyT2 小时前
Kotlin学习笔记之类与对象
笔记·学习·kotlin
四夕白告木贞2 小时前
stm32week6
stm32·单片机·嵌入式硬件·学习
zhongvv2 小时前
OTP单片机调试工具之—应广单片机ADC调试案例
嵌入式硬件·应广单片机·adc采样·otp调试·串口数据显示
啥都想学的又啥都不会的研究生2 小时前
Redis设计与实现-服务器中的数据库
运维·服务器·数据库·redis·笔记·缓存·性能优化
djykkkkkk2 小时前
ubuntu 和 RV1126 交叉编译Mosqutiio-1.6.9
linux·运维·ubuntu
小雀丝2 小时前
电机控制常见面试问题(六)
嵌入式硬件·电机·电机控制
蜕变的土豆3 小时前
二、重学C++—C语言核心
c语言·c++