当前位置: 首页 > 科技观察

通俗易懂的进程和线程解释

时间:2023-03-21 23:41:08 科技观察

进程和线程是操作系统的基本概念,但是比较抽象,不容易掌握。最近看了一篇资料,发现有一个很好的比喻,可以把它们解释清楚,也很容易。1、计算机的核心是CPU,它承担着所有的计算任务。它就像一个工厂,一直在运转。2、假设工厂的电力有限,一次只能供一个车间使用。也就是说,当一个车间开工时,其他车间必须关闭。其背后的含义是单个CPU一次只能运行一个任务。3.进程就像工厂里的车间,它代表了CPU可以处理的单个任务。任何时候,CPU总是在运行一个进程,其他进程都处于非运行状态。4.一个车间可以有很多工人。他们共同完成一项任务。5、线程就像车间里的工人。一个进程可以包含多个线程。6.车间空间由工人共享,例如每个工人可以使用许多房间。这象征着一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。7.但是每个房间的大小不一样,有的房间最多只能住一个人,比如厕所。里面有人的时候,别人是进不来的。这意味着当一个线程使用了一些共享内存时,其他线程必须等待它结束才能使用这块内存。8、防止他人进入的一个简单方法是在门上加一把锁。先到的把门锁上,后到的看到锁就在门口排队等着开锁才进去。这叫做“互斥”(Mutualexclusion,缩写为Mutex),它可以防止多个线程同时读写某个内存区域。9、还有一些房间可以同时容纳n个人,比如厨房。也就是说,如果人数大于n,多出的人只能在外面等着。这就像某些内存区域只能由固定数量的线程使用。10.这时候的解决办法是在门口挂n把钥匙。进去的人拿一把钥匙,出来的时候把钥匙挂回原处。后来到的人发现钥匙是空的,才知道要在门口排队。这种方式叫做“信号量”(Semaphore),用来保证多个线程不会互相冲突。不难看出互斥量是信号量(n=1)的特例。也就是说,前者可以被后者替代。但是由于mutex比较简单高效,所以在必须保证资源独占性的时候还是采用这种设计。11、操作系统的设计因此可以归结为三点:(1)以多进程的形式,允许多个任务同时运行;(2)以多线程的形式,让单个任务分成不同的部分运行;(3)提供了协调机制,一方面防止进程和线程之间的冲突,另一方面允许进程和线程之间共享资源。