第一章: UNIX基础知识:
UNIX的体系结构:
最外层: 应用程序
次外层: 外壳(shell)-库函数(Lib)
shell是一个命令行解释器
库函数是封装好了的系统调用集合
内层: 系统调用(SysCall)
内核(Kernel)
注:
应用程序如何使用系统调用可以自主选择, 有三种方式
直接调用
调用库函数
通过操作系统的外壳程序
用户的登录:
口令文件
内容: (用户名,加密口令,UID,``GID`,注释,家目录,使用的shell程序路径)
shell
分类
文件和目录
文件系统
起点是根 (root)/
是树状的
文件名
命名规则:
不可以出现/和null
最大长度255
创建新目录会自动产生:
.表示当前目录
..表示上一级目录
路径名字:
用斜线分割各级目录
分类:
相对路径
绝对路径
工作目录
起始目录
输入和输出
文件描述符:
是个非负整数
用于描述文件的访问状态(在被谁访问)
stdio和stderr描述符:
默认指向终端
无需缓冲的I/O
stdio
程序和进程
程序
使用exec()读入内存
进程和PID
PID是系统识别进程的标识符
是个非负整数
进程控制
函数fork(), exec(), waitpid()
线程和TID
线程
依赖于进程的存在
各个线程共享数据,可互相通信
出错处理
出错返回负数
出错编号用来判断错误类型,有的程序额外定义了错误号
用户标识
每个用户存在唯一标识符:UID
超级用户UID为0
每个用户组存在唯一标识符:GID
信号
是系统发送给进程的消息
处理方法:
忽略
系统默认的终止
捕捉该信号, 转入事先设置好的相应的处理程序
产生:
Del和Ctrl+C和Ctrl+\
调用kill()
使用条件:是所有者/root
时间值
分类:
日历时间:
自1970-1-1以来的UTC时间
用于记录文件的修改时间
进程时间:
单位:tick
用于计量程序运行的
度量方式:
时钟时间
用户CPU时间
系统CPU时间
系统调用和库函数
是os提供服务的入口