Linux内核相关基础知识学习笔记(一)

想学的知识太多了,你点进去一个,发现了更多不会的,再点又是一个不会的,对知识的盲目渴望牵引着。
首先应该明确自己的目标、有自己的路线,就别被飞着的蝴蝶带跑了。
优秀B站博主:
简说linux

内核程序开发与用户态程序开发的区别

用户态程序开发以int main作为程序的入口。
而内核程序没有main,以module_init(xx_init_function)作为入口加载函数,卸载时是module_exit函数(用于清理这个模块申请的资源)。

# 加载模块至内核运行
insmod hello.ko 
# 显示内核中全部加载的模块
lsmod
# 卸载模块
rmmod hello.ko

linux更多命令

内核代码的调试手段

printk();
# 打印调用栈
dump_stack();
WARN(condtion, format...); 
# 也会打印调用栈
WARN_ON(condtion, format...);
# 触发bug后就没法rmmod卸载这个模块,只能重启
BUG(); 
BUG_ON(condtion, format...);
#panic会触发死机
panic();

Linux内核机制

特点:模块可裁剪

EL0 EL1 EL2是什么

这三个通常用于ARM-v8 A架构中描述操作系统的上下文执行级别。限制了权限和隔离层次。
EL0:User Mode用户态,非特权执行级别,运行普通应用程序。
EL1:Kernel Mode内核态,特权执行级别,运行操作系统内核。
EL2:Virtual Machine Monitor, VMM,虚拟机监视器执行级别,支持虚拟化,运行虚拟机监控器。

OOM

out of memory,内存不足。

文心一言:
OOM错误可能由多种原因引起,包括但不限于:
内存泄漏:程序在运行过程中未能正确释放不再使用的内存,导致内存泄漏。随着时间的推移,泄漏的内存会逐渐累积,最终导致系统可用内存耗尽。
大量数据加载:当程序需要处理大量数据时,如果一次性加载到内存中,可能会超出系统的可用内存容量,导致OOM错误。
内存限制:操作系统和硬件平台对每个进程可用的内存资源有一定的限制,如果程序尝试使用超过这些限制的内存量,就会触发OOM错误。
堆栈溢出:在某些编程语言中,当函数调用的层数过多或者递归调用过深时,可能会导致堆栈溢出,虽然这不是直接的OOM错误,但也是一种与内存相关的异常。

POSIX

POSIX是一套由IEEE(电气和电子工程师协会)制定的操作系统接口标准,全称为“Portable Operating System Interface”,即“可移植操作系统接口”。它的主要目的是使不同的操作系统之间可以互相兼容,从而实现软件在不同操作系统之间的可移植性。
POSIX定义了一系列API(应用程序接口)和命令行工具,这些API和工具规定了操作系统应该提供哪些功能,并规定了这些功能的调用方式和行为

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值