进程(process)和线程(thread)不仅是操作系统中的两个基本概念|mutex和线程的区别( 二 )


进程(process)和线程(thread)不仅是操作系统中的两个基本概念|mutex和线程的区别
文章图片
还有些房间 , 可以同时容纳n个人 , 比如厨房 。 也就是说 , 如果人数大于n , 多出来的人只能在外面等着 。 这好比某些内存区域 , 只能供给固定数目的线程使用 。
进程(process)和线程(thread)不仅是操作系统中的两个基本概念|mutex和线程的区别
文章图片
这时的解决方法 , 就是在门口挂n把钥匙 。 进去的人就取一把钥匙 , 出来时再把钥匙挂回原处 。 后到的人发现钥匙架空了 , 就知道必须在门口排队等着了 。 这种做法叫做"信号量"(Semaphore) , 用来保证多个线程不会互相冲突 。
不难看出 , mutex是semaphore的一种特殊情况(n=1时) 。 也就是说 , 完全可以用后者替代前者 。 但是 , 因为mutex较为简单 , 且效率高 , 所以在必须保证资源独占的情况下 , 还是采用这种设计 。
进程(process)和线程(thread)不仅是操作系统中的两个基本概念|mutex和线程的区别
文章图片
操作系统的设计 , 因此可以归结为三点:以多进程形式 , 允许多个任务同时运行;以多线程形式 , 允许单个任务分成不同的部分运行;提供协调机制 , 一方面防止进程之间和线程之间产生冲突 , 另一方面允许进程之间和线程之间共享资源 。
怎么样 , 进程和线程的概念就彻底搞懂了吧?再遇到面试官问这个问题 , 就直接吊打他吧 。