<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>OS on memory</title>
    <link>https://mem.leabol.top/tags/os/</link>
    <description>Recent content in OS on memory</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 27 Jun 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://mem.leabol.top/tags/os/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>心中的内核</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%BF%83%E4%B8%AD%E7%9A%84%E5%86%85%E6%A0%B8/</link>
      <pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%BF%83%E4%B8%AD%E7%9A%84%E5%86%85%E6%A0%B8/</guid>
      <description>&lt;h1 id=&#34;心中的内核--在阅读内核代码之前先理解内核&#34;&gt;心中的内核 —— 在阅读内核代码之前先理解内核&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;原文：&lt;a href=&#34;https://www.linkedin.com/in/moon-hee-lee/&#34;&gt;The Kernel in the Mind&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%BF%83%E4%B8%AD%E7%9A%84%E5%86%85%E6%A0%B8/figure0-1.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;[TOC]&lt;/p&gt;
&lt;h3 id=&#34;介绍&#34;&gt;介绍&lt;/h3&gt;
&lt;p&gt;这并非一部教你编写内核代码的指南，而是一场探寻Linux内核设计思维的思想之旅。&lt;/p&gt;
&lt;p&gt;在系统编程的世界里，人们常常迷失于符号定义、头文件结构与实现细节的丛林中。然而剥离代码表象，内核实则是一个井然有序的响应式系统——它受上下文环境所规约，以分离原则为基石，从内存管理到任务调度的每一处设计，都浸透着精准的设计意图。&lt;/p&gt;</description>
    </item>
    <item>
      <title>xv6 分析与总结</title>
      <link>https://mem.leabol.top/posts/xv6/xv6%E5%88%86%E6%9E%90%E4%B8%8E%E6%80%BB%E7%BB%93/</link>
      <pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/xv6/xv6%E5%88%86%E6%9E%90%E4%B8%8E%E6%80%BB%E7%BB%93/</guid>
      <description>&lt;h2 id=&#34;系统概述与启动流程&#34;&gt;系统概述与启动流程&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;(关注宏观状态流转：从 Machine Mode 到 Supervisor Mode，再到第一个用户进程的诞生)&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;h3 id=&#34;核心概念&#34;&gt;核心概念&lt;/h3&gt;
&lt;p&gt;启动流程的本质是&lt;strong&gt;特权级的逐级让渡&lt;/strong&gt;：从硬件最高特权（Machine Mode）出发，经过层层初始化和降权，最终将控制权交给最不信任的用户程序。整个过程是一条从&amp;quot;全权控制&amp;quot;到&amp;quot;受限执行&amp;quot;的信任链——每一步都在缩小 CPU 的权限范围，同时建立更多的软件抽象层。&lt;/p&gt;</description>
    </item>
    <item>
      <title>IO设备</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/io%E8%AE%BE%E5%A4%87/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/io%E8%AE%BE%E5%A4%87/</guid>
      <description>&lt;p&gt;计算机与物理世界交互的方式，通过各种io设备，能够使用计算机做任何事&lt;/p&gt;
&lt;p&gt;就像人操作各种机器一样，机器提供各种开关和按钮，仪表和指示灯，进料口和出料口。计算机中的io设备将这些物理操作抽象成了寄存器和地址，通过访问或设置不同的寄存器和地址实现和io设备的交互&lt;/p&gt;</description>
    </item>
    <item>
      <title>OS</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/os/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/os/</guid>
      <description>&lt;p&gt;计算机中的硬件, 软件,操作系统都是可以看作一个&lt;strong&gt;状态机&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;先讲os, os的模型简单说就是一个管理多个软件(状态机)的一个状态机.&lt;/p&gt;
