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


          本文简要介绍一下在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

  • 相关阅读:
    ios开发中超简单抽屉效果(MMDrawerController)的实现
    mysql的查询、子查询及连接查询
    iOS在线音乐播放SZKAVPlayer(基于AVPlayer的封装)
    iOS js oc相互调用(JavaScriptCore)(二)
    Linux下面如何安装Django
    国内外测绘遥感领域核心期刊
    MFC程序消息处理的顺序
    VC++中关于控件重绘函数/消息 OnPaint,OnDraw,OnDrawItem,DrawItem的区别
    C#中控件Control的Paint事件和OnPaint虚函数的区别
    Lambda表达式学习(2)
  • 原文地址:https://www.cnblogs.com/wangshuo/p/2010610.html
Copyright © 2020-2023  润新知