<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>CJ1018</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://cj0510.github.io/</id>
  <link href="https://cj0510.github.io/" rel="alternate"/>
  <link href="https://cj0510.github.io/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, CJ1018</rights>
  <subtitle>Linux 内核 · 嵌入式系统 · 开源技术</subtitle>
  <title>CJ's Tech Notes</title>
  <updated>2026-08-30T13:34:01.395Z</updated>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="perf" scheme="https://cj0510.github.io/categories/Linux-Kernel/perf/"/>
    <category term="Linux perf" scheme="https://cj0510.github.io/tags/Linux-perf/"/>
    <id>https://cj0510.github.io/2026/08/30/Linux%20Kernel/perf/p0_perf/</id>
    <link href="https://cj0510.github.io/2026/08/30/Linux%20Kernel/perf/p0_perf/"/>
    <published>2026-08-30T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="perf基础"><a href="#perf基础" class="headerlink" title="perf基础"></a>perf基础</h2><p>Perf 是 Linux 内核提供的一套性能分析工具，它通过 Linux perf_event 子系统获取 CPU、内核和程序运行时的性能数据。</p>
<p>其原理大致如下</p>
<p><img src="https://github.com/CJ0510/picx-images-hosting/raw/master/image.1vze7syyey.webp"></p>
<p>PMU全称Performance]]>
    </summary>
    <title>perf初探</title>
    <updated>2026-08-30T13:34:01.395Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Scheduling" scheme="https://cj0510.github.io/categories/Linux-Kernel/Scheduling/"/>
    <category term="Linux Scheduling" scheme="https://cj0510.github.io/tags/Linux-Scheduling/"/>
    <id>https://cj0510.github.io/2026/08/23/Linux%20Kernel/Scheduling/task_struct%20%E4%B8%AD%E7%9A%84%E8%B0%83%E5%BA%A6%E4%BF%A1%E6%81%AF/</id>
    <link href="https://cj0510.github.io/2026/08/23/Linux%20Kernel/Scheduling/task_struct%20%E4%B8%AD%E7%9A%84%E8%B0%83%E5%BA%A6%E4%BF%A1%E6%81%AF/"/>
    <published>2026-08-23T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="1-task-struct调度信息"><a href="#1-task-struct调度信息" class="headerlink" title="1 task_struct调度信息"></a>1 task_struct调度信息</h2><p>上一节我们说了，task_struct是内核真正的调度对象，代表一个可以被独立执行、阻塞、唤醒和调度的任务。<br>完整的 task_struct非常庞大，包含一个 task]]>
    </summary>
    <title>task_struct 中的调度信息</title>
    <updated>2026-08-30T13:36:37.495Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Scheduling" scheme="https://cj0510.github.io/categories/Linux-Kernel/Scheduling/"/>
    <category term="Linux Scheduling" scheme="https://cj0510.github.io/tags/Linux-Scheduling/"/>
    <id>https://cj0510.github.io/2026/08/23/Linux%20Kernel/Scheduling/%E8%B0%83%E5%BA%A6%E4%B8%BB%E6%B5%81%E7%A8%8B%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</id>
    <link href="https://cj0510.github.io/2026/08/23/Linux%20Kernel/Scheduling/%E8%B0%83%E5%BA%A6%E4%B8%BB%E6%B5%81%E7%A8%8B%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"/>
    <published>2026-08-23T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="schedule"><a href="#schedule" class="headerlink" title="schedule"></a>schedule</h2><p>task被调度的原因主要分为一下几类</p>
