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

相关推荐
牛奶咖啡13几秒前
从零到一使用Linux+Nginx+MySQL+PHP搭建的Web网站服务器架构环境——LNMP(上)
linux·lnmp·ngnix的源码安装部署·mysql的二进制文件安装部署·php源码的安装部署·记录并解决安装php的各种问题
Yuki’11 分钟前
网络编程---UDP
c语言·网络·网络协议·udp
清木!20 分钟前
数据仓库详解
笔记
软件测试很重要26 分钟前
UOS20系统安装与 SSH/XRDP 远程访问功能配置指南
linux·运维·ssh
.YM.Z1 小时前
C语言——文件操作
c语言·文件操作
一川月白7091 小时前
ARM架构---指令集分类、内核组成,RAM与ROM的分类、工作模式、异常处理机制、立即数、s后缀、指令说明、汇编和 C 函数的相互调用
arm开发·函数调用·工作模式·arm内核·risc与cisc·s后缀·立即数
咕咚.萌西1 小时前
RISC-V体系架构
嵌入式硬件·架构·risc-v
玉~你还好吗2 小时前
【嵌入式电机控制#进阶10】参数辨识(一):电阻辨识
单片机·嵌入式硬件
GanGuaGua2 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
猫头虎2 小时前
2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
stm32·单片机·嵌入式硬件·物联网·硬件架构·51单片机·硬件工程