&lt;p&gt;os的每个状态就是当前时间下的所有其他进程的状态, 在单核处理器下, 每次os的状态转移时会随机选择一个程序运行下一步,这就是&lt;strong&gt;调度&lt;/strong&gt;. os的状态机中除了进程外,还有为了进程通信的缓冲区.&lt;/p&gt;</description>
    </item>
    <item>
      <title>OS简介</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E7%AE%80%E4%BB%8B/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E7%AE%80%E4%BB%8B/</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;这是一个关于linux的一种自我的想象, 是我自己为了更好的理解linux而写的一种笔记, 我通过不同的视角,来描述这个程序的世界, 主要的目的不是为了完全掌握或者完整的类比操作系统的所有结构. 我的目的只是在于对os的各个部分有一个更加直观的理解, 这种理解是一种直观的, 表面的理解, 因此他并不能提高自己的linux编程水平, 就像来到一个新的城市, 我可以直观的了解城市的大致样貌, 但是关于城市是如何事无巨细的运行的, 这必须要真实的去体验才能真正了解.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RISC-V trap / syscall / trampoline 机制完整解析</title>
      <link>https://mem.leabol.top/posts/xv6/risc-v-trap-%E6%9C%BA%E5%88%B6%E5%AE%8C%E6%95%B4%E8%A7%A3%E6%9E%90/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/xv6/risc-v-trap-%E6%9C%BA%E5%88%B6%E5%AE%8C%E6%95%B4%E8%A7%A3%E6%9E%90/</guid>
      <description>&lt;h1 id=&#34;risc-v-trap--syscall--trampoline-机制完整解析&#34;&gt;RISC-V Trap / Syscall / Trampoline 机制完整解析&lt;/h1&gt;
&lt;hr&gt;
&lt;h1 id=&#34;一整体流程概览&#34;&gt;一、整体流程概览&lt;/h1&gt;
&lt;h2 id=&#34;11-总览&#34;&gt;1.1 总览&lt;/h2&gt;
&lt;p&gt;用户态通过 &lt;code&gt;ecall&lt;/code&gt; 触发异常 → 硬件最小保存 → 跳转到 &lt;code&gt;stvec&lt;/code&gt; → trampoline 完成上下文保存 + 切页表 → 进入内核 → 执行 syscall → 再通过 trampoline 返回用户态。&lt;/p&gt;</description>
    </item>
    <item>
      <title>travel_xv6</title>
      <link>https://mem.leabol.top/posts/xv6/travel_xv6/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/xv6/travel_xv6/</guid>
      <description>&lt;h2 id=&#34;系统调用syscallecall&#34;&gt;系统调用syscall(ecall)&lt;/h2&gt;
&lt;h3 id=&#34;1用户态的准备工作&#34;&gt;1.用户态的准备工作&lt;/h3&gt;
&lt;p&gt;cpu核心在用户线程(进程)上工作, pc(程序计数器寄存器)指向下一个执行的用户态指令(.text), sp(栈指针寄存器)指向当前用户态线程的栈顶,用于分割栈帧和栈帧中变量的定位.&lt;/p&gt;</description>
    </item>
    <item>
      <title>tty</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/tty/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/tty/</guid>
      <description>&lt;p&gt;tty 所有终端设备的泛称  pty 伪终端  pts 伪终端从属  terminal 终端模拟器&lt;/p&gt;
&lt;p&gt;terminal,一个输入输出设备, 在现代os中已经抽象成了控制终端**(controlling terminal)&lt;strong&gt;, 可以由伪终端,虚拟控制台,串口终端,usb串口担任&lt;/strong&gt;控制终端**. 它可以&lt;/p&gt;</description>
    </item>
    <item>
      <title>xv6总览图</title>
      <link>https://mem.leabol.top/posts/xv6/xv6%E6%80%BB%E8%A7%88%E5%9B%BE/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/xv6/xv6%E6%80%BB%E8%A7%88%E5%9B%BE/</guid>
      <description>&lt;h2 id=&#34;系统总览&#34;&gt;系统总览&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;00-overview&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/00-overview.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;进程管理&#34;&gt;进程管理&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;02-process&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/02-process.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;内存管理&#34;&gt;内存管理&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;03-memory&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/03-memory.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;文件系统&#34;&gt;文件系统&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;04-filesystem&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/04-filesystem.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;trap&#34;&gt;trap&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;05-trap&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/05-trap.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;系统调用&#34;&gt;系统调用&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;06-syscall&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/06-syscall.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;驱动&#34;&gt;驱动&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;07-devices&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/07-devices.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;用户函数&#34;&gt;用户函数&lt;/h2&gt;
