美文网首页
Unix环境编程1-2

Unix环境编程1-2

作者: m风满楼 | 来源:发表于2018-09-29 14:37 被阅读0次

第一章 unix基础知识

1.1 unix体系结构

  • 操作系统(也叫内核)是一种控制协调计算机硬件资源的软件,为程序运行提供环境
  • 内核的接口被称作系统调用,公用函数库构建在系统调用之上
  • 应用软件既可以使用系统调用,也可以使用公用函数库
  • shell 是一种特殊的应用程序,他为运行其他程序提供了一个接口。
  • 操作系统除了内核外还有一些其他的软件,包括系统实用程序,shell,应用软件和一些公用函数

1.3 登陆

  • 登录时检查登录名所在文件系统口令文件(/etc/passwd),密码存放到另一个叫影子文件的文件中。
  • 用户登录后,系统显示一些系统信息后,就载入shell程序(shell是一个和系统交互的门),用户使用哪个shell在口令文件中最后一个字段给出

1.4 文件和目录

  • unix文件系统是由文件和目录组成的一种层次结构
  • 文件属性由文件类型,文件大小,所有者,权限,修改时间等组成
  • 创建新目录时会自动创建. 和 .. 两个文件名,表示当前和父目录
  • 每个进程都有一个工作目录,所有相对路径都以工作目录开始解析,chdir可以修改其工作目录,
  • 用户登陆后进入起始目录,该目录在用户口令文件中指名

1.5 输入和输出

  • 文件描述符
    • 内核用它来描述一个特定进程正在访问的文件,当内核打开一个已有文件或者新建一个文件时,它返回一个fd,在读写文件时使用它
    • 当运行一个新程序时,所有shell为其打开三个文件描述符:标准输入,标准输出,标准错误,如果没有手动设置,这三个文件描述符都链向终端
  • 不用缓冲的I/O
    • 函数open(),read(),write(),lseek(),close()提供了不用缓冲的I/O,这些函数都适用文件描述符
    • read()函数返回读取的自己数

  • 标准I/O
    • 标准I/O提供了一种对不用缓冲I/O函数带函数的接口。
    • 使用标准io不用考虑如何选取缓冲区的大小,并简化输入行的处理

1.6 程序和进程

  • 程序
    • 程序是存放在磁盘上的某个可执行文件,exec函数可以将程序读入内存执行
    • 进程
      • 程序的执行实例被称作进程
      • unix系统确保每个进程都有一个唯一的数字标志符,即pid
    • 进程控制
      • 有三个用于控制进程的函数:fork,exec(有六种变体,统称为exec),waitpid,
      • 调用fork创建新进程的时候,新进程是调用进程的一个副本,调用进程叫父进程,新创建的叫子进程,fork对父进程返回新的子进程的id,对子进程返回0
      • fork创建一个新进程,所以他被调用一次,但是返回两次(分别在父进程和子进程中)
      • 在子进程中,调用execlp执行从标准输入读入的命令。这样就用新的程序文件替换进程原先执行的文件。
    • 现场和线程id
      • 一个进程内的所有线程共享同一地址空间,文件描述符,栈和进程相关属性
      • 多线程之间能访问同意存储区,所以对于共享数据的访问要进行同步避免数据不一致

1.7 出错处理

  • 当unix系统函数出错的受,通常会返回一个负值切整形变量errno通常被设置为具有特定信息的值
  • 文件<errno.h>定义了errno以及可以赋予它的各种常量
  • 在多线程环境中,每个线程都有自己的局部errno,以避免一个线程干扰另一个线程
  • 出错恢复
  • 出错分为两类
    • 致命性和非致命性
      • 致命性错误,无法执行恢复动作
      • 对于非致命性错误,有时可以较妥善的进行处理,大多数非致命性错误是暂时的(如资源短缺)
      • 对于资源相关的非致命性错误的典型恢复操作是延迟一段时间,然后重试 。

1.8 用户标识

  • 用户id
    • 口令文件登陆项中的用户id是一个数值,向系统标志不同的用户
    • 用户id为0的用户为超级用户,登录名为root
    • 如果进程具有超级用户特权,则大多数文件权限检查都不再执行
  • 组id
    • 口令文件登陆项也包括用户的组id,它是一个数值,由系统管理员在指定用户登录名时分配。
    • 组被用来同组之间各个成员的资源共享(比如说文件)
    • 组文件将组名映射为数值的组id,组文件通常时/etc/group
  • 附属组id
    • 除了在口令文件中对要给登陆名指定一个组id外,大多数unix系统版本还允许一个用户属于另外一些组

