1 Unix架构
严格意义上,操作系统定义为:
控制计算机硬件资源的软件,同时提供坏境让程序可以运行。
通常,我们称这种软件为内核,因为其相对向小,同时驻留在整个环境的核心。如下图展示了UNIX系统架构的框图
内核的接口是一软件层称之为系统调用(如上图中的阴影部分),通用库函数建立在系统调用接口之上,但应用程序可以自由的使用这两者
Shell是一种特殊的应用程序,它提供接口来运行其他的应用程序。
广义上来说,操作系统是内核和所有其他的软件的集合,其让一个计算机变得有用以及给计算机以个性。其他的软件包括系统工具,应用程序,shells,通用函数库等等。
2. Unix系统登录
当我们登录Unix系统时,我们输入Login Name,接着输入密码,然后系统在密码文件(通常在/etc/passwd)中查询Login Name。
若我们查看密码文件中的入口,我们会发现它是有冒号分开的七个域组成:Login Name,加密的密码,数字用户ID(205),数字组ID(105),注释域,home目录(/home/sar)和shell程序(/bin/ksh),如下:
sar:x:205:105:StephenRago:/home/sar:/bin/ksh
所有现代的系统都已经把加密的密码移到了不同的文件,后续将会讲述这些文件和访问他们的函数。
Shell:是一种命令行解释器,它读取用户输入和执行命令,shell的用户输入通常来自于终端(一种交互的shell)或有时来自于文件(称之为shell脚本),常用的shell总结如下表:
Linux使用Bourne-again Shell作为缺省的shell,实际上,/bin/sh链接到/bin/bash。
3. 文件系统
Unix文件系统是目录和文件的层次组织,任何一个文件或目录都是从根目录(根目录的名字是单个字符/)开始。
目录:是一个包含目录项的文件,逻辑上,我们可以认为各个目录项为包含一个文件名(filename)以及描述文件属性的信息结构。文件的属性像:文件的类型——正常的文件还是目录,文件的大小,文件的所有者,文件的权限——其他用户是否可以访问该文件,以及文件最后一次修改是何时。Stat和fstat函数会返回包含所有文件属性的信息结构。
我们将区分目录项的逻辑视图和它实际存储在磁盘上的方式。大多数Unix文件系统的实现不存储目录项自身的属性,因为当文件有多个硬链接时,很难保持他们同步。
文件名:
目录中的名字称为文件名,只有两个字符不能出现文件名中:斜杠(/)和空字符(null),因为斜杠用来分割文件名以形成路径名,而空字符终止一个路径名,然而,限制组成文件的字符为正常打印的字符的子集是一个好的实践习惯。
当创建一个新的目录时,通常会自动创建两个文件名:.(称为dot)和..(称为dot-dot),.(dot)指向当前的目录,而..(dot-dot)指向的是父目录,在根目录中,dot-dot和dot是一样的。
在当今的几乎所有的商业UNIX文件系统支持至少255个字符的文件名。
路径名:
一个或多个文件名的序列,通过斜杠分开(可选的是从斜杠开始),形成路径名。从斜杠开始的路径名称之为绝对路径名;否则,称之为相对路径名;
相对路径名指向的文件是相对于当前的目录。文件系统的根目录的名字(/)是一特殊的路径名,它没有文件名部分。
http://blog.chinaunix.net/uid-20665047-id-3123350.html
学习自:《Advanced Programming in the Unix Environment 3rd Edition》