天天看点

《深入Linux内核》 UNIX的一些故事

Unix文件的类型

1.普通文件

2.目录

3.符号链接

4.面向块的设备文件

5.面向字符的设备文件

6.管道和命名管道

7.套接字

点评:不明觉厉

打开文件

进程只能访问“打开的”文件。为了打开一个文件,进程调用

fd = open(path,flag,mode)

path表示被打开的文件的路径。

flag表示打开的方式,它也指定是否应当创建一个不存在的文件。

mode指定新创建文件的访问权限。

关闭文件

当进程无需再访问文件的内容时,就调用系统调用:

res = close(fd)

更名及删除文件

要重新命名或删除一个文件时,进程不需要打开它。这样的操作并没有对这个文件的内容起作用,而是对一个或多个目录的内容起作用。

res = rename(oldpath,newpath)

改变了文件链接的名字,而系统调用:

res = unlink(pathname)

减少了文件的链接数,删除了相应的目录项。只有当链接数为0时,文件才被真正删除。

虚拟内存的优点

若干个进程可以并发地执行。

应用程序所需内存大于可用物理内存时也可以运行。

程序只有部分代码装入内存时进程可以执行它。

允许每个进程访问可用物理内存的子集。

进程可以共享库函数或程序的一个单独内存映像。

程序可以编写与机器无关的代码,因为他们不必关心有关物理内存的组织结构。

进程虚拟地址空间处理

内核分配给进程的虚拟地址空间由以下内存区组成:

程序的可执行代码

程序的初始化数据

程序的未初始化数据

初始程序栈

共享库的可执行代码和数据

堆(由程序动态请求的内存)

设备驱动程序

通过特定的接口,每个驱动程序与内核中的其余部分相互作用

优点如下:

可以把特定设备的代码封装在特定的模块中。

厂商可以在不了解内核源码而只知道接口规范的情况下,就能增加新的设备。

内核以统一的方式对待所有的设备,并且通过相同的接口访问这些设备。

可以把设备驱动程序写成模块,并动态地把它们装进内核而不需要重新启动系统。不再需要时,亦可以动态地卸下模块。

小结:

通过阅读,感觉系统内部的奥秘蛮好玩的,能够更深刻的认识linux系统的原理,以及windows系统。都是相通的!!!由表及里的研究!!!

本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/3182814.html,如需转载请自行联系原作者

继续阅读