<p><img src="https://github.com/CJ0510/picx-images-hosting/raw/master/image.7axwp5bq7m.webp"></p>
<p>我们看函数的部分</p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span]]>
    </summary>
    <title>schedule() 主流程源码分析</title>
    <updated>2026-09-12T09:38:41.777Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Scheduling" scheme="https://cj0510.github.io/categories/Linux-Kernel/Scheduling/"/>
    <category term="Linux Scheduling" scheme="https://cj0510.github.io/tags/Linux-Scheduling/"/>
    <id>https://cj0510.github.io/2026/08/22/Linux%20Kernel/Scheduling/Linux%E8%B0%83%E5%BA%A6%E5%AD%90%E7%B3%BB%E7%BB%9F%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/</id>
    <link href="https://cj0510.github.io/2026/08/22/Linux%20Kernel/Scheduling/Linux%E8%B0%83%E5%BA%A6%E5%AD%90%E7%B3%BB%E7%BB%9F%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/"/>
    <published>2026-08-22T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="1-为什么需要进程调度"><a href="#1-为什么需要进程调度" class="headerlink" title="1 为什么需要进程调度"></a>1]]>
    </summary>
    <title>Linux调度子系统整体架构</title>
    <updated>2026-08-30T13:36:36.112Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Logging subsystem" scheme="https://cj0510.github.io/categories/Linux-Kernel/Logging-subsystem/"/>
    <category term="Linux Logging subsystem" scheme="https://cj0510.github.io/tags/Linux-Logging-subsystem/"/>
    <id>https://cj0510.github.io/2026/08/18/Linux%20Kernel/Logging%20subsystem/ring%20buffer/</id>
    <link href="https://cj0510.github.io/2026/08/18/Linux%20Kernel/Logging%20subsystem/ring%20buffer/"/>
    <published>2026-08-18T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-为什么-printk-需要-Ring-Buffer"><a href="#1-为什么-printk-需要-Ring-Buffer" class="headerlink" title="1 为什么 printk 需要 Ring Buffer"></a>1 为什么 printk 需要 Ring Buffer</h1><p>有没有想过一个问题：为什么 printk() 不直接把字符串输出到串口，而是需要一个 ring buffer？</p>
<p>因为串口、console 等输出设备非常慢，CPU 执行代码的速度远远快于串口发送数据的速度。CPU 时钟大约是 GHz]]>
    </summary>
    <title>Kernel Log Buffer源码分析</title>
    <updated>2026-08-22T12:18:17.560Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Logging subsystem" scheme="https://cj0510.github.io/categories/Linux-Kernel/Logging-subsystem/"/>
    <category term="Linux Logging subsystem" scheme="https://cj0510.github.io/tags/Linux-Logging-subsystem/"/>
    <id>https://cj0510.github.io/2026/08/16/Linux%20Kernel/Logging%20subsystem/printk%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/</id>
    <link href="https://cj0510.github.io/2026/08/16/Linux%20Kernel/Logging%20subsystem/printk%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90/"/>
    <published>2026-08-16T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="printk-源码"><a href="#printk-源码" class="headerlink" title="printk 源码"></a>printk 源码</h1><p>之前我们讲了整个调用过程，本章从源码进行分析。</p>
<p><img src="https://github.com/CJ0510/picx-images-hosting/raw/master/image.102w7kgn6v.webp"></p>
<figure class="highlight c"><table><tr><td class="gutter"><pre><span]]>
    </summary>
    <title>printk源码分析</title>
    <updated>2026-08-22T03:35:00.261Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Logging subsystem" scheme="https://cj0510.github.io/categories/Linux-Kernel/Logging-subsystem/"/>
    <category term="Linux Logging subsystem" scheme="https://cj0510.github.io/tags/Linux-Logging-subsystem/"/>
    <id>https://cj0510.github.io/2026/08/09/Linux%20Kernel/Logging%20subsystem/Linux%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/</id>
    <link href="https://cj0510.github.io/2026/08/09/Linux%20Kernel/Logging%20subsystem/Linux%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/"/>
    <published>2026-08-09T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-为什么需要Kernel日志系统"><a href="#1-为什么需要Kernel日志系统" class="headerlink" title="1 为什么需要Kernel日志系统"></a>1 为什么需要Kernel日志系统</h1><p>为什么需要？因为用户空间都是需要通过系统调用（System Call）才能进入内核使用内核服务，内核也只能通过日志暴露问题，比如我们之前提到SPI，驱动probe失败时，用户只知道设备不能工作，不知懂哪里出了问题。</p>
<p>我们可以注入类似</p>
<figure class="highlight]]>
    </summary>
    <title>Linux日志系统整体架构</title>
    <updated>2026-08-09T10:08:39.008Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Logging subsystem" scheme="https://cj0510.github.io/categories/Linux-Kernel/Logging-subsystem/"/>
    <category term="Linux Logging subsystem" scheme="https://cj0510.github.io/tags/Linux-Logging-subsystem/"/>
    <id>https://cj0510.github.io/2026/08/09/Linux%20Kernel/Logging%20subsystem/printk%E6%9C%BA%E5%88%B6%E5%9F%BA%E7%A1%80/</id>
    <link href="https://cj0510.github.io/2026/08/09/Linux%20Kernel/Logging%20subsystem/printk%E6%9C%BA%E5%88%B6%E5%9F%BA%E7%A1%80/"/>
    <published>2026-08-09T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-printk-是什么"><a href="#1-printk-是什么" class="headerlink" title="1 printk 是什么"></a>1 printk 是什么</h1><p>内核中没有 <code>printf</code>，用户空间使用的 <code>printf</code> 是由 C lib 库提供的，只存在于用户空间。那内核空间是怎么使用的呢？</p>
