本文内容大部分摘自《UNIX环境高级编程》,附有部分个人心得。
1、unix体系结构
从严格意义上来说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。
我们通常将这种软件称为内核(kernel),因为它相对较小,而且位于环境核心。如图显示unix体系结构。
内核接口被称为系统调用(system call)。公用函数库构建在系统调用接口之上,应用程序既可食用公用函数库,也可以使用系统调用。
shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。
从广义上来讲,操作系统包括内核和其他软件。
2、登陆
用户在登陆unix系统时,要先键入登录名,然后键入登录口令。系统在其口令文件(通常是/etc/passwd文件)中查看登录名。
口令文件中的登陆项是由七个以冒号为分隔的字段组成,依次是:登录名、加密口令、数字用户ID、数字组ID、注释字段、起始目录以及shell程序(我理解为系统调用的权限)
root:*:0:0:System Administrator:/var/root:/bin/sh
名 :密:户:组: 注 : 目 : shell
巧计:明迷糊租住木鞋
3、文件和目录
3.1 文件系统
unix文件系统是目录和文件的一种层次结构(树形结构),所有东西的起点是根(root)目录,根目录的名称是“/”。
3.2 文件名
目录中的各个名字称为文件名(filename)。只有斜线(/)和空字符不能出现在文件名中。斜线用来分割路径,空格用来终止一个路径名。
3.3 路径名
由斜线分隔的一个或多个文件名组成的序列(可以以斜线开头)构成路径名(pathname),以斜线为开头的路径名为绝对路径(absolute pathname),否则称为相对路径名(relative pathname)。
4、程序与进程
4.1、程序:
程序(program)是储存在磁盘上某个目录中可执行的文件。内核使用exec还书将程序读入内存,并执行程序。
4.2、进程和进程ID
程序执行实例被称为进程(process)。unix系统确保每个进程都有一个唯一的数字标识符,成为进程ID(process ID),进程ID总是一个非负整数。
4.2.1、进程控制
有三个用于控制进程的主要函数:fork、exec、waitpid。
4.3、线程和线程ID
线程(thread):资源执行的基本单位
线程ID:唯一地标识了一个进程中的线程,它只在所属进程中有效,一个进程的线程ID到了另一个进程中毫无意义。
注:线程可以共享同一地址空间、文件描述符、栈、进程相关的属性。