Skip to content

feat: 添加初探操作系统的学习总结与感悟 #727

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions source/_posts/初探操作系统.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
---
title: 初探操作系统
date: 2025-04-28 16:40:48
tags:
- author:estelledc
- repo:<2025s-rcore-estelledc>
categories:
- 感悟
- 总结
---

# 第二阶段总结:操作系统学习的感悟与理解

经过这一阶段对操作系统核心内容的系统学习和实践,我对操作系统的本质、关键机制以及与 Rust 结合的优势有了更深刻的理解。以下是我的主要体会和总结:

---

## 一、操作系统的本质与核心任务

操作系统是管理硬件资源、为上层应用提供抽象和隔离的基础软件。它的核心任务包括:

- **进程与线程管理**:通过进程(资源分配单位)和线程(调度单位)实现多任务并发,保障系统的响应性和资源利用率。PCB(进程控制块)和 TCB(线程控制块)是操作系统调度和管理的核心数据结构。
- **内存管理**:通过虚拟内存、分页机制和权限控制,实现进程隔离、内存高效分配与回收。页表、TLB、懒分配、写时复制等机制极大提升了系统的安全性和性能。
- **进程调度**:采用多种调度算法(如时间片轮转、优先级、MLFQ等)实现公平与高效的 CPU 分配。上下文切换和调度策略直接影响系统吞吐和响应速度。
- **系统调用接口**:为用户程序提供受控访问硬件和内核资源的通道,实现用户态与内核态的安全切换。
- **硬件抽象与性能优化**:通过缓存、TLB、ASID 等机制优化访问速度,利用中断和异常机制实现高效的事件响应。

---

<!-- more -->

## 二、关键机制的理解与实践

1. **进程与线程**
- 理解了进程的生命周期、父子关系、僵尸进程的回收机制,以及线程的实现方式和同步原语(如 Mutex、信号量)。
- 实践中通过 PCB/TCB 管理,实现了多进程/多线程的调度和切换。

2. **内存管理与分页机制**
- 深入掌握了虚拟地址与物理地址的映射、页表结构(如 SV39)、PTE 各字段的作用。
- 理解了懒分配、写时复制、mmap/munmap、权限控制等高级特性,并通过实验实现了相关系统调用。
- 认识到页表和 TLB 在性能和安全中的关键作用,理解了 ASID、TLB 刷新等机制。

3. **进程调度与算法**
- 实现了时间片轮转、stride 等调度算法,理解了公平性与优先级的平衡。
- 体会到上下文切换的本质是“存档与读档”,调度器的设计直接影响系统的响应和吞吐。

4. **系统调用与内核接口**
- 理解了系统调用的实现流程、参数传递、用户态与内核态的切换机制。
- 实践了 syscall 跟踪、统计等功能,体会到内核接口设计的灵活性与安全性。

5. **硬件与性能优化**
- 学习了缓存、TLB、页表等硬件机制对操作系统性能的影响。
- 认识到合理利用硬件特性(如懒分配、写时复制、ASID)是提升系统性能的关键。

---

## 三、Rust 视角下的操作系统开发

- **内存安全与并发安全**:Rust 的所有权、借用和生命周期机制,在操作系统开发中极大降低了悬垂指针、数据竞争等低级错误的风险,实现了“无 GC 下的高效安全内存管理”。
- **零成本抽象**:Rust 的泛型、trait、智能指针等特性,使得高层抽象不会带来运行时开销,既保证了代码的可维护性,又兼顾了性能。
- **现代系统编程范式**:通过 Rust,能够用更现代、更安全的方式实现传统操作系统的各项机制,提升了开发效率和系统可靠性。

---

## 四、学习方法与思考

- **理论与实践结合**:通过阅读文档、动手实验、查阅源码和 PR,不断将理论知识转化为实际能力。
- **善用 AI 与工具**:AI 能极大提升查阅和总结效率,但真正的理解还需亲自思考和动手实现。
- **持续总结与反思**:定期总结所学内容,梳理知识脉络,有助于加深理解和查漏补缺。

---

## 五、整体感悟

操作系统是一门集理论、工程与硬件知识于一体的学科。通过本阶段的学习,我不仅掌握了操作系统的核心机制和实现方法,更体会到系统设计的复杂性与美感。Rust 语言为操作系统开发带来了新的可能,让安全与高效不再是对立面。未来,我希望能继续深入底层系统开发,将所学知识应用于更复杂的场景中。

---