在做本章的笔记之前,先分享一个关于man命令的知识,对今后的学习有很大的帮助。
Linux下的在线手册(MAN)的章节分类:
/usr/share/man/ - Linux man pages
1、Standard commands (标准命令)
2、System calls (系统调用)
3、Library functions (库函数)
4、Special devices (设备说明)
5、File formats (文件格式)
6、Games and toys (游戏和娱乐)
7、Miscellaneous (杂项)
8、Administrative Commands (管理员命令)
1.1 引言
所有操作系统都需要向他们运行的程序提供各种服务,包括:执行新程序、打开文件、读文件、分配存储区以及获取当前时间等,本书即集中阐述了unix操作系统各种版本所提供的服务。
第一章是对全书的快速浏览,涉及到了本书要讲的大部分模块,后面的章节会有具体的讲解。
1.2 unix体系结构
操作系统控制计算机硬件资源,提供程序运行环境。下图描绘了unix操作系统的体系结构。狭义的操作系统即为内核,广义的操作系统包含了其他软件,如实用程序、shell及公用函数库。
内核的接口被称为系统调用。公共函数库构建在系统调用接口之上,应用软件既可使用公共库函数,也可使用系统调用。
Shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口。
1.3 登录
1.登录名:/etc/passwd文件中的字段
2.shell:命令行解释器,用户登录后的默认shell由passwd文件指定。
常见的shell:Bourne shell/Bourne-again shell/C shell/Korn shell/TENEX C shell
Bourne shell:最常见的shell,其控制流结构类似于Algol 68;
1.4 文件和目录
Unix的文件系统是目录和文件组成的层次结构,起点为跟(/)。
目录是包含很多目录项的文件,目录项包括文件名、文件信息。
书中有一个仿ls程序,比较简单,就不写了。
另外说明本书源代码的编译方式,其实不难,如果有人需要源码和编译方法,可以找我。
1.5 输入输出
文件描述符:小的非负整数,内核用它标识一个特定进程正在访问的文件。
标准输入、标准输出、标准出错:特殊的文件,描述符分别为0、1、2
不用缓冲的I/O:系统调用,open,read,write,lseek,close。标准输入、输出均可重定向到其他文件。
标准I/O:提供了一种对不用缓冲I/O函数的带缓冲的接口。使用标准I/O函数可以无需担心如何选取最佳的缓冲区大小。
1.6 程序和进程
程序:磁盘上的可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。
进程:程序的执行实例,由pid标识。
进程控制函数:fork/exec/waitpid
Fork函数创建一个新进程,并返回两次,一次返回给父进程,一次返回子进程。
1.7 出错处理
errno,在<errno.h>中定义,uinx系统手册的第二部分的intro列出了所有的这些常量;linux中,出错常量在errno(3)手册页中列出。
支持多线程的环境中,每个线程都有自己局部的errno,以避免干扰另一个线程。
两条规则:不出错,不会清除errno;errno不为0。
//将errno映射为出错信息字符串
Char *strerror(int errnum);
//基于当前errno值,在标准出错上产生一条出消息。
Void perror(const char *msg);
1.8 用户标识
用户ID、组ID、附加组ID
1.9 信号
信号:通知进程已发生某种情况的一种技术。
Signal函数
sighandler_t signal(int signum, sighandler_t handler);
1.10 时间值
日历时间:自1970年1月1日00:00:00以来国际标准时间所经历的秒数累计值。Time_t保存该值
进程时间:即CPU时间
Time命令
1.11 系统调用和库函数
Linux不同版本提供240~260个系统调用
【qianlong88的APUE读书笔记】第一章:uinx基础知识
最新推荐文章于 2024-11-14 14:03:19 发布