- 博客(186)
- 资源 (2)
- 收藏
- 关注
原创 内核编程十一:进程的数据结构
是用于描述进程的核心数据结构,存储了进程的所有关键信息,包括进程ID、状态、调度信息、内存管理信息、文件描述符等。:存储该进程的虚拟内存区域(VMA,Virtual Memory Area)。:指向进程的内存管理结构,包含代码段、数据段、堆、栈等信息。:进程 ID,是 Linux 内核唯一标识一个进程的数值。:线程组 ID,同一进程的多个线程共享相同的。:保存进程的调度信息,如优先级、时间片等,供。:保存进程打开的所有文件的描述符信息,如。:指向该进程创建的子进程列表。复制父进程的部分信息,如。
2025-03-26 00:00:00
776
原创 内核编程九:进程概述
通常把进程定义为程序执行的一个实例,因此,如果16个用户同时运行vi,那么就有16个独立的进程(尽管它们共享同一个可执行代码)。是程序运行后的实例,它是动态的,包含代码、数据、堆栈、CPU寄存器等信息。,包括内存、CPU时间、文件描述符等,以保证不同进程之间不会相互干扰。是存储在磁盘上的可执行文件,本质上是静态的代码和数据。:创建一个新进程(子进程),几乎完全复制父进程。:进程可以执行,但正在等待CPU调度。:系统为每个进程分配的唯一编号。:在进程内加载并执行新的程序。:查看当前系统的所有进程信息。
2025-03-25 00:00:00
623
原创 内核编程十:进程的虚拟地址空间
请思考当以下这个经典的hello world代码,调入内存并且在cpu上运行变成一个进程的时候,代码中的各个数据在内存中是如何进行分布的。
2025-03-25 00:00:00
483
原创 NetworkManager服务与network服务的区别
在 Linux 系统中,NetworkManager 和 network 服务都是用于管理网络连接的,但它们的设计理念和使用场景有所不同:
2025-03-13 00:00:00
529
原创 /dev/console文件详解
printk只有日志级别小于等于时,才会写入。可通过读取和修改。默认情况下,及以上级别) 的消息才会进入。可以通过让所有日志级别都输出到。可能是物理终端、串口终端或伪终端,具体取决于系统配置。
2025-03-07 00:00:00
785
原创 内核编程七:Linux 内核日志的级别
Linux 内核日志(Kernel Log)有 8 个不同的级别(Severity Levels),用于表示消息的严重性。它们的定义在头文件中,并且可以用于printk()进行日志打印。KERN_EMERGKERN_ALERTKERN_CRITKERN_ERRKERN_INFOKERN_DEBUGprintk()如果printk()没有指定级别,默认使用,一般为。可以使用dmesgdmesg在文件中可以查看和修改printk()4 4 1 7你可以修改日志级别,比如设置默认日志级别为KERN_INFO。
2025-03-06 00:00:00
1406
原创 内核编程八:基于printk宏的pr_* 宏
pr_*在之前的文章讲到printk的使用方法,我们发现通过printk宏打各个级别的日志非常繁琐,所以在Linux内核中基于printk宏又新定义了一些宏,例如在。
2025-03-06 00:00:00
744
原创 内核编程六:kernel log buffer
Linux 内核日志缓冲区(Kernel Log Buffer)用于存储内核日志消息,包括启动过程、驱动程序信息、错误报告和调试信息。
2025-03-05 08:30:00
314
原创 修改/etc/security/limits.conf后本地登陆生效,ssh登陆后不生效问题
在各类Linux发行版的默认配置中一般不会有这个问题,但是有一些云厂商或操作系统厂商考虑到Linux的安全问题,会进行相关程序配置文件的修改,来提升操作系统的安全性,
2025-03-05 08:30:00
469
原创 内核编程一:用户空间和内核空间
用户空间是普通应用程序运行的环境,位于CPU 运行级别(Ring 3),具有受限的访问权限,无法直接操作硬件或内核资源。内核空间是 Linux 内核运行的环境,位于CPU 运行级别(Ring 0),具有最高权限,可直接访问硬件设备和管理系统资源。用户空间(User Space)内核空间(Kernel Space)运行级别Ring 3(低权限)Ring 0(最高权限)访问权限受限,不能直接访问硬件拥有全部权限程序示例bashvimgcc进程管理、设备驱动、文件系统关键作用运行用户应用程序。
2025-03-04 08:30:00
900
原创 内核编程二:CPU特权级别
CPU 运行级别通常指的是,用于控制操作系统和应用程序的权限,以确保系统的安全性和稳定性。x86 处理器(如 Intel 和 AMD)的保护模式定义了,在大多数现代操作系统(如 Linux、Windows)中,只使用。ARM 处理器的运行级别称为在实际应用中,普通程序通常运行在,而操作系统内核和驱动运行在。
2025-03-04 08:30:00
1165
原创 内核编程三:Library and system call APIs
在Linux内核开发中,**库(Library)系统调用API(System Call API)**是两个重要的概念,它们共同构成了用户空间和内核空间之间的交互机制。
2025-03-04 08:30:00
805
原创 内核编程五:从hello world开始
这是一个简单的 Linux 内核模块(LKM)示例,模块加载时打印 “Hello, world”,卸载时打印 “Goodbye curl world”。通过 module_init 和 module_exit 宏,分别指定了模块加载和卸载时的函数。
2025-02-27 10:38:30
1039
原创 Linux网卡为什么没有对应的设备文件
网络设备与硬盘、串口等硬件设备的工作原理不同,因此它们不需要通过常规的设备文件来进行交互。Linux通过内核的网络协议栈来处理网络设备的通信,而网络接口通常由操作系统内核和网络工具进行管理,而不是通过/dev/目录中的设备文件。因此,Linux中的网络设备和接口(如eth0wlan0)不直接对应于/dev/目录下的设备文件。
2025-02-10 09:34:13
468
原创 Linux网卡命名规则
Linux的网卡命名规则从传统的ethX命名方式,转向了基于硬件位置、设备类型等因素的更为可靠的命名规则。这种命名规则旨在提供一致性和可预测性,尤其在涉及多网卡和虚拟化的环境中。
2025-02-10 09:32:38
924
原创 通过ethtool解读网卡信息
ethtool DEVNAME 指令可以打印网卡的基本信息,但是这些输出的内容代表什么意思呢?一下是一些常见接口的实际输出内容和说明。
2025-01-24 10:42:47
1069
原创 Linux文件权限概述
在Linux操作系统中,文件权限控制是保护系统安全性的重要机制。文件权限决定了哪些用户可以对特定文件或目录进行读取、写入和执行操作。Linux的权限管理基于用户、用户组以及其他用户的访问控制。
2025-01-20 10:22:22
904
原创 Authentication token manipulation error
有时候删除shadow文件的此tag,passwd命令重置密码的时候依旧提示Authenticationtokenmanipulationerror,请参考后续解决方法。或者通过在别的Linux上通过passwd命令生成密码后,将密码复制到故障主机的shadow文件中。通常来说文件添加了不可修改(immutable)的设置,删除此设置即可。通过解决方法1还是不行的情况下,可以清空root密码,直接登陆系统。手动生成密码,复制粘贴到shadow文件中。
2025-01-20 10:02:42
886
原创 passwd & shadow 文件概述
是在类Unix操作系统(如Linux)中存储用户密码和与密码相关信息的文件。与文件相比,主要用于安全地存储密码,确保密码信息不会被非授权的用户轻易访问。通常,只有超级用户(root)可以读取和写入,而普通用户无法访问它。文件的每一行都对应一个用户账户,并包含关于密码和帐户的一些安全属性。username:用户的登录名,标识该行对应的用户。password:加密后的用户密码。这个字段存储用户的密码的哈希值。如果密码为空(例如或!),表示该账户没有密码或者被禁用。lastchg。
2025-01-20 09:37:23
988
原创 ethtool概述
ethtool是一个非常有用的网络工具,可以帮助管理员和开发者在 Linux 系统上快速查看和配置网络接口的各种参数。它能够为用户提供详细的网络接口信息,并允许对接口进行各种性能优化和调优。
2025-01-17 09:37:06
433
原创 网卡接收报文的过程
• 网卡通过直接内存访问(DMA)将接收到的数据从网卡的缓冲区传输到系统内存。• 一旦数据包到达协议栈,操作系统会根据协议类型(如IP、TCP、UDP等)进行进一步的分发和处理,通常涉及到将数据传递给具体的网络套接字(socket),最终交由对应的应用程序。CPU在接收到中断信号后,会停止当前的任务,转而处理网卡的接收数据。• 网卡硬件首先接收到从网络传输过来的数据包。• 若数据包符合接收条件,协议栈会对数据包进行进一步的处理,如交给相应的上层协议(TCP、UDP等)进行解析,最终传递给应用层。
2025-01-17 09:15:45
471
原创 CRC技术概述
CRC是一种强大的数据完整性检查方法,能够高效地检测数据传输过程中的错误。它在网络协议、存储设备、文件传输等多个领域都有广泛应用。通过多项式除法生成的校验码可以帮助接收方验证数据是否被篡改或损坏,提供了一种简单但可靠的错误检测机制。
2025-01-13 15:58:35
879
原创 GNU与Linux之间的关系
是现代操作系统的一个重要组成部分,它涉及到自由软件运动和开源软件的发展。二者虽然经常被混为一谈,但实际上它们分别代表了不同的项目和贡献。
2024-12-09 08:30:00
944
原创 btrfs概述
Btrfs(B-tree 文件系统)是一个现代化的 Linux 文件系统,旨在解决传统文件系统(如 ext4)的一些局限性。它由 Oracle 于 2007 年开始开发,设计目标是提供更强大的数据管理功能、更高的可靠性和可扩展性。
2024-12-08 08:30:00
582
原创 C语言continue用法
在C语言中,continue语句用于跳过当前循环中剩余的代码,直接进入下一次循环的判断。它的主要特点是仅影响当前循环,不会终止整个循环的执行。
2024-12-08 08:00:00
569
原创 浅谈fedora
Fedora 是一个充满活力、不断创新的 Linux 发行版,强调开源、前沿技术和社区参与。无论是作为桌面操作系统还是服务器平台,Fedora 都提供了强大的功能和灵活性。对于那些希望体验最新 Linux 技术并参与开源社区的人来说,Fedora 是一个理想的选择。
2024-12-06 08:30:00
1541
原创 文件格式由什么信息标记的
Magic Number 是文件格式的重要标识符,位于文件头部,通过一组固定的字节序列快速标识文件类型。它是操作系统和工具在处理文件时的关键信息之一,应用广泛且高效,但需要与其他判断机制结合使用以提高可靠性。
2024-12-01 08:30:00
920
原创 ext2_new_inode()函数详解
是ext2文件系统中用于分配新的 inode 的函数。定义在中,它完成了从 inode 位图中查找空闲 inode、初始化相关结构并将其返回的操作。指向目标目录的 inode,表示新 inode 将被分配到的目录。指定新 inode 的模式(文件类型和权限)。与目录条目相关的名字字符串,用于安全性初始化等。当前文件系统的超级块指针。指向 inode 位图的缓冲区头,用于跟踪 inode 分配。表示块组描述符,用于获取块组相关的元数据。扩展超级块信息,包含了文件系统的全局信息。
2024-11-28 16:04:59
420
原创 创建EXT2下inode的函数
这个函数体现了 EXT2 文件系统的核心设计,包括 inode 分配的高效性、错误恢复能力,以及针对目录和文件的不同策略。它结合了并发控制、位图操作和元数据管理等技术,是学习文件系统设计的重要范例。
2024-11-27 09:46:48
604
原创 c语言中的const是什么
const用于声明常量,使得某个变量的值不可被改变。const可以与指针结合使用,形成不同的语法结构(指向常量的指针、常量指针、常量指针指向常量)。使用const可以提高代码的可读性、安全性,并帮助编译器优化代码。希望这些解释能帮助你更好地理解const在 C 语言中的作用!如果还有其他问题,欢迎继续提问。
2024-11-27 09:14:56
1184
原创 c语言中的extern是什么
在C语言中,extern是一个关键字,用于声明变量或函数的外部链接。它告诉编译器该变量或函数的定义在其他文件中,编译器在编译当前文件时并不需要知道变量或函数的具体定义,而是将它们视作外部引用。
2024-11-27 09:08:06
684
原创 通过Linux源码,解读文件创建的详细过程
touch命令通过系统调用触发了VFS与ext2文件系统的交互,最终通过和分配并初始化了一个结构体。整个过程涉及用户态与内核态的协作、VFS的抽象接口以及ext2特定实现逻辑。
2024-11-26 17:40:52
700
引导系统启动的MINI initramfs文件
2024-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人