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

相关推荐
晓13139 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
梵刹古音11 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
唐装鼠18 分钟前
Linux 下 malloc 内存分配机制详解
linux·malloc
予枫的编程笔记18 分钟前
【Linux入门篇】Linux运维必学:Vim核心操作详解,告别编辑器依赖
linux·人工智能·linux运维·vim操作教程·程序员工具·编辑器技巧·新手学vim
17(无规则自律)30 分钟前
深入浅出 Linux 内核模块,写一个内核版的 Hello World
linux·arm开发·嵌入式硬件
芯岭技术37 分钟前
PY32MD310单片机:高性能、低功耗的32位电机控制微控制器
单片机·嵌入式硬件
中二病码农不会遇见C++学姐1 小时前
Linux下的.run文件
linux
予枫的编程笔记1 小时前
【Linux入门篇】摆脱权限混乱困境:Linux用户组管理+sudo提权,一步到位
linux·linux运维·后端开发·linux用户管理·linux权限配置·chmod命令·sudo配置
杜子不疼.1 小时前
Ascend_C自定义算子开发
c语言·开发语言
一个人旅程~1 小时前
Dell n4020双系统分区步骤和linux优化操作
linux·windows·电脑