- 博客(19)
- 收藏
- 关注
原创 Linux内核——段描述符详解
在 x86 架构的保护模式下,是分段机制的核心数据结构,定义了内存段的属性(如基地址、界限、权限等)。Linux 通过全局描述符表(GDT)和局部描述符表(LDT)管理这些段描述符。
2025-04-05 19:58:26
834
原创 Linux内核寻址概述——内存管理单元(MMU)
多任务系统中,每个进程都需要一套内存空间以支撑运行。显然,如果所有任务都直接使用同一套物理内存地址空间(实模式)。协调这些任务并发运行,且要隔离它们的使用内存(将内存分割给这些任务,使得它们不冲突),无论是靠程序员还是操作系统,都是不现实的,也是不安全的。一个程序可以访问其他程序的内存空间。所以,一种方法是:让所有的程序都独享一个地址的空间,这个地址是该程序私有的,其它程序既看不到,也不能访问该地址空间。另外,考虑到程序可移植性,可以再其他计算机上运行,这个地址空间还要和具体的计算机也无关,这个方案就是。
2025-04-04 14:33:36
872
原创 Linux文件权限:SetUID、SetGID与粘滞位
通常情况下,删除一个目录或者文件的权限是取决于你是否拥有上一级目录的写权限。而不是看要删除文件的写权限。但是,现实中经常有多人共享一个目录的场景,这样,所有人对该目录的权限都是rwx。虽然该目录下的文件,可以控制自有文件宿主可写,别人没有写的权限,但是别人却可以删除我们在该共享目录下新建的文件。因为删除共享目录里的文件,取决于你在目录上是不是有写权限。SetUID、SetGID和粘滞位是Linux权限管理的重要扩展机制,合理使用可提升系统功能与协作效率,但需严格遵循最小权限原则以保障安全。
2025-04-03 21:54:31
512
原创 Linux内核模块编写、加载与运行
与“基础内核”不同。基础内核位于/boot目录,系统启动时自动加载;而LKM在基础内核加载后按需加载。尽管如此,LKM仍是内核的重要组成部分,通过与基础内核通信实现功能。内核模块是按需加载到内核或从内核卸载的代码片段。它们无需重启系统即可扩展内核功能。:LKM属于内核空间,非用户程序,拥有系统完全权限,操作不当易导致系统崩溃。以下是一个简单的LKM示例,加载时打印日志,卸载时显示退出消息。由于这些代码在运行时加载且不属于官方Linux内核,它们被称为。查看打印Hello world。
2025-04-03 21:02:00
603
原创 X86系统寄存器介绍(续)——系统地址寄存器
GDTR提供了GDT的基址,段选择器的偏移部分(3~15位)与GDTR相加,得到段描述符在GDT中的位置。理解这些寄存器对于分析X86架构的内存管理、多任务调度和中断处理机制至关重要。但现代系统通常仅用GDT,不用LDT。基地址+限制(48位)基地址+限制(48位)任务切换和上下文保存。
2025-04-01 22:53:50
539
原创 AT&T汇编基础(六)——伪指令
所有汇编器伪指令的名称均以点号(.)开头。名称的其余部分由字母组成,通常为小写。本章讨论 GNU 汇编器在任意目标机器配置下均可使用的伪指令。某些机器配置提供额外的伪指令,详见《机器相关特性》章节。此伪指令立即停止汇编。它用于与其他汇编器兼容。原始设计是:汇编语言源程序通过管道输入汇编器。若源程序发送方终止,可用此伪指令告知汇编器一同终止。未来可能不再支持 .abort。.ABORT当生成 COFF 输出时,.ABORT 被视为 .abort 的同义词。当生成 b.out 输出时,汇编器接受此伪指令但
2025-03-31 22:31:52
825
原创 【算法实践】搜索算法——寻找缺失的数组元素
最简单的解法是:因为是等差数列,所以可以计算出原来(未缺失)的和是多少,记为sum,然后,用sum减去数组元素之和,即可得出缺失的那一个数大小。但是,要排除未缺失的场景。给定正整数数组,除了缺失的那个数之外(不考虑在首项或末项缺失情况),数组中元素满足等差规律,找出缺失的那个数。如果不存在缺失的数,输出0;:数组元素的公差是5,但是,在21和31之间缺失26.:公差是2,但是在8和10之间缺了一个数6.:无缺失元素,公差为0.
2025-03-30 19:02:25
111
原创 【算法实践】搜索算法——寻找中间数
在给定的数组中找到一个元素,使得它前面的所有元素都小于或等于它,而它后面的所有元素都大于或等于它。如果没有这样的元素,就返回-1。例如: 6: 第四个元素6. 第四个位置之前的元素(arr[0]、arr[1]、arr[2]、arr[3]),都不大于arr[4] ,而第四个位置之后的元素(arr[5]、arr[6]、arr[7]、arr[8])都不小于arr[4]。: -1: 不存在所求元素。
2025-03-30 14:18:06
529
原创 【算法实践】字符串匹配算法(KMP)详解
KMP(Knuth-Morris-Pratt)算法是高效的字符串匹配算法,核心思想是通过预处理模式串避免无效回溯。本文将从原理到实现进行全面解析,并提供Java、C++、Python三种语言代码
2025-03-30 12:33:10
376
原创 【算法实践】回溯算法——老鼠走迷宫问题
老鼠从N×N矩阵的(0,0)出发,到达(N-1,N-1),找到所有可能的路径,本文给出C++、Java、Python解法。
2025-03-30 10:10:31
440
原创 【算法实践】回溯算法——子集求和问题
给定一个非负整数集合S,找出所有元素和等于给定值SUM的子集。文中给出详细分析和三种语言的解法:C++、Java、Python
2025-03-30 08:09:22
571
原创 AT&T汇编基础(五)——调用约定
理解调用约定最直观的方式是绘制子程序执行期间栈的布局。遵循C调用约定,可确保汇编代码与C/C++环境无缝交互,同时为调试与协作开发提供坚实基础。调用者代码(假设调用函数 int add(int a, int b))为促进代码共享与库开发,并简化子程序调用流程,程序员通常遵循统一的。- 保存非易失寄存器(EBX, ESI, EDI)- 保存易失寄存器(EAX, ECX, EDX)- 创建栈帧(保存%ebp)第一个参数(调用者最后压入)第三个参数(调用者最先压入)被调用者代码(函数add)
2025-03-29 21:35:31
758
原创 AT&T汇编基础(四)——程序流转控制
在汇编代码中,可通过标签名:的形式定义标签(如begin:)。1. 压入返回地址(下条指令地址) → 2. 跳转到func。有符号数小于等于时跳转(ZF=1或SF≠OF)jg <标签>;有符号数大于时跳转(ZF=0且SF=OF)jge <标签>;有符号数大于等于时跳转(SF=OF)jl <标签>;jz <标签>;call <标签>;cmp <内存地址>, <寄存器>cmp <寄存器>, <内存地址>cmp <寄存器>, <寄存器>cmp <立即数>, <寄存器>
2025-03-29 21:08:43
246
原创 AT&T汇编基础(三)——算术逻辑运算
idiv指令将64位整数EDX:EAX(高32位在EDX,低32位在EAX)除以操作数,商存入EAX,余数存入EDX。imul <立即数>, <源寄存器>, <目标寄存器>imul <立即数>, <内存地址>, <目标寄存器>and/or/xor <目标寄存器>, <源寄存器>and/or/xor <目标寄存器>, <内存地址>and/or/xor <内存地址>, <源寄存器>and/or/xor <立即数>, <目标寄存器>imul <源寄存器>, <目标寄存器>add <目标寄存器>, <源寄存器>
2025-03-29 20:51:46
354
原创 AT&T汇编基础(一)——寄存器与内存寻址
AT&T汇编是学习Linux内核必备基础知识。Linux内核有大量AT&T汇编代码。系列介绍如何使用标准的AT&T语法编写x86汇编代码。
2025-03-28 21:37:35
1123
原创 X86架构寄存器介绍
x86 寄存器系统通过分工协作实现高效计算与控制:通用寄存器处理数据操作,段寄存器管理内存分区,EFLAGS 跟踪状态,控制寄存器管理 CPU 模式。理解其设计对操作系统开发、逆向工程和性能优化至关重要。在 64 位模式下,寄存器扩展和新增的 R8-R15 进一步提升了复杂应用的效率。
2025-03-26 22:24:37
1025
原创 Linux内核高端内存(High Memory)简介
由于 32 位系统的虚拟地址空间最大为 4GB(默认内核空间占用 1GB,用户空间 3GB),当物理内存超过内核可直接映射的范围(通常是 896MB)时,剩余的内存需要通过特殊机制进行管理,这就是高端内存的由来。在 64 位架构(如 x86_64)中,内核虚拟地址空间极大(如 128TB),可直接线性映射所有物理内存(`phys_base` 偏移),因此不再需要高端内存机制。- 内核默认将虚拟地址空间的 `0xC0000000`(3GB)到 `0xFFFFFFFF`(4GB)划分为内核空间(共 1GB)。
2025-03-23 16:00:26
995
1
【系统架构设计】架构师面试高频问题汇总:涵盖高并发秒杀系统设计与微服务架构等关键技术点
2025-04-05
Java开发Java面试最常50问:涵盖基础、集合、多线程、JVM、设计模式及框架核心知识点总结内容
2025-04-05
中医医案编码工具,针对患者主诉症状和开方结果,一键生成医案编码
2025-04-04
五子棋及其源代码,支持人机对战,多种难度
2025-03-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人