第一章 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. Hive三种安装模式

  2. c3算法详解

    c3 算法求某一类在多继承中的继承顺序:类的mro == [类] + [父类的继承顺序] + [父类2的继承顺序]如果从左到右的第一个类在后面的顺序中出现,那么就提取出来到mro顺序中[ABCD] + ...

  3. spring学习总结(一)_Ioc基础(上)

    最近经历了许许多多的事情,学习荒废了很久.自己的目标成了摆设.现在要奋起直追了.最近发现了张果的博客.应该是一个教师.看了他写的spring系列的博客,写的不错.于是本文的内容参考自他的博客,当然都是 ...

  4. Java之JSON操作(Jackson)

    Java to JSON: package json.jackson; import bean.User; import com.fasterxml.jackson.databind.ObjectMa ...

  5. 读取excel思路

    1.输入地址 2.输入指定的sheet  通过sheet()[]方式指定 3.输入执行的单元位置 通过 .cell_value(x,y)方式指定 示例 data = xlrd.open_workboo ...

  6. [资源]--完美解决--用VS中的Git做代码管理器,与他人共享代码

    1.创建代码仓库,这里说一下为什么要创建仓库,Git不能够作为源代码管理器,vs中自带的也只能够在本地进行管理,要和他们共享的话必须要有服务器端去存储代码,类似于SVN,它就有客户端和服务器端,这里推 ...

  7. BZOJ3669[Noi2014]魔法森林——kruskal+LCT

    题目描述 为了得到书法大家的真传,小E同学下定决心去拜访住在魔法森林中的隐士.魔法森林可以被看成一个包含个N节点M条边的无向图,节点标号为1..N,边标号为1..M.初始时小E同学在号节点1,隐士则住 ...

  8. 【Linux】Centos7 解压zip文件

    如果输入unzip无反应那么请安装相应软件包 yum install -y unzip 语法 unzip [参数] [文件] 参数 -c:将解压缩的结果显示到屏幕上,并对字符做适当的转换: -f:更新 ...

  9. 【Luogu4931】情侣?给我烧了! 加强版(组合计数)

    [Luogu4931]情侣?给我烧了! 加强版(组合计数) 题面 洛谷 题解 戳这里 忽然发现我自己推的方法是做这题的,也许后面写的那个才是做原题的QwQ. #include<iostream& ...

  10. 洛谷 P2679 子串 解题报告

    P2679 子串 题目描述 有两个仅包含小写英文字母的字符串\(A\)和\(B\). 现在要从字符串\(A\)中取出\(k\)个互不重叠的非空子串,然后把这\(k\)个子串按照其在字符串\(A\)中出 ...