<p>这条链路是这样的：</p>
<p><img]]>
    </summary>
    <title>printk机制基础</title>
    <updated>2026-08-16T11:12:09.420Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/08/Linux%20Kernel/SPI/Linux%20SPI%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/</id>
    <link href="https://cj0510.github.io/2026/08/08/Linux%20Kernel/SPI/Linux%20SPI%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/"/>
    <published>2026-08-08T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-SPI性能指标"><a href="#1-SPI性能指标" class="headerlink" title="1 SPI性能指标"></a>1 SPI性能指标</h1><p>无论优化什么，明确衡量指标永远是第一步。</p>
<p>我们先来看几个关键的性能指标：</p>
<ul>
<li>吞吐量：单位时间内传输的数据量</li>
<li>延迟：单次传输所需的时间</li>
<li>CPU 占用率</li>
<li>功耗</li>
</ul>
<p>回顾之前的 SPI 框架图，每一层都可能成为性能瓶颈，比如可能是 SPI Clock 太低等原因。</p>
<h1]]>
    </summary>
    <title>Linux SPI性能优化</title>
    <updated>2026-08-08T08:20:55.892Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/06/Linux%20Kernel/SPI/Linux%20SPI%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95/</id>
    <link href="https://cj0510.github.io/2026/08/06/Linux%20Kernel/SPI/Linux%20SPI%E8%B0%83%E8%AF%95%E6%96%B9%E6%B3%95/"/>
    <published>2026-08-06T14:11:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-SPI调试整体思路"><a href="#1-SPI调试整体思路" class="headerlink" title="1 SPI调试整体思路"></a>1 SPI调试整体思路</h1><p>前面说了这么多，真正的问题是怎么用起来，出了问题怎么定位解决？</p>
<p>前面对整个框架都有了概念，简化模型如下：</p>
<p><img]]>
    </summary>
    <title>Linux SPI调试方法</title>
    <updated>2026-08-08T08:19:57.694Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/03/Linux%20Kernel/SPI/Linux%20SPI%E5%90%8C%E6%AD%A5%E5%92%8C%E5%BC%82%E6%AD%A5%E6%8E%A5%E5%8F%A3%E5%88%86%E6%9E%90/</id>
    <link href="https://cj0510.github.io/2026/08/03/Linux%20Kernel/SPI/Linux%20SPI%E5%90%8C%E6%AD%A5%E5%92%8C%E5%BC%82%E6%AD%A5%E6%8E%A5%E5%8F%A3%E5%88%86%E6%9E%90/"/>
    <published>2026-08-03T12:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-为什么需要同步和异步接口"><a href="#1-为什么需要同步和异步接口" class="headerlink" title="1 为什么需要同步和异步接口"></a>1 为什么需要同步和异步接口</h1><p>先说下什么是同步和异步。就是字面意思啦。</p>
<ul>
<li>同步：调用者发起一个操作，原地等待，直到操作完成，期间不能做别的事情。</li>
<li>异步：调用着发起一个操作，立即返回，不等待结果，可以处理其他事情，任务完成后通知调用者处理</li>
</ul>
<p>我们看一个场景</p>
<p><img]]>
    </summary>
    <title>Linux SPI同步/异步接口分析</title>
    <updated>2026-08-06T14:10:29.192Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/</id>
    <link href="https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84/"/>
    <published>2026-08-01T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-SPI-Framework"><a href="#1-SPI-Framework" class="headerlink" title="1. SPI Framework"></a>1. SPI Framework</h1><p>上一章我们讲解了SPI的物理模型和传输时序图，从这一章开始我们深入分析Linux SPI框架。整个框架如图：</p>
<p><img]]>
    </summary>
    <title>Linux SPI Framework整体架构分析</title>
    <updated>2026-08-02T02:34:30.155Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E6%A0%B8%E5%BF%83%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E6%9E%90/</id>
    <link href="https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E6%A0%B8%E5%BF%83%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E6%9E%90/"/>
    <published>2026-08-01T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-spi-controller"><a href="#1-spi-controller" class="headerlink" title="1. spi_controller"></a>1. spi_controller</h1><p><img src="https://github.com/CJ0510/picx-images-hosting/raw/master/image.7axvl7557d.webp"></p>
