【面试准备】操作系统面试题汇总

  1. 问: 进程线程的区别:
    首先,进程是资源分配的最小单位;线程的CPU调度的最小单位。进程是应用程序执行的实例,线程的粒度比进程更小,更轻量,一个进程可以包含多个线程。创建或者撤销进程时,需要分配或者回收资源,所耗费的开销远大于创建或者撤销线程的开销。一个进程的多个线程之间共享同一块地址空间。因此一个进程的多个线程可读取同样的数据结构和变量,通信更加便捷。相比之下,进程间的通信就要消耗更多资源。

  2. 问: 用户态和内核态:
    内核态:cpu可以访问内存的所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。
    用户态:只能受限的访问内存,且不允许访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。

  3. 问: 进程间通信机制:
    (1).管道通信(pipe):半双工方式。通常是父子进程间的单向数据流动。
    (2).有名管道(name-pipe):半双工方式。允许非亲缘关系的进程通信。
    (3)信号量(semaphore):信号量是一个计数器,用来控制多个进程对共享资源的访问。常作为一种锁机制。主要用于进程间和同一进程的线程间的同步手段。
    (4)消息队列(message queue):消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
    (5)信号(singal)一种复杂的通信方式,用于通知接收某个事件已经发生。
    (6)共享内存(share memory):映射一段可以被其他进程共享的内存。共享内存是最快的IPC方式。
    (7)套接字通信(socket):主要用于不同机器间进程通信。

  4. 问: 线程间通信机制:
    (1).锁机制:互斥锁可以避免数据被其他线程修改;读写锁可以多个线程同时读,但是不能写;条件变量一般与互斥锁一起使用,以原子方式阻塞进程,直到满足某个条件。
    (2)包括无名信号量和有名信号量
    (3)信号机制:类似于进程间的信号处理。
    线程间的通信主要用于线程间同步,而非数据传输。

  5. 问: 进程有哪些状态:
    一共有五种状态创建、就绪、运行、阻塞、终止,主要是中间三个,进程的整个生命历程往往在这三个状态间来回切换。需要注意的是:
    1.只有运行态和就绪态之间可以来回切换。就绪态是除了CPU外其他资源都满足了,只要给予CPU资源即可运行。
    2.阻塞态是缺少其他资源,如,需要从硬盘读取数据等。等这些条件满足之后,不能直接进入运行态 ,仍然需要先进入就绪态等待CPU调度。

【面试准备】操作系统面试题汇总_第1张图片

参考资料:

CS-Note
知乎:线程和进程的区别是什么
实习之路-字节跳动后端开发实习生 面经 已口头offer
用户态和内核态

你可能感兴趣的:(笔试,面试)