UNIX环境高级编程 心得笔记
2017/10/7 10:52:19

所有操作系统都为运行在它之上的程序提供各种服务,典型的服务包括:执行新程序、打开文件、读写文件、分配存储空间、提供时间等。
UNIX环境高级编程中文第二版PDF高清版 下载地址  http://www.linuxidc.net/thread-2063-1-1.html UNIX体系结构
严格来说,操作系统是一种软件,它控制计算机硬件资源,提供程序运行环境。这种软件有个专业术语名称:内核。因为它小且位于计算机体系的核心。如下图所示:

上图中的系统调用包裹在内核的外围,隔离开内核以保护内核。同时,系统调用作为和内核沟通的中间桥梁。
公用函数库通常指的是C/C++的标准库,例如libc、glibc、libstdc++、libc++等标准库,不同的标准库是由于不同的系统平台或编译器厂商造成的差异,但追根究底都是使用了底层系统内核的API接口系统调用。这些公用函数库极大的方便了上层开发者的使用,也是整个计算机软件体系(无论任何编程语言)的基础。
shell也是一个软件,该软件负责人机交互,用户和shell进行“对话”,然后shell理解用户的意图来使计算机按用户的想法工作。比如我们使用ls命令告诉shell我们想查看文件夹,shell接收后使用各种底层功能(包括读写文件系统、IO输入输出等)来完成该工作,当然最终的结果是打印文件夹在我们的屏幕上显示给我们看。
公用函数库只是提供了好用的功能,这些功能最终是要我们自己来使用的,当我们作为软件开发者的时候,可以调用公用函数库来使用某些功能,如果公用函数库提供的功能不好用或者没有提供,我们也可以直接使用系统调用来请求服务。
上图的内核是严格意义上的操作系统软件,广义上来说,操作系统不仅是内核,因为仅有一个内核只能管理硬件,操作系统还要包含一些软件来加以辅助使用计算机,包括shell、公用函数库、系统程序和实用软件。这也是为什么Linux被称作GNU/Linux操作系统的原因,为了简便称其为Linux,实际上Linux之所以能有今天的成绩,并非Linus torvalds的功劳,甚至可以说他被外界过度夸大,因为Linux是从Minix改写而来(1991年,此时内核难度和硬件移植与今天相比不可同日而语),Linux使用了大量的GNU工具组合成了Linux系统,其后Linux的发展壮大也是广大志愿者黑客出力,所以说Linux的成绩并非Linus torvalds的功劳,他被外界过度神话了。
前面说到shell,要提一下C shell的作者,当初C shell被开发出来之后,由于功能多而广泛流传使用,其开发者是Bill Joy。与Linus torvalds相比,Bill Joy才是真正的大神人物,Vi、TCP协议、C shell的开发作者,BSD内核贡献者,Java创始人之一、SUN公司的合伙创办人,曾有人开玩笑说:和Bill Joy见面,一定要三次握手:)  登录
UNIX系统登录涉及到用户名和密码,以及登录后负责交互对话的shell版本,用户名和shell由配置文件/etc/passwd决定,密码由配置文件/etc/shadow决定。

  文件系统
UNIX文件系统是一直树形层次结构,有一个根,是最根本的起点,它是“/”。在文件系统中,目录本质上也是一个文件,其内容是目录项的记录。每个目录项都是一个文件名,还包含一些文件属性的说明信息,比如权限、大小、时间等。
创建新目录时文件系统会自动创建两个文件夹:.(点)和 ..(点点), .(点)表示当前目录,比如我需要拷贝/etc目录下的a文件到当前目录,那么就可以这么做: 
cp /etc/a . 
上面使用cp命令将/etc/a这个文件拷贝到当前目录下。
 
..(点点)表示父目录,比如我需要将当前目录下的b文件拷贝到上一层父目录中,则可以这么做: 
cp b .. 
上面使用cp命令将当前目录下的b文件拷贝到上一层路径中,而不需要显式给出上层具体路径。
有一个特殊的情况,那就是根目录“/”下的.(点)和 ..(点点

下一页
返回列表
返回首页
©2017 Linux公社 - Linux系统门户网站 电脑版