标题进程、线程的生动描述
进程(process)和线程(thread)在操作系统中是非常重要的概念,一定要分清并理解。它们也是面试官必不可少的一问。
CPU是计算机的心脏,每一刻都在运行。如果把CPU比作工厂,进程比作工厂内的车间,线程比作车间内的工人。假定工厂的电力有限,每次只能给一个车间供电,当一个车间正在工作的时候其他车间处于等候状态。这个就是进程。车间里面有多个工人,车间内的空间是共享的,每个工人可以在同一个车间(进程)内出入不同的房间(内存块)。这象征着每个线程可以共享进程中的内存空间。但内存的大小不同,当内存满的时候,其他线程就不能进入。等这个线程释放内存后,其他线程再进入内存中访问。还有些房间,可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出来的人只能在外面等着。这好比某些内存区域,只能供给固定数目的线程使用。这时的解决方法,就是在门口挂n把钥匙。进去的人就取一把钥匙,出来时再把钥匙挂回原处。后到的人发现钥匙架空了,就知道必须在门口排队等着了。
这种做法叫做"信号量"(Semaphore),用来保证多个线程不会互相冲突。