Linux:面试题

发布于:2025-05-21 ⋅ 阅读:(22) ⋅ 点赞:(0)

1. 什么是中断和异常?

中断:由外部设备(如键盘、网卡)触发的异步事件,用于通知 CPU 有紧急事件需要处理。
异常:由 CPU 内部执行指令时产生的同步事件(如除零错误、缺页异常),需要操作系统介入处理。

2. 用户态和核心态

用户态:进程运行在受限环境,只能访问自己的内存空间和受限系统调用。
核心态:操作系统内核运行的特权模式,可访问所有硬件资源和内存空间。

3. 并行和并发

并行:多个任务在多核 CPU 上同时执行。
并发:多个任务在单核 CPU 上通过时间片轮转交替执行,宏观上看似同时运行。

4. 内部碎片和外部碎片

内部碎片:分配的内存块大于实际所需,导致部分空间浪费(如固定分区分配)。
外部碎片:内存中存在多个小空闲块,但无法合并为大连续空间(如动态分区分配)。

5. 僵尸进程和孤儿进程

僵尸进程:子进程结束后,父进程未回收其状态信息(PID、退出码等),导致进程控制块残留。
孤儿进程:父进程提前退出,子进程被 init 进程(PID=1)收养。

6. 信号和信号量

信号:用于进程间异步通知的机制(如SIGTERM、SIGKILL)。
信号量:用于进程 / 线程同步的计数器,通过 P/V 操作控制临界资源的访问。

7. 常用 Linux 命令

文件操作:ls、cd、mkdir、rm、cp、mv
文本处理:grep、sed、awk
进程管理:ps、top、kill、pkill
网络:ping、ifconfig/ip、netstat/ss
权限:chmod、chown

8. 查看和杀死进程

查看进程:ps aux(详细列表)、top/htop(实时监控)、pgrep <进程名>(获取 PID)。
杀死进程:kill (默认发送 SIGTERM)、kill -9 (强制终止)、pkill <进程名>。

9. 局部性原理

程序在执行时倾向于访问近期使用过的内存区域(时间局部性)和相邻内存位置(空间局部性),是缓存设计的基础。

10. 进程 vs 线程

在这里插入图片描述

11. 进程的状态

运行态:正在 CPU 上执行。
就绪态:等待 CPU 调度。
阻塞态:等待外部事件(如 IO)。
创建态:进程正在被创建。
终止态:进程正在退出。

12. 进程间通信(IPC)方式

管道:半双工通信(如|)。
消息队列:基于消息的存储 - 转发机制。
共享内存:最快的方式,直接访问同一块物理内存。
信号量:同步机制,控制对共享资源的访问。
套接字(Socket):跨主机通信。

13. 线程同步方式

互斥锁:同一时间只允许一个线程访问临界区。
读写锁:允许多个线程同时读,写时互斥。
条件变量:线程等待特定条件满足。
信号量:允许多个线程并发访问有限资源。

14. 常见锁

互斥锁(Mutex):二进制锁,用于互斥访问。
自旋锁(Spinlock):不睡眠,循环等待锁释放(适用于短时间持有)。
读写锁(ReadWriteLock):读共享、写互斥。
递归锁(Reentrant Lock):允许同一线程多次加锁。

15. 死锁的条件与解除

死锁条件:互斥、占有并等待、不可抢占、循环等待。
解除方法:
预防:破坏死锁的四个条件之一(如资源一次性分配)。
避免:银行家算法动态检测安全性。
检测与恢复:定期检测并强制释放资源。

16. 进程调度算法

先来先服务(FCFS):按到达顺序调度。
短作业优先(SJF):优先调度执行时间最短的进程。
时间片轮转(RR):每个进程分配固定时间片。
多级反馈队列:动态调整优先级,平衡长短期作业。

17. 分段 vs 分页

在这里插入图片描述

18. 页面置换算法

FIFO:淘汰最早进入内存的页面。
LRU:淘汰最久未使用的页面(需维护访问顺序)。
OPT:淘汰未来最长时间不会使用的页面(理论最优)。
Clock:近似 LRU,用访问位(Reference Bit)实现。

19. IO 多路复用

通过一个线程监视多个 IO 事件(如 socket 连接),当有事件就绪时通知应用程序处理。
常见实现:select、poll、epoll(Linux)、kqueue(BSD/macOS)。


网站公告

今日签到

点亮在社区的每一天
去签到