<p>之前我们讲解了整个SPI框架的构成和数据传输流程。现在我们深入源码分析每一部分。</p>
<p>首先来看一下]]>
    </summary>
    <title>Linux SPI核心数据结构分析</title>
    <updated>2026-08-06T23:33:36.328Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E8%AE%BE%E5%A4%87%E5%A6%82%E4%BD%95%E4%BB%8EDevice%20Tree%E8%B5%B0%E5%88%B0driver%20probe/</id>
    <link href="https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/Linux%20SPI%E8%AE%BE%E5%A4%87%E5%A6%82%E4%BD%95%E4%BB%8EDevice%20Tree%E8%B5%B0%E5%88%B0driver%20probe/"/>
    <published>2026-08-01T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-为什么SPI设备需要DTS描述"><a href="#1-为什么SPI设备需要DTS描述" class="headerlink" title="1 为什么SPI设备需要DTS描述"></a>1 为什么SPI设备需要DTS描述</h1><p>对于 USB 设备、PCIe 设备，你插上去，内核就能自动识别。因为总线本身有<strong>设备枚举机制</strong>。USB 设备插上后，主机控制器会发起枚举请求，设备返回自己的 Vendor ID、Product ID、Class 等信息，内核据此动态创建 <code>struct device</code>]]>
    </summary>
    <title>Linux SPI设备如何从Device Tree走到driver probe</title>
    <updated>2026-08-02T09:45:56.855Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="SPI" scheme="https://cj0510.github.io/categories/Linux-Kernel/SPI/"/>
    <category term="Linux SPI" scheme="https://cj0510.github.io/tags/Linux-SPI/"/>
    <id>https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/SPI%E5%8D%8F%E8%AE%AE%E5%9F%BA%E7%A1%80/</id>
    <link href="https://cj0510.github.io/2026/08/01/Linux%20Kernel/SPI/SPI%E5%8D%8F%E8%AE%AE%E5%9F%BA%E7%A1%80/"/>
    <published>2026-08-01T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="1-What-is-SPI"><a href="#1-What-is-SPI" class="headerlink" title="1. What is SPI?"></a>1. What is SPI?</h1><p>在开始本章之前，先抛出一个问题，Linux SPI 框架最终要控制什么？</p>
<p>在嵌入式系统中，核心就是CPU，只有CPU是不能工作的，往往还需要接入各种外设并且与外设通信。<br>例如传感器、Flash、显示屏、ADC等。不同设备之间需要一种统一的数据交换方式，因此产生了各种通信协议，例如]]>
    </summary>
    <title>SPI协议基础：从四根线理解Linux SPI框架</title>
    <updated>2026-08-02T02:33:24.124Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="内存管理" scheme="https://cj0510.github.io/categories/Linux-Kernel/%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/"/>
    <category term="Linux" scheme="https://cj0510.github.io/tags/Linux/"/>
    <id>https://cj0510.github.io/2026/07/13/Linux%20Kernel/problem/</id>
    <link href="https://cj0510.github.io/2026/07/13/Linux%20Kernel/problem/"/>
    <published>2026-07-13T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="0-问题"><a href="#0-问题" class="headerlink" title="0 问题"></a>0 问题</h1><h2 id="1-内存"><a href="#1-内存" class="headerlink" title="1 内存"></a>1 内存</h2><h3 id="1-1-内存空洞是什么？外部碎片和内部碎片又是什么？"><a href="#1-1-内存空洞是什么？外部碎片和内部碎片又是什么？" class="headerlink" title="1.1 内存空洞是什么？外部碎片和内部碎片又是什么？"></a>1.1]]>
    </summary>
    <title>问题及思考</title>
    <updated>2026-08-01T12:59:11.047Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Memory Management" scheme="https://cj0510.github.io/categories/Linux-Kernel/Memory-Management/"/>
    <category term="Linux Memory" scheme="https://cj0510.github.io/tags/Linux-Memory/"/>
    <category term="Memory Management" scheme="https://cj0510.github.io/tags/Memory-Management/"/>
    <id>https://cj0510.github.io/2026/07/13/Linux%20Kernel/Memory%20Management/%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/</id>
    <link href="https://cj0510.github.io/2026/07/13/Linux%20Kernel/Memory%20Management/%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E7%AE%A1%E7%90%86/"/>
    <published>2026-07-13T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h1 id="虚拟内存管理"><a href="#虚拟内存管理" class="headerlink" title="虚拟内存管理"></a>虚拟内存管理</h1><p>Linux内存管理子系统负责管理虚拟内存、物理内存、地址转换和内存分配等，包含多个层次。<br>其整体架构如下，之后会一一分析。</p>
