博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Unix System Overview(apue)——Unix系统概念

Posted on 2011-04-09 16:57  天地玄黄  阅读(357)  评论(0编辑  收藏  举报

      本文简要介绍一下在Unix系统中的一些概念,这是Advanced Programming in Unix Enviroment 这本书的第一章的内容

 

Files

1、在Unix中创建一个新directory的时候,会自动创建两个filenames,即.(called dot) and ..(called dot-dot)。

2、每一个file都有一个File Descriptor。File descriptors are normally small non-negative integers that the kernel uses to identify the files being accessed by a particular process.

 

Program & Process

3、A program is an executable file residing on disk in a directory. A program is read into memory and is executed by the kernel as a result of one of the six exec functions.

     An executing instance of a program is called a process.

     The UNIX System guarantees that every process has a unique numeric identifier called the process ID. The process ID is always a non-negative integer.

     对于硬盘上的一个程序(program)来说,当它在运行的时候,就叫做进程(process)。这个程序每次运行Unix都会分配给它一个process ID。

$ ./a.out
hello world from process ID 851
$ ./a.out
hello world from process ID 854

4、There are three primary functions for process control: fork, exec, and waitpid.

 

Signal

5、信号signal)是Unix系统中一个重要的概念。Unix使用信号来告诉系统中的进程(Process)某些情况发生了。做个比喻,一个工人正在往仓库里搬东西,这时候仓库管理员告诉这个工人说仓库里没有地方了,让他歇一会儿。这个工人就是一个进程(Process),这个仓库管理员就是Unix系统,仓库管理员告诉工人时所说的话就是信号(Signal)。

6、如果一个进程接收到某种信号,它可以采取下面几种操作:

     · 忽略这个信号。

     · 进行默认的处理。

     · 我们自己提供一个函数,当一个信号发生时,我们就调用这个函数进行相应的处理。

7、kill 指令可以由一个进程向另外的进程传递信号。

8、Ctrl-C 被称为 interrupt key, 用来中断正在执行的程序。

     Ctrl-backslash (\) 被称为 quit key,用来退出正在执行的程序。

     Ctrl-D 则是EOF的标记,即文件结束的标记,它在新的一行开始,之前没有任何字符。

 

Time Value

9、Unix系统中有两种类型的时间值:

     · Calendar Time:这种时间值用在文件的标记上,表明这个文件是什么时候创建和修改的。它是从1970年1月1日 00:00:00开始算起,一直到现在的时间值,单位是

     · Process Time: 这也叫做CPU时间。它是用来测量一个Process在CPU上运行了多长时间的一个标记。它的单位是clock ticks。通常,在Unix系统中,每一秒会有50、60或者100个clock ticks。

10、对于一个进程在CPU上运行的时间来说,Unix系统用三个量来表示它们:

     · Clock Time:            我们通常也叫它Wall Clock Time,就是说,你看着墙上的表,从这个程序开始运行,一直到这个程序结束,你看看墙上的表一共走了多长时间,就用这个值表示。这通常与当时Unix系统中是否有其他程序在运行有关。

     · User CPU Time:     就是这个程序在CPU运行时,它所执行的用户指令占了多长时间。

     · System CPU Time:  指这个程序在CPU运行时,它所执行的kernel 指令占了多长时间。

 

Unix Manual Pages

11、这个可以通过在Linux终端运行man man 命令查看。会看到MAN(1)显示在右上角。这个数字有特殊含义:

       · 1      Executable programs or shell commands

       · 2      System calls (functions provided by the kernel)

       · 3      Library calls (functions within program libraries)

 

System calls & Labrary functions

12、在 经典的Unix构架图 中,我们可以看到在Unix内核之上有System Calls 和 Labrary routines 两个层次。那么它们之间有什么区别呢?

       · System Calls离内核更近,提供的接口比较有限,在Linux系统上通常是240~260个 System Calls 。

       · Labrary Routines 运行在 System Calls之上,有可能调用一个或多个System Calls,也可能一个也不调用。

       · 我们有时候可以更改Labrary中的函数,但是却无法更改System Calls。

13、常见的 system calls 有:fork, exec, wait, sbrk。

       常见的 labrary routines有: system, popen, malloc