面试复习(Linux)

查看进程占用系统资源情况

  • top
  • ps

终端

  • session
    • 一个终端窗口对应一个会话(session)
    • 一个会话包含多个进程组
    • 一个会话只有一个前台进程组,可以有多个后台进程组
    • 所有在终端内的输入都会发送给前台进程组
    • 当会话关闭时,所有会话内的进程将会被终止

fork

  • 进程的 fork 过程
    • 给新进程分配一个标识符
    • 在内核中分配一个PCB
    • 复制它的父进程的环境(PCB中大部分的内容)
    • 为其分配资源(程序、数据、栈等)
    • 复制父进程地址空间里的内容(代码共享,数据写时拷贝)
    • 将进程置成就绪状态,并将其放入就绪队列,等待CPU调度

守护进程

  • 什么是守护进程
    • 在后台运行的一种特殊的进程
    • 一般在系统启动时开始运行,系统关机后结束运行
    • 常常以 root 权限启动
    • 不需要输入,独立与终端
    • 名称常常以 d 结尾
  • 创建守护进程的过程
    • 在父进程中执行 forkexit 退出
    • 在子进程中调用 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/
作者
Shiroha
发布于
2021年2月23日
许可协议