年度归档: 2026 年

37 篇文章

thumbnail
Linux内核-文件系统-高速缓冲区
文件系统-高速缓冲区 文件系统基本概念 磁盘中要有目录的映射,我们把磁盘分成盘片,这里的“盘片”指的就是逻辑划分出的独立文件系统区域,也就是我们今天说的 C盘、D盘。 每一个盘片都有一个文件系统的子系统(章节目录) 引导块:用来引导设备的,引导块可以为空,但一定要空开,因为保持格式的一致性 超级块:该文件子系统的描述符(记录该盘片的逻辑块位图的地址…
thumbnail
Linux内核-文件系统启动流程
文件系统启动流程 内核打开文件系统流程大致分析 这里以linux3.4.2内核为例,大致看一下流程是如何进行的 打开控制台 //init/main.c kernel_init() /* Open the /dev/console on the rootfs, this should never fail */ if (sys_open((const…
thumbnail
Linux内核-内核信号处理函数
内核信号处理函数 sigaction结构体 // 下面是 sigaction 的数据结构。 // sa_handler 是对应某信号指定要采取的行动。可以是上面的 SIG_DFL,或者是 SIG_IGN 来忽略 // 该信号,也可以是指向处理该信号的一个指针。 // sa_mask 给出了对信号的屏蔽码,在信号程序执行时将阻塞对这些信号的处理。 /…
thumbnail
Linux内核-操作系统启动引导
操作系统启动引导 操作系统的起点: 磁盘引导程序,需要将内核等移入内存进行运行,并初始化多种模块和硬件 终点:运行第一个应用程序,系统的根文件系统 大致流程 BIOS/bootloader 由PC机的BIOS(0xFFFF0是BIOS存储的总线地址)把bootsect.s从某个固定的地址拿到了内存中某个固定的地址(0x90000),并且进行了一系列…
thumbnail
Linux内核-进程销毁
进程销毁 内核销毁流程 当用户程序调用exit()函数的时候,触发了系统调用,最后调用到kernel/exit.c中的sys_exit()函数,最后底层调用int do_exit(long code)。该函数会释放进程的代码段和数据段占用的内存 关闭当前进程打开的所有文件,对当前的目录和inode节点进行同步 如果当前要销毁的进程有子进程,那么就让…
thumbnail
Linux内核-进程调度
进程调度 进程调度相关概念 多任务操作系统就是能同时并法地交互执行多个进程的操作系统,多任务系统分为两类: 非抢占式操作系统 抢占式操作系统 linux是抢占式的多任务模式,它由调度程序决定什么时候停止一个进程的运行,以便其他的进程能够得到执行机会 策略 策略决定调度程序在何时让什么进程运行 进程可以分为I/O消耗型和处理器消耗型,I/O消耗型指的…
thumbnail
Linux内核-0.1版本的中断流程
0.1版本的中断流程 Linux中断工作流程 中断处理过程: 将所有寄存器的值入栈 将异常码(中断号)入栈 将当前的函数返回值入栈(为了能够在中断执行完成后恢复到被中断的地方) 中断执行过程:调用对应的中断执行函数 中断恢复过程 函数返回值出栈 寄存器值出栈 Linux0.11的内核版本还没有中断上下半部的产生,内核代码非常精简,其设计哲学就是简单…
thumbnail
Linux内核-进程初始化与创建
进程初始化与创建 Linux进程表示 Linux内核对于进程的表示使用的是task_struct结构体,它的定义在<include/sched.h>中,每一个进程都被抽象为一个task_struct结构体 而所有进程是用一个task_struct链表来管理 struct task_struct * task[NR_TASKS] …
thumbnail
Linux内核-进程运转方式
进程运转方式 系统时间 Linux 0.11 的系统当前时间计算方式是: 当前 Unix 时间 = 启动时的 Unix 时间 + 开机后的运行秒数 = startup_time + jiffies / HZ 开机时间获取 CPU内部有一个系统时间RTC(cmos),会在上电的时候调用mktime函数计算出从1970年1月1日0时到当前开机时间经过的…
thumbnail
对大模型和agent的认识
对大模型和agent的认识 从23年GPT的火爆到deepseek的出现,最开始接触AI的网页端问答式对话,到去年开始兴起的agent编程,笔者也使用AI辅助编程了这么久了,这篇文章主要是结合网上大佬的知识分享,为了回顾并记录自己对于大模型和agent的认识,从一个使用的开发者角度整理相关概念 大模型的本质 这里的大模型指的是语言大模型 每当身边非…