第一章 - UNIX 基础知识

UNIX 体系结构

  1. 操作系统内核:控制计算机硬件资源,提供程序运行环境
  2. 系统调用(syscall):内核的接口
  3. shell 命令解释器,读取用户输入,然后执行命令
  4. 文件和目录
    1. 目录:包含目录项的文件,具有名称
      1. opendir, readdir, closedir
    2. 路径名:斜线分隔的一个多罗哥文件名构成的序列
    3. 文件描述符:内核用以标记一个特定进程正在访问的文件,是一个非负整数
  5. 程序和进程
    1. 程序:一个存储在磁盘上某个目录中的可执行文件
    2. 进程:程序的执行实例
      1. fork:创建子进程,一次调用两次返回(父进程返回子进程的 pid,子进程返回 0)
      2. exec:用新的程序,替换原来的程序,改变进程的行为
      3. waitpid:等待进程终止
  6. 错误处理
    1. errno:负整数,带有特殊含义
      1. 多线程环境下,每个线程有自己的local errno
      2. 规则
        1. 如果没有出错,值不会被例程清除
        2. 任何函数都不会将 errno 值设置为 0
      3. 函数
        1. strerror 将 errno 映射成错误信息字符串
        2. perror 基于 errno 当前值,在标准错误上产生一条出错信息,然后返回,通常传当前程序名
  7. 信号:通常用于通知进程发生了某种情况,进程中 3 中处理方式
    1. 忽略信息
    2. 按系统默认方式处理
    3. 捕捉信号:提供一个回调函数,收到信号时执行改回调,在回调里处理
  8. 时间
    1. 日历时间:当前之间距离 1970 1 1 00:00:00 UTC 的秒数累计值
    2. 进程时间:CPU 时间,按时钟 tick 计算
      1. 时钟时间:进程运行的时间总量,又称 wall clock time
      2. 用户 CPU 时间:执行用户指令所用的时间
      3. 系统 CPU 时间:执行内核程序所用时间
  9. 库函数与系统调用
    1. 库函数通常可以替换,而系统调用无法替换
    2. 系统调用通常只提供一种最小接口,而库函数通常提供比较复杂的功能