✍个人博客:https://blog.csdn.net/Newin2020?type=blog
📣专栏地址:https://blog.csdn.net/newin2020/category_12820365.html
📚专栏简介:在这个专栏中,我将会分享操作系统面试中常见的面试题给大家~
❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪
40. 多线程还是多进程的选择及区别
我们按照多个不同的维度,来看看多线程和多进程的对比(注:因为是感性的比较,因此都是相对的,不是说一个好得不得了,另外一个差的无法忍受)。
如果任务间有共享数据的情况,且需要同时执行多个任务,那么使用多线程可能是合适的。如果任务间需要大量交换数据,且需要高吞吐量的场景,那么使用多进程可能是更好的选择。另外,如果系统资源有限,且需要充分利用这些资源来提高性能,那么使用多线程或多进程也是很有意义的。
41. 进程上下文切换和线程上下文切换的流程
进程切换分两步:
- 切换页目录以使用新的地址空间
- 切换内核栈和硬件上下文
对于 linux 来说,线程和进程的最大区别就在于地址空间,对于线程切换,第 1 步是不需要做的,第 2 是进程和线程切换都要做的。
42. 线程运行过程中申请到的东西在切换时是否全部要保存,比如线程中有个循环,或者声明了很多对象,这些是否都要保存,也存在线程私有区吗?
要保存的,因为申请的这些资源属于线程的私有资源。