&lt;p&gt;&lt;img alt=&#34;08-userspace&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/xv6%E6%80%BB%E8%A7%88/08-userspace.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>内核存储栈</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8-%E5%AD%98%E5%82%A8/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8-%E5%AD%98%E5%82%A8/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;Linux-storage-stack-diagram_v6.18&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8-%E5%AD%98%E5%82%A8/Linux-storage-stack-diagram_v6.18.png&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>内核结构图</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%9B%BE/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8%E5%9B%BE/</guid>
      <description>&lt;p&gt;&lt;img alt=&#34;bccBPF Tracing&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/bccBPF-Tracing.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;benchmark &#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/benchmark.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;BPF &#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/BPF.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;bpftraceeBPF&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/bpftraceeBPF.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;observability perf-tools&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/observability-perf-tools.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;observability sar&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/observability-sar.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;observability tools&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/observability-tools.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;performance&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/performance.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;tuning &#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/tuning.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=&#34;v2-1ae6a81556274bdf23396628a7784d31_r&#34; loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E5%86%85%E6%A0%B8%E5%9B%BE/v2-1ae6a81556274bdf23396628a7784d31_r.jpg&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>内核网络</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8-%E7%BD%91%E7%BB%9C/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E5%86%85%E6%A0%B8-%E7%BD%91%E7%BB%9C/</guid>
      <description>&lt;h2 id=&#34;重要的数据结构&#34;&gt;重要的数据结构&lt;/h2&gt;
&lt;h3 id=&#34;struct-sockaddr&#34;&gt;struct sockaddr&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;通信用的地址表, 记录了使用什么来通信和目的地址&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;​	这是一个在套接字编程中用来表示&amp;quot;地址&amp;quot;的通用结构, 核心作用是为不同的通行提供一个统一的地址表示接口&lt;/p&gt;</description>
    </item>
    <item>
      <title>调试记录：xv6 用户程序内存布局冲突异常</title>
      <link>https://mem.leabol.top/posts/xv6/%E8%B0%83%E8%AF%95%E8%AE%B0%E5%BD%95xv6-%E7%94%A8%E6%88%B7%E7%A8%8B%E5%BA%8F%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80%E5%86%B2%E7%AA%81%E5%BC%82%E5%B8%B8/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/xv6/%E8%B0%83%E8%AF%95%E8%AE%B0%E5%BD%95xv6-%E7%94%A8%E6%88%B7%E7%A8%8B%E5%BA%8F%E5%86%85%E5%AD%98%E5%B8%83%E5%B1%80%E5%86%B2%E7%AA%81%E5%BC%82%E5%B8%B8/</guid>
      <description>&lt;h2 id=&#34;-调试记录xv6-用户程序内存布局冲突异常&#34;&gt;🛠️ 调试记录：xv6 用户程序内存布局冲突异常&lt;/h2&gt;
&lt;h3 id=&#34;1-问题描述-description&#34;&gt;1. 问题描述 (Description)&lt;/h3&gt;
&lt;p&gt;在 xv6 实验环境中，向内核添加自定义系统调用（Syscall）并编写用户态测试程序（Test Case）时，程序在系统调用逻辑执行完毕后，无法正常返回用户态继续执行。表现为进程卡死或触发硬件级页错误（Page Fault），而代码逻辑本身（内核实现）经检查无误。&lt;/p&gt;</description>
    </item>
    <item>
      <title>进程与通信</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E8%BF%9B%E7%A8%8B/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E8%BF%9B%E7%A8%8B/</guid>
      <description>&lt;p&gt;不同的进程在各自的房间内运行, 每个房间有自己的编号&lt;code&gt;pid&lt;/code&gt;, 进程之间互不干涉, 房间内有许多种与外界通信的方式, 他们有各自的用途和特性, 分布在墙壁上; 房间内还分成多个区域, 分别是: &lt;code&gt;代码区(.text)&lt;/code&gt;,  &lt;code&gt;已初始化的全局/静态数据区(.data)&lt;/code&gt;, &lt;code&gt;未初始化的全局/静态数据区(.bss)&lt;/code&gt;, &lt;code&gt;堆&lt;/code&gt;, &lt;code&gt;栈&lt;/code&gt;, &lt;code&gt;内存映射区&lt;/code&gt;, &lt;code&gt;环境变量与命令行参数区&lt;/code&gt;, &lt;code&gt; 内核空间&lt;/code&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>网络协议栈</title>
      <link>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E6%A0%88/</link>
      <pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%86%85%E6%A0%B8/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E6%A0%88/</guid>
      <description>&lt;p&gt;现代操作系统的内核（如 Linux 内核）中有一个专门的模块叫做：&lt;/p&gt;
