您的位置:首页 > 其它

第一章 UNIX基础知识

2015-03-29 18:22 183 查看
1.操作系统控制计算机硬件资源,提供程序运行环境,可以定义为一种软件。我们称此种软件为内核(kernel),它相对较小,位于环境的中心。内核的接口被称为系统调用。

2.用户的登录口令文件通常为/etc/passad。

3.UNIX文件系统是目录和文件组成的一种层次结构,目录的起点称为根(root),其名字是一个字符/。目录(directory)是一个包含许多目录项的文件。

4.目录中的各个名字称为文件名(filename)。不能出现在文件名中的字符只有斜线(/)和空操作符(NULL)两个。斜线用来分隔构成路径名的各个文件名,空操作符则用来终止一个路径名。

5.创建新目录时会自动创建两个目录:.和..。.指当前目录,..指父目录。根目录中,两者相同。

6.一个或多个以斜线分隔的文件名序列(也可以以斜线开头)构成路径名(pathname),以斜线开头的路径名称称为绝对路径名(absolute pathname),否则称为相对路径名(relative pathname)。相对路径名引用相对于当前目录的文件。文件系统根的名字(/)是一个特殊的绝对路径名,它不包含文件名。

7.exit 0表示终止程序,参数0是正常结束,1~255则表示出错。

8.每个进程都有一个工作目录(working directory),有时称其为当前工作目录(current working directory)。

9.文件描述服(file descriptor)通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。按惯例,每当运行一个新程序,所有的shell都会为其打开三个文件描述符:标准输入(standard input),标准输出(standard output)以及标准出错(standard error)。如果没错特殊处理,则都链向终端。

10程序(program):是存放在磁盘上,处于某个目录中的一个可执行文件。

11.程序的执行实例被称为进程(process)。UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID。进程ID总是一非负整数。

12.通常,一个进程只有一个控制线程(thread),同一时刻只执行一组机器指令。在一个进程内,所有线程共享同一地址空间,文件描述符,栈以及与进程相关的属性。因为它们能访问同一存储区,所以各线程在访问访问共享数据时需要采取同步措施以避免不一致。线程也有ID,但是只在所属的进程内起作用。

13.当UNIX函数出错时,常常返回一个负值,而且整型变量errno通常被设置为含有附加信息俄一个值。如果是返回一个指向对象指针的大多数函数,在出错时,将返回一个null指针。(errno在头文件<errno.h>中定义)

14.对于errno应当知道两条规则。第一条规则是:如果没有出错,则其值不会被一个例程清零。因此,仅当函数的返回值指明出错时,才检验其真值,第二条是:任一函数都不会将errno值设为0。

15.两个打印出错信息的函数:

#include "apue.h"
#include <errno.h>

int
main(int argc, char *argv[])
{
	fprintf(stderr, "EACCES: %s\n", strerror(EACCES));//*strerror(errnum)返回出错信息字符串的指针。
	errno = ENOENT;
	perror(argv[0]);//首先输出参数指向的字符串,然后是一个冒号,一个空格,接着对应于errno值的出错信息,最后是一个换行符。
	exit(0);
}
结果:



16.可将在<errno.h>中定义的各种出错分为两部分:致命性和非致命性。对于致命性的错误,无法执行其恢复动作;对于非致命性的出错,有时可以妥善的处理,大多只是暂时的。对于资源相关的非致命性出错,一般恢复动作是延迟一些时间,然后再试(联网)。

17.口令文件登录项中的用户ID是个数值,它向系统标识各个不同的用户。用户ID为0的用户为根或超级用户。

18.口令文件登录项也包括用户的组ID,它是一个数值。由系统管理员在指定用户登录名时分配。组文件将组名映射为数字组ID,它通常是/etc/group。一个用户可以属于多个组。

19.信号(signal):通知进程已发生某种情况的一种技术。进程处理型信号的三种选择:忽略信号;按系统默认方式处理;提供一个函数,信号发生时则调用该函数

20.UNIX系统一直使用两种不同的时间值:

1)日历时间:自1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数累计值。可记录文件最近一次修改时间等。数据类型为time_t。

2)进程时间:也被称为CPU时间,用以度量进程使用中央处理器资源。进程时间以时钟滴答计算。数据类型为clock_t。

当度量一个进程的执行时间时,UNIX系统使用三个进程时间值:

a)时钟时间:又被称为墙上时钟时间。是进程运行的时间总量。其值与系统中同时运行的进程数有关。

b)用户CPU时间:执行用户指令所用的时间。

c)系统CPU时间:该进程执行内核程序所经历的时间。

21.各种版本的UNIX实现都提供定义明确,数量有限,可直接进入内核的入口点,这些入口点被称为系统调用。从应用角度考虑,可将系统调用视作C函数。

22.系统调用和库函数都为应用程序提供服务,但是,必要时我们可以替换库函数,而通常不能替换系统调用。

23.两者差别:1 应用程序可以调用系统调用或库函数,而很多库函数则会调用系统调用。2 系统调用通常提供一种最小的接口,而库函数通常提供比较复杂的功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: