<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[koolie_bd的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/koolie_bd</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; koolie_bd]]></copyright><item><title><![CDATA[笔记：现代操作系统：原理与实现（10）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/154885983</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/154885983</guid><author>koolie_bd</author><pubDate>Sun, 16 Nov 2025 00:02:32 +0800</pubDate><description><![CDATA[系统虚拟化技术能在一台物理主机上创建多个虚拟机。系统虚拟化技术的核心是虚拟机监控器，它一般运行在 CPU 的最高特权级，直接控制着硬件，并为上层软件提供虚拟的硬件接口，让这些软件“以为”自己运行在真实的物理主机上。虚拟（virtualization）vs. 抽象（abstraction）操作系统会为硬件定义新的“抽象”，其体现为新的软件接口；而虚拟机监控器并不引入新的接口，只提供对已有硬件接口的“虚拟化”。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（9）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/154660394</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/154660394</guid><author>koolie_bd</author><pubDate>Mon, 10 Nov 2025 20:48:14 +0800</pubDate><description><![CDATA[设备驱动（device driver）是操作系统中负责控制设备的定制化程序。所谓定制化，是指驱动本身需要根据设备的具体型号和相应参数进行特定配置。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（8）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/154458437</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/154458437</guid><author>koolie_bd</author><pubDate>Wed, 05 Nov 2025 23:16:34 +0800</pubDate><description><![CDATA[Linux 的 VFS 基于 inode 制定了一系列的内存数据结构，包括超级块、inode、目录项等。这些统一的内存数据结构掩盖了多种文件系统在设计和实现上的不同，使以不同格式保存在存储设备中的数据以统一的格式出现在内存中。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（7）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/154204000</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/154204000</guid><author>koolie_bd</author><pubDate>Fri, 31 Oct 2025 21:17:54 +0800</pubDate><description><![CDATA[解决临界区问题是保证多核中并行程序正确性的关键。然而，即使在单核中，临界区问题同样存在。由于调度器允许多个线程在一个核心中交错执行，正在临界区内执行的线程可能会被打断，然后另一个线程又被调度进临界区，从而造成两个线程同时处于临界区的现象，导致竞争冒险。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（6）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/154030702</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/154030702</guid><author>koolie_bd</author><pubDate>Tue, 28 Oct 2025 20:33:05 +0800</pubDate><description><![CDATA[信号是一种非常特殊的进程间通信的机制，它传递的信息很短，只有一个编号（信号编号）。信号在 Linux 系统中的使用非常广泛。一个简单的例子是用 Ctrl+C 在 Shell 中终止一个执行中的程序。其背后的逻辑是 Shell 发出了一个 SIGINT 信号，从而导致默认信号处理函数结束了对应的进程。在通信的场景下，一个进程会为—些特定的信号编号注册处理函数（类似于前面通信中的服务端进程的处理函数）。当进程接收到对应的信号时，内核会自动地将该用户的控制流切换到对应的处理函数中。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（5）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/153652124</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/153652124</guid><author>koolie_bd</author><pubDate>Mon, 20 Oct 2025 21:55:03 +0800</pubDate><description><![CDATA[需要注意的是，由于线程是 Linux 的调度单元，这里的 pid 参数实际上是 Linux 为每个线程分配的标识符。新的调度策略改为每个 CPU 核心都引入一个本地调度器，并用它管理对应核心上执行的任务，每个任务应尽可能只在一个 CPU 核心上进行调度，减少CPU切换的开销。协同调度的目的是尽可能让一组任务并行执行，避免调度器同时调度有依赖关系的两组任务（对应于 Makefile 例子中第一步的任务与第二步的任务），同时避免关联任务（倾向于同时执行的一系列任务，比如需要相互通信的任务）执行效率降低的问题。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（4）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/152136724</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/152136724</guid><author>koolie_bd</author><pubDate>Fri, 26 Sep 2025 21:54:07 +0800</pubDate><description><![CDATA[现代操作系统需要运行各种各样的程序。为了管理这些程序的运行，操作系统提出了（process）的抽象：每个进程都对应于一个运行中的程序。为了使多个进程能够同时执行，操作系统进一步提出了（context switch）机制，通过保存和恢复进程在运行过程中的状态（即上下文），使进程可以暂停、切换和恢复，从而实现了 CPU 资源的共享。针对进程间数据不易共享、通信开销高等问题，操作系统在进程内部引入了更轻量级的执行单元，也就是（thread）。由于上下文切换需要进入内核，开销较大，后续又引入了。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（3）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/151895915</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/151895915</guid><author>koolie_bd</author><pubDate>Sat, 20 Sep 2025 12:36:09 +0800</pubDate><description><![CDATA[操作系统究竟是如何让不同的应用程序能够既高效又安全地共同使用物理内存资源的？。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（2）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/151233489</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/151233489</guid><author>koolie_bd</author><pubDate>Sat, 06 Sep 2025 00:08:25 +0800</pubDate><description><![CDATA[操作系统乃至计算机系统中控制复杂度的—个重要设计原则是:将策略与机制相分离，其中（policy）表示要‘‘做什么”，（mechanjsm）表示该“如何做”。]]></description><category></category></item><item><title><![CDATA[笔记：现代操作系统：原理与实现（1）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/151086022</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/151086022</guid><author>koolie_bd</author><pubDate>Mon, 01 Sep 2025 22:57:00 +0800</pubDate><description><![CDATA[冯诺依曼结构组成部分。]]></description><category></category></item><item><title><![CDATA[安全引导功能及ATF的启动过程（五）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/150162703</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/150162703</guid><author>koolie_bd</author><pubDate>Sun, 10 Aug 2025 22:26:09 +0800</pubDate><description><![CDATA[bl31中的runtime_svc_init函数会初始化OP-TEE对应的服务，通过调用该服务项的初始化函数来完成OP-TEE的启动。对于OP-TEE的服务项会通过DECLARE_RT_SVC宏在编译时被存放到rt_svc_des段中。该段中的init成员会被初始化成opteed_setup函数，由此开始进入到OP-TEE OS的启动。整个流程如图所示。]]></description><category></category></item><item><title><![CDATA[安全引导功能及ATF的启动过程（四）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/150078987</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/150078987</guid><author>koolie_bd</author><pubDate>Fri, 08 Aug 2025 23:08:29 +0800</pubDate><description><![CDATA[在bl2中触发安全监控模式调用后会跳转到bl31中执行，bl31最主要的作用是建立EL3运行态的软件配置，在该阶段会完成各种类型的安全监控模式调用ID的注册和对应的ARM核状态的切换，bl31运行在EL3。bl31的执行流程如图所示。]]></description><category></category></item><item><title><![CDATA[安全引导功能及ATF的启动过程（三）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149983003</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149983003</guid><author>koolie_bd</author><pubDate>Wed, 06 Aug 2025 22:43:25 +0800</pubDate><description><![CDATA[bl2镜像将为后续镜像的加载执行相关的初始化操作，主要是内存、MMU、串口以及EL3软件运行环境的设置，并且加载bl3x的镜像到内存中。通过查看bl2.ld.S文件可发现，bl2镜像的入口函数是该函数定义在bl2/aarch64/bl2_entrypoint.S文件中。该阶段的执行流程如图所示。]]></description><category></category></item><item><title><![CDATA[比特币为何被创造]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149866023</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149866023</guid><author>koolie_bd</author><pubDate>Sat, 02 Aug 2025 23:19:14 +0800</pubDate><description><![CDATA[本系列是我个人翻译的英文阅读笔记，既为巩固所学，也为分享知识（如有侵权请联系删除）下面是正文原文链接：https://dev.to/blockexperts/why-bitcoin-was-created-4lc5要理解比特币的重要性，我们需要回溯到第二次世界大战后的时期——当时同盟国共同重建全球金融体系。]]></description><category></category></item><item><title><![CDATA[安全引导功能及ATF的启动过程（二）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149864250</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149864250</guid><author>koolie_bd</author><pubDate>Sat, 02 Aug 2025 20:53:17 +0800</pubDate><description><![CDATA[系统上电之后首先会运行ChipRom，之后会跳转到ATF的bl1中继续执行。bl1主要初始化CPU、设定异常向量、将bl2的镜像加载到安全RAM中，然后跳转到bl2中开始运行。bl1的主要代码存放在bl1目录中，bl1的链接文件是bl1/bl1.ld.s文件，该文件指定bl1的入口函数是bl1_entrypoint。AArch32的该函数定义在bl1/aarch32/bl1_entrypoint.S文件中，AArch64的该函数定义在bl1/aarch64/bl1_entrypoint.S文件中。]]></description><category></category></item><item><title><![CDATA[安全引导功能及ATF的启动过程（一）]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149864177</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149864177</guid><author>koolie_bd</author><pubDate>Sat, 02 Aug 2025 20:47:33 +0800</pubDate><description><![CDATA[安全引导（Secure Boot）功能是指在系统的整个启动过程中，使用链式验证电子签名的方式来验证系统中重要镜像文件的可靠性，然后再加载镜像文件的引导过程。系统启动过程中的Bootloader、Linux内核、TEE OS的启动都由ATF（）来加载和引导。]]></description><category></category></item><item><title><![CDATA[OP-TEE驱动、tee_supplicant的启动]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149862802</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149862802</guid><author>koolie_bd</author><pubDate>Sat, 02 Aug 2025 18:23:59 +0800</pubDate><description><![CDATA[Linux系统在启动的过程中会自动挂载OP-TEE的驱动，驱动挂载过程中会创建/dev/tee0和/dev/teepriv0设备。其中/dev/tee0设备将会被REE侧的用户空间的库（libteec）使用/dev/teepriv0设备将会被系统中的常驻进程tee_supplicant使用。]]></description><category></category></item><item><title><![CDATA[要成为更优秀的程序员，先在脑中推演小段逻辑]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149472085</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149472085</guid><author>koolie_bd</author><pubDate>Sat, 19 Jul 2025 22:47:11 +0800</pubDate><description><![CDATA[本系列是我个人翻译的英文阅读笔记，既为巩固所学，也为分享知识（如有侵权请联系删除）下面是正文原文链接：https://the-nerve-blog.ghost.io/to-be-a-better-programmer-write-little-proofs-in-your-head/这是一篇关于我偶然学到的编程技巧的短文，它能帮助我更快速、更准确地编写代码。我称之为"技巧"，但其实随着职业生涯的发展，我不知不觉就养成了这个习惯。]]></description><category></category></item><item><title><![CDATA[OP-TEE运行环境的搭建和编译]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149453988</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149453988</guid><author>koolie_bd</author><pubDate>Fri, 18 Jul 2025 22:01:57 +0800</pubDate><description><![CDATA[在optee4.6.0版本中编译目标主要在build/Makefile 和 build/common.mk中被定义，编译目标的依赖关系如图所示SPMC： 安全分区管理器核心MEASURED_BOOT_FTPM：支持基于 fTPM（Firmware Trusted Platform Module） 的安全启动测量功能。其中，buildroot这部分通过make_def_config.py对optee_examples、optee_client、optee_test、xen进行依赖。]]></description><category></category></item><item><title><![CDATA[内向者如何建立人脉网络]]></title><link>https://blog.youkuaiyun.com/koolie_bd/article/details/149300372</link><guid>https://blog.youkuaiyun.com/koolie_bd/article/details/149300372</guid><author>koolie_bd</author><pubDate>Sat, 12 Jul 2025 21:35:45 +0800</pubDate><description><![CDATA[我领悟到的是：你无需刻意应酬全场，也不必伪装成别人。大多数时候，只需自信地出现、专注地倾听，并留下一个真实的瞬间——这才是人们真正会记住的部分。]]></description><category></category></item></channel></rss>