&lt;h1 id=&#34;网络协议栈network-stack&#34;&gt;网络协议栈（Network Stack)&lt;/h1&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://mem.leabol.top/images/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE%E6%A0%88/image-20251012194550481.png&#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;主要职责详解&#34;&gt;主要职责详解&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;职责&lt;/th&gt;
          &lt;th style=&#34;text-align: left&#34;&gt;类比说明&lt;/th&gt;
          &lt;th&gt;技术术语&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;1. 接收和发送数据包&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;公司前台接收快递 &amp;amp; 发送包裹&lt;/td&gt;
          &lt;td&gt;数据链路层、IP 层、传输层&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;2. IP 地址管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;给每个员工分配邮箱地址&lt;/td&gt;
          &lt;td&gt;IPv4 / IPv6 地址配置&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;3. 路由选择&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;快递要走哪条路线最短最快&lt;/td&gt;
          &lt;td&gt;路由表（Routing Table）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;4. 封装与解封装&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;包裹加标签 / 拆标签&lt;/td&gt;
          &lt;td&gt;数据封装（Encapsulation）与解封装（Decapsulation）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;5. 传输控制（TCP）&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;控制文件是否完整送达&lt;/td&gt;
          &lt;td&gt;TCP 流量控制、拥塞控制&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;6. 端口号管理&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;不同部门接收不同类型的快递&lt;/td&gt;
          &lt;td&gt;端口绑定、监听、转发&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;7. 安全防护（防火墙）&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;保安检查包裹内容&lt;/td&gt;
          &lt;td&gt;Netfilter / iptables / nftables&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;8. NAT 转换&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;公司统一出口代理&lt;/td&gt;
          &lt;td&gt;Network Address Translation&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;9. 域名解析支持&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;内部电话簿查询联系方式&lt;/td&gt;
          &lt;td&gt;DNS 解析缓存、本地 hosts&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;strong&gt;10. 支持多种协议&lt;/strong&gt;&lt;/td&gt;
          &lt;td style=&#34;text-align: left&#34;&gt;公司支持各种沟通方式（电话、邮件、视频会议）&lt;/td&gt;
          &lt;td&gt;支持 TCP、UDP、ICMP、HTTP、HTTPS、FTP 等&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;类比图操作系统网络部门的组织架构&#34;&gt;类比图：操作系统网络部门的组织架构&lt;/h2&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;小组&lt;/th&gt;
          &lt;th&gt;类比角色&lt;/th&gt;
          &lt;th&gt;职责&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;套接字接口组（Socket Layer）&lt;/td&gt;
          &lt;td&gt;客户接待员&lt;/td&gt;
          &lt;td&gt;接收进程请求（如浏览器访问网页）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;传输组（TCP / UDP）&lt;/td&gt;
          &lt;td&gt;快递打包组&lt;/td&gt;
          &lt;td&gt;控制可靠传输或快速发送&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;网络组（IP 层）&lt;/td&gt;
          &lt;td&gt;邮政分拣中心&lt;/td&gt;
          &lt;td&gt;决定发往哪个城市（IP 地址）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;链路组（MAC 层）&lt;/td&gt;
          &lt;td&gt;快递站&lt;/td&gt;
          &lt;td&gt;决定发给哪个局域网内的目标主机&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;路由组（Routing）&lt;/td&gt;
          &lt;td&gt;导航调度中心&lt;/td&gt;
          &lt;td&gt;选择最优路径（下一跳）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;设备驱动组（NIC Driver）&lt;/td&gt;
          &lt;td&gt;快递员&lt;/td&gt;
          &lt;td&gt;实际把包裹送出去（通过网卡）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;安全组（Netfilter / Firewall）&lt;/td&gt;
          &lt;td&gt;保安检查岗&lt;/td&gt;
          &lt;td&gt;检查是否允许通行&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;NAT 组&lt;/td&gt;
          &lt;td&gt;公司代理出口&lt;/td&gt;
          &lt;td&gt;统一管理内部员工对外通信&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;DNS 缓存组&lt;/td&gt;
          &lt;td&gt;内部电话簿管理员&lt;/td&gt;
          &lt;td&gt;记录域名与 IP 的对应关系&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Linux 的网络部分是一个庞大的子系统，主要包括以下几个关键模块：&lt;/p&gt;</description>
    </item>
    <item>
      <title>file descriptor</title>
      <link>https://mem.leabol.top/posts/os/%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/os/%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6/</guid>
      <description>&lt;h1 id=&#34;理解linux的file-descriptor文件描述符&#34;&gt;理解Linux的file descriptor(文件描述符)&lt;/h1&gt;
