思考练习作业
根据课堂上讲的模拟场景,请分别编写故事:一个进程中多个线程的做菜(或类似的场景,只要能做好类比就行),多个进程(一个进程中一个线程)做菜,多进程(一个进程中多个线程)做菜。然后分别讲每个故事对应到程序和计算机的世界,讲成进程、线程利用CPU、寄存器、内存、IO和程序进行数据处理的故事。
个人形式以WORD文档提交,有图示更好。
截止日期:2019年5月19日22:00.
一个进程中多个线程的做菜:
有一个厨房,里面有几个厨师,他们都在厨房里面,每个人负责不同的菜品流程,比如A负责杀鸡,B负责烧水,C负责拔毛,D负责煮鸡。因为他们都在厨房里,所以是可以共享资源的。所以A杀鸡的同时B也可以利用厨房的柴火烧水(这里的同时指的是单核CPU中按时间片轮流执行的效果,下同)。但是有些资源不能同时被使用,比如鸡不能在被A杀的同时被D煮,这时候就可以给鸡加一个简单标记(互斥锁),表示已锁定,在解锁前不能被其他人用。还有些资源能同一时间被n个人用,比如厨房里有网络,厨师们杀鸡过程中想打游戏,但是带宽有限,只能容纳3个人上网,这时候就可以给网络加个数字标记(信号量),要是已经有3个人在上网了,后面的人看到标记就知道要等前面的人先把游戏打完自己才能上网。
多个进程做菜(一个进程中一个线程):
新东方大厦厨房很多,但是只有一套做菜的资源,每个资源有自己的状态,比如开水温度、煤气剩余量等。但是新东方大厦想培养很多学员,每个学员都在自己对应的厨房(一对一),所以就安排他们轮流使用资源。比如A学员做十分钟菜,水温为50度,然后要轮到B学员,A学员就先把资源状态记录下来:水,50度,然后马上把资源给B学员,B学员的菜谱需要水温60度,他就先烧到60度,10分钟后,记温度,给A资源;A看了下手册:上次水温50,于是先恢复状态,然后继续做菜。如此循环下去。
多进程(一个进程中多个线程)做菜:
新东方大厦厨房很多,但是只有一套做菜的资源,每个资源有自己的状态,比如开水温度、煤气剩余量等。但是新东方大厦想培养很多团队,每个团队都在自己对应的厨房,所以就安排他们轮流使用资源。比如A团队做十分钟菜,水温为50度,然后要轮到B团队,A团队就先把资源状态记录下来:水,50度,然后马上把资源给B团队,B团队的菜谱需要水温60度,他们就先烧到60度,10分钟后,记温度,给A资源;A看了下手册:上次水温50,于是先恢复状态,然后继续做菜。如此循环下去。
其中团队内部做菜方式为:
他们都在一个厨房里面,每个人负责不同的菜品流程,比如A负责杀鸡,B负责烧水,C负责拔毛,D负责煮鸡。因为他们都在厨房里,所以是可以共享资源的。所以A杀鸡的同时B也可以利用厨房的柴火烧水(这里的同时指的是单核CPU中按时间片轮流执行的效果,下同)。但是有些资源不能同时被使用,比如鸡不能在被A杀的同时被D煮,这时候就可以给鸡加一个简单标记(互斥锁),表示已锁定,在解锁前不能被其他人用。还有些资源能同一时间被n个人用,比如厨房里有网络,厨师们杀鸡过程中想打游戏,但是带宽有限,只能容纳3个人上网,这时候就可以给网络加个数字标记(信号量),要是已经有3个人在上网了,后面的人看到标记就知道要等前面的人先把游戏打完自己才能上网。