Linux 笔记2

来源:互联网 发布:竞彩足球 大数据分析 编辑:程序博客网 时间:2024/05/18 01:31

1。Linux链接

Linux目录中每个名字至inode的映射被称为链接,即目录中一个指向inode的名字。Linux的文件链接分为硬链接和软链接。

硬链接与对象有相同的inode,与对象必须位于同一个文件系统。使用link()函数实现,也可在shell 中用“ln”实现。硬链接对象必须存在才可以创建硬链接,而且只有删除所有的硬链接才可能删除相关数据。

软链接即符号链接,与对象的inode不同,它不增加额外的目录项,而是一种特殊的文件类型。它可以跨越文件系统,符号链接对象不存在时也可以创建该链接。删除链接对象后,符号链接给出指向错误。使用symlink()函数实现,也可以在shell 中用“ln -s”实现。 

2。设备节点。

 设备节点是应用程序与设备交互的特殊文件。设备节点提供设备抽象,使应用程序不必了解特定设备或熟悉特别的接口。每个设备节点都具有连个数值属性,分别是主设备号和次设备号。主设备号与对应的设备驱动映射表已载入内核,即主设备号被系统用来确定驱动程序。次设备号被驱动程序用来确定设备。

 3.特殊设备节点。

 空设备位于/dev/null,主设备号是1,次设备号是3。

 零设备位于/dev/zero,主设备号为1,次设备号为7

 满设备位于/dev/full,主设备号为1,次设备号为7

 

4.存储器区域

   文本段(text segment)包含着一个进程的代码,字符串,常量和一些只读的数据。在Linux中,文本段被标记为只读,并且直接从目标文件(可执行程序或库文件)映射到内存中。

   堆栈段(stack)包含一个进程的执行栈,随着栈的深度动态的伸长或收缩。执行栈中包含了程序的局部变量和函数返回值。

   数据段(data segment),又叫堆(heap),包含着一个进程的动态存储空间。这个段是可写的,而且它的大小是可以变化的。这部f分空间往往是由malloc分配的。

   BSS段包含了没有被初始化的全局变量。这个变量根据不同的C标准都有特殊的值。

5。内存分配机制

  

 

malloc() 优点是简单方便最常用,缺点是返回内存要用零初始化

   calloc()  使数组分配变得容易用0初始化了内存,但在分配非数组空间时比较复杂

realloc()   调整已分配的空间大小

posix_memalign()分配的内存按照任何合理的大小进行对齐

alloca()最快的分配方式,不需要知道确切大小对于小内存的分配非常合适但不能返回错误信息,不适合大内存分配

 

6.exit函数与_exit函数区别

(1)exit函数是在ANSI C 中说明的,_exit函数是在POSIX表准中说明的

(2)exit函数将终止调用进程,在退出程序之前关闭所有文件,标准输入输出的缓冲区被清空,并执行在atexit注册的回调函数;_exit终止调用进程,但不关闭文件,不清空标准输入输出的缓冲区,也不调用在atexit注册的回调函数。