rCore-Tutorial-Book-v3
Part1 - Just do it!
第零章:操作系统概述
第一章:应用程序与基本执行环境
第二章:批处理系统
第三章:多道程序与分时多任务
第四章:地址空间
第五章:进程
第六章:文件系统
第七章:进程间通信与 I/O 重定向
第八章:并发
引言
用户态的线程管理
内核态的线程管理
锁机制
信号量机制
条件变量机制
并发中的问题
练习
第九章:I/O设备管理
附录
综合练习
附录 A:Rust 系统编程入门
附录 B:常见工具的使用方法
附录 C:深入机器模式:RustSBI
附录 D:RISC-V相关信息
附录 E:操作系统进一步介绍
术语中英文对照表
开发注记
修改和构建本项目
reStructuredText 基本语法
更新日志
rCore-Tutorial-Book-v3
»
第八章:并发
查看页面源码
第八章:并发
引言
本章导读
线程定义
同步互斥
实践体验
本章代码树
本章代码导读
用户态的线程管理
本节导读
用户态多线程应用
多线程的基本执行环境
线程的结构与执行状态
线程管理运行时初始化
线程创建
线程切换
开始执行
内核态的线程管理
本节导读
线程概念
通用操作系统多线程应用程序示例
线程模型与重要系统调用
线程创建系统调用
等待子线程系统调用
进程相关的系统调用
应用程序示例
系统调用封装
多线程应用程序 – threads
线程管理的核心数据结构
线程控制块
包含线程的进程控制块
线程与处理器管理结构
线程管理机制的设计与实现
线程创建、线程退出与等待线程结束
线程创建
线程退出
等待线程结束
线程执行中的特权级切换和调度切换
锁机制
本节导读
为什么需要锁
锁的基本思路
用户态软件级方法实现锁
机器指令硬件级方法实现锁
实现锁:原子指令
CAS原子指令和TAS原子指令
RISC-V的AMO指令与LR/SC指令
内核态操作系统级方法实现锁
实现锁:yield系统调用
实现锁:mutex系统调用
使用mutex系统调用
mutex系统调用的实现
信号量机制
本节导读
信号量的起源和基本思路
实现信号量
使用semaphore系统调用
实现semaphore系统调用
条件变量机制
本节导读
条件变量的基本思路
实现条件变量
使用condvar系统调用
实现condvar系统调用
并发中的问题
本节导读
互斥缺陷
同步缺陷
死锁缺陷
死锁预防
死锁避免
银行家算法的数据结构
银行家算法的步骤
安全性检查算法
练习
课后练习
编程题
问答题
实验练习
编程作业
并发
实验要求
问答作业
实验练习的提交报告要求