第一章 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. .NET中的许可证机制--License

    .NET中的许可证机制主要类:System.ComponentModel.License(为所有许可证提供 abstract 基类.向组件的特定实例授予许可证)     System.Componen ...

  2. 认真学习Linux系统让你真的有收获

    学习,最重要的是有一个认真的态度,熟话说,读书可以改变命运,以前觉得并不一定是这样,其实经历的多了才知道,事实确实如此.试想一个不会写字看书的人,他的生活该有多么无聊.读书容易,但读好书并不总是件容易 ...

  3. hdu5521(Meeting)spfa 层次网络最短路

    题意:给出几个集合,每个集合中有Si个点 且任意两个点的距离为ti,现在要求两个人分别从1和n出发,问最短多长时间才能遇到,且给出这些可能的相遇点; 取两个人到达某点时所用时间大的值 然后取最小的   ...

  4. day27 封装

    广义上的面向对象的封装: 代码的保护,面向对象思想本身就是一种封装 只让自己的对象调用自己类的方法 狭义的封装: 面向对象的三大特性之一,其他两个是继承和多态. 属性和方法都可以藏起来不让你看到 cl ...

  5. [luogu2590][bzoj1036][ZJOI2008]树的统计

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u ...

  6. TRIE 字典树 前缀紧急集合!

    TRIE: 在计算机科学中,Trie,又称前缀树或字典树,是一种有序树状的数据结构,用于保存关联数组,其中的键通常是字符串.——百度百科 自我理解: trie树,是一种处理字符串前缀的数据结构,通常会 ...

  7. luogu P4198 楼房重建——线段树

    题目大意: 小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度.如果这栋楼房上任何一个高度大于0的点与(0,0)的连线没有与之前的线 ...

  8. javascript调用Flash里对象的方法(函数)搞了五个小时。

    搞了几个小时后,才发现,之前走的路是错的. 今天在Firefox浏览器上测试一个javascript调用Flash中的一个对象的方法时遇到问题了, 一搞就整整搞了一个下午. 我记得之前我用Flash8 ...

  9. PHP去调用jenkins

    背景说明:目前公司用到 jenkins(持续集成开源工具)更多情况下,通过配置,可以在gitlab上通过webhooks去调度jenkins 或者通过 jenkins管理后台,去手动执行“立即构建”去 ...

  10. js中if()条件中变量为false的情况

    <html> <head> <script type="text/javascript" src="jquery-3.1.1.min.js& ...