- 博客(30)
- 收藏
- 关注
原创 笔记:现代操作系统:原理与实现(10)
系统虚拟化技术能在一台物理主机上创建多个虚拟机。系统虚拟化技术的核心是虚拟机监控器,它一般运行在 CPU 的最高特权级,直接控制着硬件,并为上层软件提供虚拟的硬件接口,让这些软件“以为”自己运行在真实的物理主机上。虚拟(virtualization)vs. 抽象(abstraction)操作系统会为硬件定义新的“抽象”,其体现为新的软件接口;而虚拟机监控器并不引入新的接口,只提供对已有硬件接口的“虚拟化”。
2025-11-16 00:02:32
787
原创 笔记:现代操作系统:原理与实现(9)
设备驱动(device driver)是操作系统中负责控制设备的定制化程序。所谓定制化,是指驱动本身需要根据设备的具体型号和相应参数进行特定配置。
2025-11-10 20:48:14
917
原创 笔记:现代操作系统:原理与实现(8)
Linux 的 VFS 基于 inode 制定了一系列的内存数据结构,包括超级块、inode、目录项等。这些统一的内存数据结构掩盖了多种文件系统在设计和实现上的不同,使以不同格式保存在存储设备中的数据以统一的格式出现在内存中。
2025-11-05 23:16:34
989
原创 笔记:现代操作系统:原理与实现(7)
解决临界区问题是保证多核中并行程序正确性的关键。然而,即使在单核中,临界区问题同样存在。由于调度器允许多个线程在一个核心中交错执行,正在临界区内执行的线程可能会被打断,然后另一个线程又被调度进临界区,从而造成两个线程同时处于临界区的现象,导致竞争冒险。
2025-10-31 21:17:54
701
原创 笔记:现代操作系统:原理与实现(6)
信号是一种非常特殊的进程间通信的机制,它传递的信息很短,只有一个编号(信号编号)。信号在 Linux 系统中的使用非常广泛。一个简单的例子是用 Ctrl+C 在 Shell 中终止一个执行中的程序。其背后的逻辑是 Shell 发出了一个 SIGINT 信号,从而导致默认信号处理函数结束了对应的进程。在通信的场景下,一个进程会为—些特定的信号编号注册处理函数(类似于前面通信中的服务端进程的处理函数)。当进程接收到对应的信号时,内核会自动地将该用户的控制流切换到对应的处理函数中。
2025-10-28 20:33:05
1031
原创 笔记:现代操作系统:原理与实现(5)
需要注意的是,由于线程是 Linux 的调度单元,这里的 pid 参数实际上是 Linux 为每个线程分配的标识符。新的调度策略改为每个 CPU 核心都引入一个本地调度器,并用它管理对应核心上执行的任务,每个任务应尽可能只在一个 CPU 核心上进行调度,减少CPU切换的开销。协同调度的目的是尽可能让一组任务并行执行,避免调度器同时调度有依赖关系的两组任务(对应于 Makefile 例子中第一步的任务与第二步的任务),同时避免关联任务(倾向于同时执行的一系列任务,比如需要相互通信的任务)执行效率降低的问题。
2025-10-20 21:55:03
948
原创 笔记:现代操作系统:原理与实现(4)
现代操作系统需要运行各种各样的程序。为了管理这些程序的运行,操作系统提出了(process)的抽象:每个进程都对应于一个运行中的程序。为了使多个进程能够同时执行,操作系统进一步提出了(context switch)机制,通过保存和恢复进程在运行过程中的状态(即上下文),使进程可以暂停、切换和恢复,从而实现了 CPU 资源的共享。针对进程间数据不易共享、通信开销高等问题,操作系统在进程内部引入了更轻量级的执行单元,也就是(thread)。由于上下文切换需要进入内核,开销较大,后续又引入了。
2025-09-26 21:54:07
698
原创 笔记:现代操作系统:原理与实现(2)
操作系统乃至计算机系统中控制复杂度的—个重要设计原则是:将策略与机制相分离,其中(policy)表示要‘‘做什么”,(mechanjsm)表示该“如何做”。
2025-09-06 00:08:25
777
原创 安全引导功能及ATF的启动过程(五)
bl31中的runtime_svc_init函数会初始化OP-TEE对应的服务,通过调用该服务项的初始化函数来完成OP-TEE的启动。对于OP-TEE的服务项会通过DECLARE_RT_SVC宏在编译时被存放到rt_svc_des段中。该段中的init成员会被初始化成opteed_setup函数,由此开始进入到OP-TEE OS的启动。整个流程如图所示。
2025-08-10 22:26:09
577
原创 安全引导功能及ATF的启动过程(四)
在bl2中触发安全监控模式调用后会跳转到bl31中执行,bl31最主要的作用是建立EL3运行态的软件配置,在该阶段会完成各种类型的安全监控模式调用ID的注册和对应的ARM核状态的切换,bl31运行在EL3。bl31的执行流程如图所示。
2025-08-08 23:08:29
369
原创 安全引导功能及ATF的启动过程(三)
bl2镜像将为后续镜像的加载执行相关的初始化操作,主要是内存、MMU、串口以及EL3软件运行环境的设置,并且加载bl3x的镜像到内存中。通过查看bl2.ld.S文件可发现,bl2镜像的入口函数是该函数定义在bl2/aarch64/bl2_entrypoint.S文件中。该阶段的执行流程如图所示。
2025-08-06 22:43:25
647
翻译 比特币为何被创造
本系列是我个人翻译的英文阅读笔记,既为巩固所学,也为分享知识(如有侵权请联系删除)下面是正文原文链接:https://dev.to/blockexperts/why-bitcoin-was-created-4lc5要理解比特币的重要性,我们需要回溯到第二次世界大战后的时期——当时同盟国共同重建全球金融体系。
2025-08-02 23:19:14
45
原创 安全引导功能及ATF的启动过程(二)
系统上电之后首先会运行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文件中。
2025-08-02 20:53:17
893
原创 安全引导功能及ATF的启动过程(一)
安全引导(Secure Boot)功能是指在系统的整个启动过程中,使用链式验证电子签名的方式来验证系统中重要镜像文件的可靠性,然后再加载镜像文件的引导过程。系统启动过程中的Bootloader、Linux内核、TEE OS的启动都由ATF()来加载和引导。
2025-08-02 20:47:33
1285
原创 OP-TEE驱动、tee_supplicant的启动
Linux系统在启动的过程中会自动挂载OP-TEE的驱动,驱动挂载过程中会创建/dev/tee0和/dev/teepriv0设备。其中/dev/tee0设备将会被REE侧的用户空间的库(libteec)使用/dev/teepriv0设备将会被系统中的常驻进程tee_supplicant使用。
2025-08-02 18:23:59
405
翻译 要成为更优秀的程序员,先在脑中推演小段逻辑
本系列是我个人翻译的英文阅读笔记,既为巩固所学,也为分享知识(如有侵权请联系删除)下面是正文原文链接:https://the-nerve-blog.ghost.io/to-be-a-better-programmer-write-little-proofs-in-your-head/这是一篇关于我偶然学到的编程技巧的短文,它能帮助我更快速、更准确地编写代码。我称之为"技巧",但其实随着职业生涯的发展,我不知不觉就养成了这个习惯。
2025-07-19 22:47:11
77
原创 OP-TEE运行环境的搭建和编译
在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进行依赖。
2025-07-18 22:01:57
386
翻译 内向者如何建立人脉网络
我领悟到的是:你无需刻意应酬全场,也不必伪装成别人。大多数时候,只需自信地出现、专注地倾听,并留下一个真实的瞬间——这才是人们真正会记住的部分。
2025-07-12 21:35:45
95
原创 浅析optee中CA调用TA的过程5 Crypto
是一个开源的 TEE 实现,主要用于基于 ARM TrustZone 技术的嵌入式设备。它为运行在“安全世界(Secure World)”中的可信应用(Trusted Applications, TA)提供了一个隔离的安全执行环境。其中一个关键特性就是:提供完整的 加密服务接口(Crypto API) ,支持多种加密算法和密钥管理机制。从TA到实际加密算法之间存在多个层级。大多数加密代码运行在TEE核心的内核模式下。
2025-07-12 20:24:54
469
翻译 如何编写更优质的 Git 提交信息——分步指南
本系列是我个人翻译的英文阅读笔记,既为巩固所学,也为分享知识(如有侵权请联系删除)下面是正文原文链接:https://www.freecodecamp.org/news/how-to-write-better-git-commit-messages/当开发者初次接触Git时,通常会对操作流程感到不适应。面对Git提交信息时,你可能会感到无所适从——不知该如何准确概括代码变更内容及其缘由。但越早养成规范的提交习惯,对你的职业发展越有利。你是否思考过如何提升Git提交信息的质量?
2025-07-06 01:45:42
40
原创 浅析optee中CA调用TA的过程4 Secure storage
OP-TEE 的持久化机制允许 TA 将敏感数据安全地存储在非易失性存储器中,从而在设备重启后仍能恢复使用。这种机制常用于保护密钥材料或认证凭据,在包括移动支付、设备认证等场景中有广泛应用。部分 Android 设备可能利用类似机制来增强用户认证的安全性,但具体实现方式因设备而异。
2025-07-06 00:08:13
1040
翻译 可信执行环境应用安全编码实践:面向CA与TA开发者的指南
本系列是我个人翻译的英文阅读笔记,既为巩固所学,也为分享知识(如有侵权请联系删除)下面是正文。
2025-06-29 00:14:01
158
原创 浅析optee中CA调用TA的过程3 shared memory
共享内存(Shared Memory)是非安全世界(Non-secure World)与安全世界(Secure World)之间共享的内存区域,用于实现两个世界间的数据传输。其分配与管理完全由非安全世界(即Linux OP-TEE驱动)负责,安全世界仅处理具体的共享缓冲区而非内存池。
2025-06-28 23:59:51
780
翻译 作为一名开发者,我在Github上最爱的开源工具(2025年最新清单)
2025年的开源生态比以往任何时候都更加强大。最让我欣喜的是,这些工具让开发者无需依赖封闭平台或臃肿的企业套件,就能轻松构建高质量的软件。这份清单上的所有工具均托管于GitHub,完全开源,旨在解决开发者实际痛点。从AI编程助手到PaaS替代方案,再到单体仓库工具,这些项目正在重塑当今的软件开发方式。如果你正在探索2025年的GitHub开源工具,这些精选项目堪称理想起点。
2025-06-21 17:04:35
1599
原创 浅析optee中CA调用TA的过程2 invoke
在OP-TEE中,TEEC_InvokeCommand() 承担着核心功能调用的角色。虽然 TEEC_OpenSession 和 TEEC_CloseSession 负责会话的创建与销毁,但真正的功能执行主要依赖于 TEEC_InvokeCommand,它通过指定的命令ID(Command ID)触发TA(Trusted Application)中的具体操作。
2025-06-20 22:39:42
1149
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