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

相关推荐
james bid4 分钟前
MacBook Pro 2015 上 XUbuntu 24.04 启用 eGPU (GeForce GTX 1080 Ti) 和核显黑屏问题解决
linux·ubuntu·macos·cuda·egpu
龙吟游戏4 分钟前
Ubuntu Server 25.10安装
linux·运维·ubuntu
摇滚侠4 分钟前
Redis 零基础到进阶,类型概述,命令查询,key 操作命令,大小写和帮助命令,string,list,hash,set,笔记11-19
redis·笔记·哈希算法
zzxxlty6 分钟前
windows 迁移ubuntu wsl从C盘到D盘
linux·运维·ubuntu
时空未宇7 分钟前
Hi3403-Demo板烧写OH-L1镜像烧写指引
嵌入式硬件
阿蒙Amon10 分钟前
JavaScript学习笔记:5.函数
javascript·笔记·学习
ouliten11 分钟前
《Linux C编程实战》笔记:mmap
linux·c++·笔记
小尧嵌入式11 分钟前
深入理解C/C++指针
java·c语言·开发语言·c++·qt·音视频
呆萌小新@渊洁11 分钟前
Linux离线环境安装ffmpeg
linux·ffmpeg·php
梦想的旅途214 分钟前
Hook技术与内存注入在企业微信外部群数据获取中的技术与风险分析
linux·运维·服务器