面试复习(Linux)
查看进程占用系统资源情况
- top
- ps
终端
- session
- 一个终端窗口对应一个会话(session)
- 一个会话包含多个进程组
- 一个会话只有一个前台进程组,可以有多个后台进程组
- 所有在终端内的输入都会发送给前台进程组
- 当会话关闭时,所有会话内的进程将会被终止
fork
- 进程的 fork 过程
- 给新进程分配一个标识符
- 在内核中分配一个PCB
- 复制它的父进程的环境(PCB中大部分的内容)
- 为其分配资源(程序、数据、栈等)
- 复制父进程地址空间里的内容(代码共享,数据写时拷贝)
- 将进程置成就绪状态,并将其放入就绪队列,等待CPU调度
守护进程
- 什么是守护进程
- 在后台运行的一种特殊的进程
- 一般在系统启动时开始运行,系统关机后结束运行
- 常常以 root 权限启动
- 不需要输入,独立与终端
- 名称常常以
d
结尾
- 创建守护进程的过程
- 在父进程中执行
fork
并exit
退出 - 在子进程中调用
setsid
函数创建新的会话 - 在子进程中调用
chdir
函数,让根目录/
成为子进程的工作目录 - 在子进程中调用
umask
函数,设置进程的umask
为 0 - 在子进程中关闭任何不需要的文件描述符
- 在父进程中执行
IO模式
- IO 模式有哪些
- 阻塞 IO:当进行 IO 时,线程阻塞,不再占用 CPU,直到 IO 完成
- 非阻塞 IO:当进行 IO 时,线程不阻塞,而是进行循环判断是否 IO 完成,一直占用 CPU
- IO 多路复用:允许同时进行多个 IO,线程仍然阻塞
- 异步 IO:在 IO 时不会阻塞,也不会关心 IO 状态,而是继续执行代码,直到 IO 完成再回来执行 IO 完成的代码
- IO 多路复用的机制
- select:当有任意一个 IO 完成时,通知程序。缺点在于单个进程只能打开有限的文件,同时其采用轮番查询,效率较低,而且仅通知程序有 IO 完成,并不知道到底哪个文件的 IO 完成了
- poll:与 select 相同,但其提供了无限制的文件打开数量
- epoll:可以自定义打开的文件数量,同时当 IO 完成时会已消息的形式通知程序,包括了到底是哪个 IO 完成了
面试复习(Linux)
https://blog.mauve.icu/2021/02/23/interview/linux/