1,UNIX体系结构
我们通常将操作系统称为内核,如图所示,内核的接口称为系统调用,公用函数库构建在系统调用接口之上,应用程序就可以使用公用函数库,也可以使用系统调用。shell是一个特殊的应用程序,为运行其他应用程序提供可一个接口。例如,Linux是GNU操作系统使用的内核。
2,文件和目录
包括我们经常听到的名词:文件系统、文件名、路径名、工作目录、其实目录等,这里点一下即可。
3,输入和输出
3.1 文件描述符
通常是一个小的非负整数,内核用来标识一个特定进程正在访问的文件。当内核打开一个现有文件或者创建一个新文件时,都会返回一个文件描述符。读写文件是可以使用这个文件描述符。
3.2 标准输入、标准输出和标准错误
每当运行一个新程序时,所有的shell都为其打开3个文件描述符,即标准输入、标准输出和标准错误。
3.3 不带缓冲的I/O
函数open、read、wirte、lseek以及close提供了不带缓冲的I/O,这些函数都是用文件描述符。
3.4 标准I/O
标准I/O函数为那些不带缓冲的I/O函数提供了一个带缓冲的接口。使用标准I/O函数无需担心如何选取最佳的缓冲区大小,还简化了对输入行的处理,如fgets读取一个完整的行,而read读取指定字节数。
4,程序和进程
4.1 程序
程序是一个存储在磁盘上某个目录中的可执行文件。内核使用exec函数将程序读入内存,并执行程序。
4.2 进程和进程ID
程序的执行实例被称为进程,UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID,一个非负整数。
4.3 进程控制
进程控制函数:fork、exec、waitpid。