1.9信号

  • 信号用于通知进程发生了某种情况
  • 进程有以下三种处理信号的方式
    • 忽略信号
    • 按系统默认方式处理
    • 提供一个函数,信号发生时使用该函数,称作捕捉这个信号
  • 终端键盘上有两种产生信号的额方法,分别称为中断键(interrupt key)和推出键(quit key),他们被用于中断当前进程。
  • 另一种产生信号的方法时kill函数。在一个进程中调用此函数就可以向另一个进程发送一个信号

1.10 时间值

  • unix使用两种时间
    • 日历时间
      • UTC时间从1970.1.1经过的秒数
    • 进程时间
      • CPU时间,度量进程使用的CPU资源。进程时间以时钟滴答计算
  • 当度量一个进程执行时间时,unix系统维护了3各进程时间值
    • 时钟时间,又称墙上始终时间,是进程运行的时间总量,其值于系统中同时运行的进程数目有关
    • 用户CPU时间,执行用户指令所用的时间量
    • 系统CPU时间,该进程执行内核进程所经历的时间。
  • 用户CPU时间和系统CPU时间被称为CPU时间

1.11 系统调用

  • 操作系统提供服务的入口点叫系统调用
  • linux3.2.0有380各系统调用
  • unix如何进行系统调用?
    • unix所使用的技术是为每个系统调用在标准C库中设置一个具有同样名字的函数。用户名称用标准C调用来调用这些函数,然后函数又用系统所要求的的技术调用相应的内核服务。
  • 应用程序即可以调用系统调用又可以调用库函数
  • 系统调用通常提供最小接口,而库函数通常提供比较复杂的功能

第二章 unix标准及实现

2.2 unix标准化

  • restrict关键字告诉编译器,哪些指针引用可以被优化。
  • 标准定义一种接口的规范而不是实现,厂商采用标准转换成具体的实现。

2.5 限制

  • 限制由两种
    • 编译时限制,可在头文件中定义
    • 运行时限制,需要调用一个函数得到
  • 2.5.4
  • 函数sysconf,pathconf,fpathconf
  • sysconf限制是和文件或者目录无关的运行时限制
  • pathconf和fpathconf是和文件目录有关的运行时限制
#include <unistd.h>
long sysconf(int name) ;
long pathconf(const char *pathname, int name) ; //用路劲名做参数
long fpathconf(int fd, int name) ;      //用文件描述符作为参数

name参数是表示系统限制的常量,再apue第34页由定义

  • SC开始的常量用于标识运行时限制sysconf的name
  • PC开始的常量用于标识运行时限制的pathconf和fpathconf所使用的name。

相关文章

  • Unix环境编程1-2

    第一章 unix基础知识 1.1 unix体系结构 操作系统(也叫内核)是一种控制协调计算机硬件资源的软件,为程序...

  • Unix高级环境编程(3版CN).pdf

    Unix高级环境编程(3版CN) 内容简介 · · · · · · 《UNIX环境高级编程(第3版)》是被誉为U...

  • unix环境高级编程-文件i/o

    最近在读unix环境高级编程,每天都会做做笔记! UNIX标准及实现 UNIX编程环境的标准化已经取得了很大进展。...

  • 书单

    Unix 编程艺术Java编程思想数据结构与算法分析unix环境高级编程代码大全Effective javajav...

  • APUE读书笔记-前言

    本文主要介绍在UNIX环境下编程所需要了解的内容,可做为UNIX/Linux环境下编程的学习资料,或者需要时查阅的...

  • 程序员夯实基本功的书籍

    算法导论 深入理解计算机系统 unix环境高级编程

  • UNIX环境高级编程——线程

    线程 线程的概念 典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事。有了多个控制线程后,在...

  • Unix高级环境编程笔记

    记录下

  • Unix高级环境编程:信号

    什么是中断? 在计算机科学中,中断是指由于接收到外围硬件(相对于CPU与内存而言)的异步信号或者来自软件的同步信号...

  • 《UNIX 环境高级编程》实验

    http://foolishflyfox.xyz/blog/tags/APUE/ 详细地记录了 《UNIX 环境高...

网友评论

      本文标题:Unix环境编程1-2

      本文链接:https://www.haomeiwen.com/subject/iggqnftx.html