&lt;p&gt;​		我们知道在Linux系统中一切皆可以看成是文件，文件又可分为：普通文件、目录文件、链接文件和设备文件。在操作这些所谓的文件的时候，我们每操作一次就找一次名字，这会耗费大量的时间和效率。所以Linux中规定每一个文件对应一个索引，这样要操作文件的时候，我们直接找到索引就可以对其进行操作了。&lt;/p&gt;</description>
    </item>
    <item>
      <title>linux select函数</title>
      <link>https://mem.leabol.top/posts/os/linux-select%E5%87%BD%E6%95%B0/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/os/linux-select%E5%87%BD%E6%95%B0/</guid>
      <description>&lt;h1 id=&#34;linux-select函数&#34;&gt;linux select函数&lt;/h1&gt;
&lt;p&gt;在Linux中，我们可以使用select函数实现I/O端口的复用，传递给 select函数的参数会告诉内核：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;我们所关心的文件描述符&lt;/p&gt;</description>
    </item>
    <item>
      <title>Makefile 的基本概念</title>
      <link>https://mem.leabol.top/posts/%E5%B7%A5%E5%85%B7/makefile/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/%E5%B7%A5%E5%85%B7/makefile/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Makefile&lt;/strong&gt; 是 make 工具的配置文件，主要用于定义如何构建和管理项目的编译过程。Makefile 是 C/C++ 编译项目中的重要工具，尤其在多文件、多模块的项目中，为了方便复杂项目的管理，可以通过自动化规则提高编译效率。&lt;/p&gt;</description>
    </item>
    <item>
      <title>文件控制函数</title>
      <link>https://mem.leabol.top/posts/os/linux-fcntl%E5%87%BD%E6%95%B0/</link>
      <pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate>
      <guid>https://mem.leabol.top/posts/os/linux-fcntl%E5%87%BD%E6%95%B0/</guid>
      <description>&lt;h1 id=&#34;文件控制函数--file-control&#34;&gt;文件控制函数  file control&lt;/h1&gt;
&lt;h2 id=&#34;功能描述&#34;&gt;功能描述&lt;/h2&gt;
&lt;p&gt;fcntl函数可以用来对已打开的文件描述符进行各种控制操作, 以改变已打开文件的的各种属性&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;头文件&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#75715e&#34;&gt;&amp;lt;fcntl.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#75715e&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;函数原型&#34;&gt;&lt;strong&gt;函数原型&lt;/strong&gt;&lt;/h2&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fcntl&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; cmd);
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fcntl&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; cmd, &lt;span style=&#34;color:#66d9ef&#34;&gt;long&lt;/span&gt; arg);         
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;c
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;fcntl&lt;/span&gt;(&lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; fd, &lt;span style=&#34;color:#66d9ef&#34;&gt;int&lt;/span&gt; cmd, &lt;span style=&#34;color:#66d9ef&#34;&gt;struct&lt;/span&gt; flock &lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;lock);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;描述&#34;&gt;&lt;strong&gt;描述&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;fcntl()针对(文件)描述符提供控制.参数fd是被参数cmd操作(如下面的描述)的描述符.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
