In [1]:
from mosaic import *
OS2023(24)
24. 进程的实现¶
Changelog & 反馈
- 非常繁忙的一周终于快要过去了
- (保重身体,预防猝死)
背景回顾:我们已经了解了应用视角的操作系统:操作系统是状态机的管理者,也为状态机提供一组系统调用 API。那么,进程 (状态机) 在操作系统内究竟是如何实现的?
本讲内容:
- 进程的实现
- 处理器调度
In [2]:
slideshow('24.1')
In [3]:
demo('thread-os', 'c/thread-os-singlecpu')
In [4]:
demo('large', 'v/large.c')
In [5]:
demo('vm', 'v/vm.c')
In [6]:
demo('cow-test', 'v/cow-test.c')
In [7]:
slideshow('24.2')
In [8]:
slideshow('24.3')
In [9]:
demo('sum', 'c/sum-atomic.c', libs=['thread.h'])
Take-away Messages¶
进程在操作系统中的实现是简单又复杂的。从简单来说,进程就是带有独立地址空间的线程;通过硬件提供的分页机制,就能给线程戴上 “VR 眼镜”,使得看到的内存并不是真实的内存。同时,进程也是复杂的:我们可以借助虚拟内存实现 demand paging、copy-on-write fork 等有趣的机制;而如何调度系统中的进程,在现代多处理器时代也显得愈加复杂。
1. 阅读材料¶
教科书 Operating Systems: Three Easy Pieces:
- 第 15 章 - Address Translation
- 第 16 章 - Segmentation
- 第 18 章 - Introduction to Paging
- 第 19 章 - Translation Lookaside Buffers
- 第 20 章 - Advanced Page Tables
- 第 21 章 - Swapping: Mechanisms
- 第 22 章 - Swapping: Policies
- 第 24 章 - Complete VM Systems