第一章 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. Angular injector注入器

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  2. 转《canvas实现滤镜效果》

    <code class="language-html"><html> <head> <style type="text/css& ...

  3. 使用 py.test 对 python 代码进行测试

    其实以前我记得有人对我说过,写代码甚至可以先写完测试之后部署好了再开始写逻辑代码.我觉得有点吃惊和奇怪,这不是扯淡吗? 但是这次在完成了积分支付第一阶段开发之后我意识到,这可能并不是开玩笑,特别是项目 ...

  4. 写给正在入坑linux系统的伙伴

    光阴似箭,时光如梭,转年出来工作已经3年了.从一个职场新人慢慢熟悉职场的工作方式,适应职场工作的环境,学习了很多知识,也总结了很多经验.现在的目标就是一步一个脚印,慢慢打磨自己,希望早日成为取代其他人 ...

  5. BZOJ2959长跑——LCT+并查集(LCT动态维护边双连通分量)

    题目描述 某校开展了同学们喜闻乐见的阳光长跑活动.为了能“为祖国健康工作五十年”,同学们纷纷离开寝室,离开教室,离开实验室,到操场参加3000米长跑运动.一时间操场上熙熙攘攘,摩肩接踵,盛况空前. 为 ...

  6. JavaScript无法运行问题

    [出现问题] JavaScript代码在html页面可以正常运行,在js文件夹下无法正常运行 [解决方案] 根据网上查的和自己错误的原因总结下. 1.引用Js的路径不对 ../ 表示上一级目录开始 . ...

  7. poj3278 【BFS】

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 97240   Accepted: 30519 ...

  8. MT【69】斯图姆定理

    评:如果说零点存在定理是"只在此山中,云深不知处"的意境.那么斯图姆定理就能处理多项式的零点个数以及定位.

  9. 16 利用Zabbix完成windows监控

    点击返回:自学Zabbix之路 16 利用Zabbix完成windows监控 1.安装zabbix_agentd 1.1.下载zabbix_agentd监控客户端软件安装包(windows操作系统客户 ...

  10. 洛谷 P4074 [WC2013]糖果公园 解题报告

    P4074 [WC2013]糖果公园 糖果公园 树上待修莫队 注意一个思想,dfn序处理链的方法,必须可以根据类似异或的东西,然后根据lca分两种情况讨论 注意细节 Code: #include &l ...