熊喵君的博客

Thinking will not overcome fear but action will.

AI agent开发入门:基于eino开发agent(一)

0x00 前言 0x01 AI 基础 提示词 1、系统提示词(System Prompt) 主要作用于 ReAct 模式的 Reason(推理/思考) 步骤 概念:给 LLM 的出厂设置。它定义了 Agent 的角色、性格、知识边界、遵循的协议(如必须以 JSON 输出)以及如何使用工具 类比:就像给演员的剧本大纲,规定了是一个专业的 Golang 架构师还是...

AI 关键点摘要

0x00 前言 0x01 AI 基础(白话) 1、LLM (大语言模型) :超级大脑 所有 AI 的底座,可以把它想象成一个读过人类历史上所有书籍、见过所有代码、博古通今的超级学霸。它能理解你的意图,也能跟你聊天,但它本质上只是一个大脑,暂时还没手没脚 2、Agent (智能体) :全能数字员工 如果 LLM 只是个大脑,那么 Agent 就是一个有了身体、目标、会思考...

Linux 内核之旅(二十四):内核视角下的IO读写(四)

Linux IO模型 && 内核视角下的写流程

0x00 前言 本文以ext4为例,基于v4.11.6的源码来分下page cache机制下write写入过程的内核实现(不涉及块设备层) 0x01 相关背景知识 ext4文件系统的三种模式 ext4文件系统delay allocation机制 0x02 内核写(write)实现 SYSCALL_DEFINE3(write, unsigned int, fd, cons...

Linux 内核之旅(二十二):内核视角下的IO读写(三)

内核视角下的读文件过程(续)

0x00 前言 先回顾一下,调用read系统调用之后,内核的调用路径是什么? 再回顾一下,前文介绍的splice实现零拷贝中的内核读操作,是怎么实现的? 本文主要梳理下基于page cache的内核read实现的若干细节,基于v4.11.6的源码 0x01 generic_file_read_iter的实现细节 通常大部分文件系统的读取read实现,都是将read_it...

VFS hooks

文件相关的监控点梳理

0x00 前言 本文代码基于: 内核v5.4.241 内核v6.6 0x01 文件操作函数 chmod相关 chmod/fchmodat->do_fchmodat->chmod_common SYSCALL_DEFINE3(fchmodat, int, dfd, const char __user *, filename, umode_t, mod...

Linux 内核之旅(二十一):page cache

内核中的page cache管理

0x00 前言 本文主要梳理下page cache与管理的若干知识,本文基于v4.11.6的源码 页高速缓存(page cache),它是一种对完整的数据页进行操作的磁盘高速缓存,即把磁盘的数据块缓存在页高速缓存中。page cache是内核为文件创建的内存缓存,用以加速相关的文件操作。当应用程序需要读取文件中的数据时,操作系统先分配一些内存,将数据从存储设备读入到这些内存中,然后再...

Linux 内核之旅(二十):内核视角下的共享内存

mmap与shm在内核的实现分析与区别

0x00 前言 共享内存主要用于进程间通信,常见Shared Memory机制: System V shared memory(shmget/shmat/shmdt):旧 POSIX shared memory(shm_open/shm_unlink):新 此外,内存映射mmap机制也可以用于跨进程间通信,参考前文:虚拟内存管理(上),当然了mmap也支持私有映射 ...

Linux 内核CVE:CVE-2022-0847

Linux 内核 DirtyPipe 任意只读文件覆写漏洞分析

0x00 前言 前文Linux 内核之旅(十五):管道的实现介绍了管道机制的内核实现原理,本文学习一个基于管道机制的非常有趣的CVE实现:CVE-2022-0847 本文基于漏洞影响版本v5.13来进行分析 0x01 CVE介绍 相关的poc代码参考此,抽象为如下代码结构,这里面包含的五个步骤缺一不可 // 1、创建管道 int p[2]; pipe(p); // 2、填...

Linux 内核之旅(十七):Linux Namespace

PidNamespace And MntNamespace

0x00 前言 命名空间用来实现内核对资源进行隔离,本文基于v4.11.6的源码分析下Mnt Namespace的若干细节 0x01 一个容器的case 几个问题: 容器内的进程pid的分配过程 容器(容器内进程)创建的过程,pivot_root/chroot的区别 容器内挂载树(mount tree)的生成过程 0x02 pidnamespace:容器内进程...

Linux 内核之旅(十六):内核视角下的IO读写(一)

基础知识 && 数据结构 && IO基础概念

0x00 前言 IO过程的性能开销 1、网络包接收流程中的性能损失 应用程序通过系统调用(如recv/read等)从用户态转为内核态的开销以及系统调用返回时从内核态转为用户态的开销 网络数据从内核空间通过CPU拷贝到用户空间的开销 内核线程ksoftirqd响应软中断的开销 CPU响应硬中断的开销 DMA拷贝网络数据包到内存中的开销 2、网络包发送流程中...