前言
作者:小蜗牛向前冲
名言:我可以接受失败,但我不能接受放弃
如果觉的博主的文章还不错的话,还请
点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正
分享常见的操作系统面试题(持续更新)
1、进程和线程用知道吗?二者有什么区别
答:
-
进程是操作系统分配资源的基本单位:进程拥有独立的内存空间和其他系统资源,如文件句柄、网络连接等。操作系统为每个进程分配资源,并且进程之间的资源是相互独立的。
-
线程是CPU调度的基本单位:线程是进程内的一个执行单元,一个进程可以包含多个线程,线程之间共享进程的地址空间和资源。CPU调度通常是以线程为单位进行的。
-
进程间相互独立,一个进程崩溃不会影响其他的进程;而一个线程崩溃,可能会导致整个进程崩溃:进程的独立性意味着一个进程的异常终止通常不会影响其他进程。但是,由于线程共享同一进程的资源,如果一个线程出错,可能会影响进程内的其他线程,甚至导致整个进程崩溃。
-
进程切换开销非常大,线程切换开销较小:进程切换涉及到上下文切换,包括切换内存空间、CPU寄存器等,因此开销较大。线程之间的切换,由于共享了进程的内存空间,通常只需要切换线程上下文(如寄存器、程序计数器等),因此开销相对较小。
2、进程间是如何进行通信的
答:
- 管道:用于可以在具有亲缘关系的进程间通信,分为匿名管道和命名管道,匿名管道只能在父子进程间使用,而命名管道可以在没有亲缘关系的进程间使用。
- 消息队列:通过消息的方法进行通信,消息可以在进程间异步传递。
- 共享内存:允许多个进程共享一块内存区域,进程间可以读写共享内存从而传递信息。
- 信号:用于通知进程发生了某种事件。
- 信号量:用于进程间同步,控制共享资源的访问,PV操作。
- 套接字:通