深入理解Linux内核-绪论

深入理解Linux内核-绪论

一、Linux与类Unix内核的比较

  • 大部分Unix是单块结构的内核,不支持按需装载和卸载模块
  • Unix内核被组织成一组内核线程;Linux以十分有限的方式使用内核线程周期地执行几个内核函数
  • Unix内核地轻量级线程(LWP,lightweight process)基于内核线程;Linux把轻量级进程当作基本地执上下文

二、操作系统基本概念

2.1 多用户系统

多用户系统是一台能并发和独立地执行分别属于两个或者多个用户地若干应用程序地计算机

多用户系统的特点:

  • 核实用户身份的认证机制
  • 防止有错误的用户程序妨碍其它应用程序再系统中运行的保护机制
  • 防止有恶意用户程序干涉或者窥视其它用户的活动的保护机制
  • 限制分配给每个用户的资源数的记账机制

2.2 用户和组

在多用户系统中,每个用户都有私有空间。所有的用户用唯一的数字标识,这个数字叫用户标识符(User ID,UID);为了能和其他用户选择性地共享资料,每个用户是一个或者多个用户组的成员,由唯一的用户组标识符标识(User Group ID)。每一个文件恰好与一个组相对应,例如可以设置文件的拥有者有文件的读写权限,同组的用户具有可读权限,从而实现了文件与其它用户的共享。

2.3 进程

定义:程序执行的一个实例,或者一个运行程序的上下文

2.4 内核体系结构

大多数Unix内核是单块结构:每一个内核层都集成到整个内核程序中,并代表当前进程在内核态下运行。微内核操作系统只需要内核有一个很小的函数集,运行在微内核之上的几个系统进程实现从前操作系统级实现的功能(内存分配、设备驱动程序和系统调用处理程序)

2.5 文件类型

  • 普通文件
  • 目录
  • 符号链接
  • 面向块的设备文件
  • 面向字符的设备文件
  • 管道和命名管道
  • 套接字

2.6 文件描述符与索引节点

索引节点至少提供以下属性:

  • 文件类型
  • 与文件相关的硬链接个数
  • 以字节为单位的文件长度
  • 设备标识符
  • 在文件系统中标识文件的索引节点号
  • 文件拥有者的UID
  • 文件的用户组ID
  • 几个时间戳,表示索引节点状态改变的时间、最后访问时间和最后修改时间
  • 访问权限和文件模式

2.7 访问权限和文件模式

文件潜在的用户:

  • 文件的拥有者
  • 同组用户,不包括拥有者
  • 剩下的所有用户

有三种类型的访问权限:读、写和执行,每组用户都有三种权限,所以文件权限的组合就用9种不同的二进制来标记。还有三种附加的标记,即suid(Set User ID),sgid(Set Group ID)和sticky定义文件的模式。

当附加的标记应用到可执行文件时有如下含义:

  • suid:进程执行一个文件时通常保持进程拥有者的UID。然而如果设置了可执行文件的suid标志位,进程就获得 了该文件拥有者的UID。
  • sgid:进程执行一个文件时通常保持进程组的用户组ID。然而如果设置了可执行文件的sgid标志位,进程就获得 了该文件用户组的ID。
  • sticky:设置了sticky的可执行文件相当于向内核发出了一个请求,当程序结束以后,依然将它保留在内存。

2.8 文件操作的系统调用

  • 打开文件:open()
  • 访问打开的文件:lseek()/read()/write()
  • 关闭文件:close()
  • 更名文件:rename()
  • 删除文件:unlink()

参考

【0】 《深入理解LINUX内核》