补全:时间片轮转

(只看「算」的格数:核对 4、写盘 1、心跳 1。处理器一次算一格。) 补全 round_robin(jobs, quantum):只要还有任务没算完,就按顺序给每个未完成的任务算 quantum 格(不够就算剩下的),记下顺序。用时间片

开始练习 →

补全:分给几个核

(只看「算」的格数:核对 4、写盘 1、心跳 1。处理器一次算一格。) 补全 makespan(jobs, cores):把任务按格数从大到小依次分给当前最闲的核,交回最忙的核的格数。

开始练习 →

补全:真开三个线程

用真线程做一次并发:三个线程各自把一个计数器加到 1000,主线程 join 等它们全做完再打印。补全 worker 和启动/等待。

开始练习 →

线程为什么便宜

开一个线程比开一个进程便宜得多。根本原因是【0】。

开始练习 →

开一个进程要准备什么

操作系统开一个新进程时,必须为它准备的是【0】。

开始练习 →

什么时候值得花这个钱

明知进程贵,有些场合还是要开进程而不是线程。最典型的理由是【0】。

开始练习 →

八个工人各要多少

(成本模型:开一个进程 100 格(要给它独立的内存和资源表),开一个线程 10 格(只要一个栈和一个编号)。) 要开 8 个工人。看全开进程和全开线程各花多少格: PROCESS, THREAD = 100, 10 n = 8 print

开始练习 →

真开五十个线程

真开 50 个线程,每个只做一件小事就结束。看做完之后完成计数和还活着的线程数: import threading done = [] lock = threading.Lock() def work(i): with lock

开始练习 →

补全:按需求选便宜的

(成本模型:开一个进程 100 格(要给它独立的内存和资源表),开一个线程 10 格(只要一个栈和一个编号)。) 补全 cost(n, isolate):需要隔离就只能开进程,否则开线程;交回总成本。

开始练习 →

补全:开线程收结果

补全:开 5 个线程,每个把自己的编号平方后放进共享列表(加锁),主线程等完再按顺序打印。

开始练习 →