1.用户和用户组
每个用户是一个或多个用户组的一名成员,组由唯一的用户组标识符(user group ID)标识。每个文件的相关权限也恰好与一个组相对应。
root为超级用户,
2.模块
为了达到微内核理论上的很多优点而又不影响性能, Linux内核提供了模块(module)。模块是一个目标文件,其代码可以在运行时链接到内核或从内核解除链接。这种目标代码通常由一~组函数组成,用来实现文件系统、驱动程序或其他内核上层功能。与微内核操作系统的外层不同,模块不是作为一个特殊的进程执行的。就向是一个静态链接的内核函数-样,代表当前进程在内核态下执行。
3.文件目录
路径名由斜杠及- -列指向文件的目录名交替组成。如果路径名的第一个字符是斜杠,那么这个路径就是所谓的绝对路径,因为它的起点是根目录。否则,如果第- -项是目录名或文件名,那么这个路径就是所谓的相对路径,因为它的起点是进程的当前目录。
当标识文件名时,也用符号“."和“.”。 它们分别标识当前工作目录和父目录。如果当前工作目录是根目录,“.”和“.." 就是一致的。
4.硬链接和软连接
硬链接ln P1 P2,不允许对目录,不允许对不同种文件系统
软链接 ln -s P1 P2。
软连接只记录了链接文件的目录关系,硬链接相当于复制了一份文件,之后的文件修改也会对硬链接文件同步进行
5.文件类型
Unix文件可以是下列类型之一:
普通文件(regular file)
目录
符号链接
面向块的设备文件(block -oriented device file)
面向字符的设备文件(character- oriented device file)
管道(pipe) 和命名管道(named pipe) ( 也叫FIFO)
套接字(socket)
6,特殊线程
内核线程:运行在内核地址空间,不与用户交互,通常在启动时创建一直活跃直到系统关闭。
7.可重入内核
内核要是可重入的,即内核运行程序当需要磁盘请求时,可以让磁盘控制器去处理请求并恢复执行其他进程,然后等处理完再回来执行这个进程。
管只修改局部变量不改全局的
RAM的三个功能:
满足内核对缓存、描述符及其他动态内核数据结构的请求。
满足进程对一般内存区域的请求及对文件的内存映射的请求。
用高速缓存的方法从磁盘及其他缓神设备获得较好的性能。
RAM是有限的,必须在请求类型之间平衡。临界极限时可用页框回收算法。虚拟内存必须解决的一个主要问题是内存碎片。
内核内存分配器(KMA)应有特点:
必须快。实际上,这是最重要的属性,因为它由所有的内核子系统调用(包括中断处理程序)。
必须把内存的浪费减到最少。
必须努力碱轻内存的碎片(fragmentation) 问题。
必须能与其他内存管理子系统合作,以便借用和释放页框。
算法:
资源图分配算法( allocator)
2的幂次方空闲链表
McKusick- Karels分配算法
伏伴{Buddy)系統
Mach的区域(Zone)分配算法:
Dynix分配算法
Solaris的slab分配算法
脏缓冲区的概念:(内存中)缓冲区内容与对应磁盘块的内容不一样
设备驱动程序: 可以把设备的代码写成模块,动态装入内核,通过接口规范增加设备,不用时也可以卸载该模块