第一章 UNIX基础知识

1.2 UNIX体系结构
 
从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们将这种软件称为内核(kernel),因为
它相对较小,且位于环境的核心。内核的接口被称为系统调用(system call)。公共函数库构建在系统调用接口之上,应用程序既可以使用公共函数库,也可以使用系统调用。shell是一个特殊的应用程序,为运行其他应用程序提供了一个接口。
 
1.5 输入和输出
1.文件描述符
文件描述符(file description) 通常是一个小的非负整数,内核用以标识一个特定进程正在访问的文件。
当内核打开一个现有文件或新建一个文件时,它都返回一个文件描述符。在读、写文件时,可以用这个文件描述符。
2.标准输入、标准输出和标准错误
按惯例,每当运行一个新程序的时候,所有的shell都为其打开了3个文件描述符,标准输入、标准输出和标准错误。
3.不带缓冲的I/O
函数open、read 、write、lseek、close提供了不带缓冲的I/O。这些函数使用文件描述符。
4 标准I/O
标准I/O为不带缓冲的I/O函数提供了一个带缓冲的接口。使用标准I/O函数无需担心如何选取最佳的缓冲区大小。
 
1.6 程序和进程
1.程序
程序(program)是一个存储在磁盘上某个目录的可执行文件。内核使用exec函数,将程序读入内存,并执行。
2.进程和进程ID
程序的执行实例被称为进程(process)。某些操作系统用任务(task)表示正在执行的程序。
UNIX系统确保每一个进程均有唯一的一个数字描述符,称为进程ID。进程ID总是一个非负整数。
3.进程控制
3个用于进程控制的函主要函数:fork、exec、waitpid.
4.线程和线程ID
通常,一个进程只有一个控制线程(thread)--某一时刻执行的一组机器指令。            
一个进程内的所有线程共享同一地址空间、文件描述符、栈以及与进程相关的属性。因为他们能访问同一存储区,
所以各线程在访问共享数据时需要采取同步措施以避免不一致性。
 
1.7出错处理
UNIX系统函数出错时,通常会返回后一个负值,而且整型变量errno通常被设置为具有特定信息的值。   
 
两个函数:
1.
#include <string.h>
/* 根据输入的错误码,返回对应字符串信息*/
char *strerror(int errnum);
2.
#include <stdio.h>
/* 输出入参,一个冒号 一个空格 然后是error对应的错误信息字符串*/
void perror(const char *msg);
 
1.9 信号
信号(signal)用于通知进程发送了某种情况。
进程有以下三种处理信号的方式。
  • 忽略信号。
  • 按照系统默认方式处理。
  • 提供一个函数,信号发生是调用该函数,称为捕捉该信号。
 
1.10 时间值
UNIX系统使用过两种时间值。
1.日历时间。从1970年1月1日00:00:00 以来经历的秒数积累值。
2.进程时间。也称为CPU时间,用以度量进程使用的中央处理器资源。进程时间以时间滴答计算。
 
当度量一个进程的执行时间时,UNIX系统为进程维护了三个时间
  • 时钟时间:进程运行的时间总量,与系统中同时运行的进程数有关。
  • 用户CPU时间:执行用户指令所用的时间。
  • 系统CPU时间:为该进程执行内存程序所经历的的时间。

UNIX环境高级编程--第一章 UNIX基础知识的更多相关文章

  1. 《UNIX环境高级编程》笔记--UNIX标准化及实现

    1.UNIX标准化 1.1.ISO C 1989 年后期,C程序设计语言的ANSI(American National Standards Institute) 标准X3. 15 9-1989得到批准 ...

  2. 【转】apue《UNIX环境高级编程第三版》第一章答案详解

    原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...

  3. unix环境高级编程基础知识之第二篇(3)

    看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl:这里主要是c函数,比较容易,看多了就熟悉了.对fcntl函数讲解比较到位 ...

  4. Unix环境高级编程——守护进程记录总结(从基础到实现)

    一.概念及其特征 守护进程是系统中生存期较长的一种进程,常常在系统引导装入时启动,在系统关闭时终止,没有控制终端,在后台运行.守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程 ...

  5. (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  6. Unix环境高级编程:文件 IO 原子性 与 状态 共享

    参考 UnixUnix环境高级编程 第三章 文件IO 偏移共享 单进程单文件描述符 在只有一个进程时,打开一个文件,对该文件描述符进行写入操作后,后续的写入操作会在原来偏移的基础上进行,这样就可以实现 ...

  7. Unix 环境高级编程

    UNIX 环境高级编程 本书描述了UNIX系统的程序设计接口--系统调用接口和标准C库提供的很多函数. 与大多数操作系统一样,Unix为程序员运行提供了大量的服务--打开文件,读文件,启动一个新程序, ...

  8. 《UNIX环境高级编程》(APUE) 笔记系列

    本系列笔记主要是对于 <UNIX环境高级编程>(APUE) 各章节内容 概念性的总结 ,不涉及代码解读 . 目录 : 第一章 UNIX基础知识 第二章 UNIX标准及实现 第三章 文件I/ ...

  9. (十三) [终篇] 一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

随机推荐

  1. pandas合并/连接

    Pandas具有功能全面的高性能内存中连接操作,与SQL等关系数据库非常相似.Pandas提供了一个单独的merge()函数,作为DataFrame对象之间所有标准数据库连接操作的入口 - pd.me ...

  2. 线性代数的本质与几何意义 02. 线性组合、张成的空间、基(3blue1brown 咪博士 图文注解版)

    1. 线性组合 接下来我们要换一个角度来看向量.以二维平面直角坐标系为例,i, j 分别是沿 2 个坐标轴方向的单位向量.那么坐标平面上的其他向量,例如 [ 3  -2 ] [3−与 i, j 是什么 ...

  3. DevexpressVCL v51

    Dev经典套件v49版 支持Delphi2010 DevExpress公司出品的Borland Delphi和C++ Builder的控件(包含完整源代码).ExpressVerticalGrid:就 ...

  4. atan和unwrap解卷绕

    要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一.二象限中的角度为0-pi,三四象限的角度为0--pi. 若一个角度从0变到2pi,但实际得到的结果是0-pi,再由-pi-0, ...

  5. Windows 下vim的配置文件_vimrc

    set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...

  6. 【题解】Hanoi双塔问题

    题目描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形).现要将这些圆盘移到C柱上, ...

  7. Java中的split函数拆分后变成null的问题

    对于一些特殊的情况,split拆分后并没有保留全的元素 如下例子: String x ="a,,,,,,"; String []y = x.split(",") ...

  8. day30 hashlib模块

    hashlib 提供摘要算法 最常见的就是MD5,当然一般来说MD5已经被足够了 不管算法多不一样,但是摘要的功能是不变的 对于相同的字符串进行摘要,使用同一个算法得到的值总是不变的 不同算法的话,会 ...

  9. MT【18】幂平均不等式的证明

    评:证明时对求导要求较高,利用这个观点,对平时熟悉的调和平均,几何平均,算术平均,平方平均有了更深 刻的认识.

  10. 自学Zabbix12.5 Zabbix命令-zabbix_proxy

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 自学Zabbix12.5 Zabbix命令-zabbix_proxy 1. zabbix prox ...