操作系统常见面试题(第三弹)

Posted 小谢backup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统常见面试题(第三弹)相关的知识,希望对你有一定的参考价值。

欢迎关注我的技术公众号:小谢backup

1、进程什么时候会有调度?

进程创建、退出、阻塞、IO中断

 

2、进程间的通信能解决什么问题?

哲学家就餐问题
睡眠理发师问题
生产者-消费者问题
读者-写者问题

 

3、文件系统的实现方式?

连续分配
链表分配
采用内存中的表进行链表分配(磁盘地址表)
i节点

 

4、i节点包含什么内容?

文件属性、文件的磁盘块地址

 

5、文件类型有哪两种?

特殊文件和普通文件。其中,特殊文件又分为字符特殊文件和块特殊文件,普通文件分为ASCII文件和二进制文件。

 

6、Unix有哪五种IO模型?

  1. 阻塞IO
  2. 非阻塞IO
  3. IO多路复用
  4. 信号驱动
  5. 异步IO

提示1:前面4种IO都可以归类为同步IO(synchronous IO)
提示2:IO多路复用包括select、poll、epoll

 

7、如何理解阻塞、非阻塞、同步、异步?

总的来说:

阻塞/非阻塞是看用户线程在系统调用下的处理方式。比如读取IO数据时,要发起系统调用切换到内核态,如果此时用户线程挂起,就是阻塞IO,如果立即返回,那就是非阻塞IO。 主要是看这种情况下用户线程的处理方式。

同步/异步是看数据准备的结果。同步的话,如果返回,那必定是准备好了数据,如果是异步的话,返回不一定数据准备好,要等待一个事件回调来处理。

 

8、简单介绍阻塞IO的流程?

1. 用户进程需要进行IO操作时,会进行一次系统调用,进入到内核态,此时用户进程被挂起。处于阻塞状态。此时进程不会再占用cpu资源。

2. 内核进行数据的准备,把需要的数据填充到内核缓冲区。

3. 内核缓冲区数据填充完毕,把数据从内核缓冲区复制到用户缓冲区。

4. 数据复制完毕,返回,从内核态从新切换到用户态,进程进入就绪状态等待cpu执行。

 

 

提示:适用并发量小的网络应用开发

 

9、简单介绍非阻塞IO的流程?

1. 用户进程需要进行IO操作时,会进行一次系统调用,进入到内核态,如果数据没有准备好,立即返回EWOULDBLOCK。此时不会造成进程阻塞。进程还可以继续处理其他事情。

2. 进程会轮询查看内核数据是否准备好,如果没有准备好,就继续立即返回EWOULDBLOCK,不阻塞进程。

3. 轮询到数据准备好了后,进行数据复制,从内核缓冲区复制到用户缓冲区。在此期间进程会挂起,处于阻塞状态,知道数据复制完成。

4. 数据复制完毕后返回,进程转为就绪态,等待cpu调度。

 

提示1:非阻塞IO因为要用轮询代替了阻塞,使得进程在内核数据准备期间不会阻塞,可以执行其他事情,但是因为要轮询,所以会对CPU资源造成较大的消耗。
提示2:在进行内核态往用户态数据复制过程中,进程还是会处于阻塞状态的。
提示3:虽然非阻塞IO可以使得进程在IO内核数据准备期间不阻塞,可以执行其他事情,但是,由于轮询需要消耗较大的cpu资源,所以会使得服务端处理和响应请求会有较大的延时。
提示4:适用并发量较小、且不需要及时响应的网络应用开发。

 

10、select、poll、epoll的区别?

  • 操作方式上:select 和 poll 为遍历,epoll 为回调
  • 底层实现上 :select 为数组,poll 为链表,epoll 为红黑树
  • IO效率上:select 和 poll 都为 O(n),epoll 为 O(1)
  • 最大连接数上:select 为 1024 或 2048,poll 无上限,epoll 无上限
  • fd拷贝上:select 和 poll 每次调用都需要把 fd 集合从用户态拷贝到内核态;而调用 epoll_ctl 时拷贝进内核并保存,之后每次 epoll_wait 不拷贝

以上是关于操作系统常见面试题(第三弹)的主要内容,如果未能解决你的问题,请参考以下文章

计算机网络常见面试题(第三弹)

react常见面试题

面试题操作系统常见面试题合集

面试题操作系统常见面试题合集

Node.js常见面试题

面试题Java基础篇-常见面试题总结p3