<p><img src="https://github.com/CJ0510/picx-images-hosting/raw/master/image.6f1fl7iokr.webp"></p>
<h1 id="虚拟内存管理-1"><a href="#虚拟内存管理-1"]]>
    </summary>
    <title>虚拟内存管理</title>
    <updated>2026-09-12T08:22:47.838Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="嵌入式" scheme="https://cj0510.github.io/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/"/>
    <category term="RK3566" scheme="https://cj0510.github.io/categories/%E5%B5%8C%E5%85%A5%E5%BC%8F/RK3566/"/>
    <category term="Linux" scheme="https://cj0510.github.io/tags/Linux/"/>
    <id>https://cj0510.github.io/2026/07/13/rk3566/P1/</id>
    <link href="https://cj0510.github.io/2026/07/13/rk3566/P1/"/>
    <published>2026-07-13T05:32:55.000Z</published>
    <summary>
      <![CDATA[<h2 id="简介"><a href="#简介" class="headerlink" title="简介"></a>简介</h2><p>本项目基于泰山派编写一款属于自己Linux SDK。</p>
<h3 id="环境搭建"><a href="#环境搭建" class="headerlink" title="环境搭建"></a>环境搭建</h3><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span]]>
    </summary>
    <title>RK3566 BSP</title>
    <updated>2026-08-30T13:35:52.116Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="进程管理" scheme="https://cj0510.github.io/categories/Linux-Kernel/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/"/>
    <category term="Linux" scheme="https://cj0510.github.io/tags/Linux/"/>
    <category term="内核" scheme="https://cj0510.github.io/tags/%E5%86%85%E6%A0%B8/"/>
    <category term="进程管理" scheme="https://cj0510.github.io/tags/%E8%BF%9B%E7%A8%8B%E7%AE%A1%E7%90%86/"/>
    <category term="进程优先级" scheme="https://cj0510.github.io/tags/%E8%BF%9B%E7%A8%8B%E4%BC%98%E5%85%88%E7%BA%A7/"/>
    <category term="nice" scheme="https://cj0510.github.io/tags/nice/"/>
    <id>https://cj0510.github.io/2026/07/12/Linux%20Kernel/process_management/%E8%BF%9B%E7%A8%8B%E4%BC%98%E5%85%88%E7%BA%A7/</id>
    <link href="https://cj0510.github.io/2026/07/12/Linux%20Kernel/process_management/%E8%BF%9B%E7%A8%8B%E4%BC%98%E5%85%88%E7%BA%A7/"/>
    <published>2026-07-12T05:32:55.000Z</published>
    <summary>从 task_struct 源码出发，详细分析 Linux 内核的优先级体系：static_prio、rt_priority、 normal_prio、prio 的定义、计算关系与调度策略映射，覆盖 SCHED_FIFO / SCHED_RR / SCHED_DEADLINE / SCHED_NORMAL 四种调度类的优先级规则。</summary>
    <title>进程优先级</title>
    <updated>2026-07-12T08:48:10.905Z</updated>
  </entry>
  <entry>
    <author>
      <name>CJ1018</name>
    </author>
    <category term="Linux Kernel" scheme="https://cj0510.github.io/categories/Linux-Kernel/"/>
    <category term="Linux" scheme="https://cj0510.github.io/tags/Linux/"/>
    <category term="内核" scheme="https://cj0510.github.io/tags/%E5%86%85%E6%A0%B8/"/>
    <category term="资料" scheme="https://cj0510.github.io/tags/%E8%B5%84%E6%96%99/"/>
    <id>https://cj0510.github.io/2025/09/07/Linux%20Kernel/ziliao/</id>
    <link href="https://cj0510.github.io/2025/09/07/Linux%20Kernel/ziliao/"/>
    <published>2025-09-07T02:44:49.000Z</published>
    <summary>Linux 内核学习资料汇总：源码、书籍、博客、工具链等优质资源整理</summary>
    <title>Linux-Kernel 0 资料整理</title>
    <updated>2026-08-01T12:59:42.967Z</updated>
  </entry>
</feed>
