第二章核心导言 2.1UNIX操作系统的体系结构 “文件”和“进程”是UNIX系统的两个最基本实体和中 心概念,UIX系统的所有操作都是以这两者为基础的。整 个系统核心由以下五个部分组成: ①文件系统: 文件管理和存储空间管理(节点和空间管理) ②/O设备管理: 核心→缓冲→块设备(随机存取设备) 核心→原始设备(raw设备,字符设备,裸设备) 进程控制: 进程的调度、同步和通讯 ④ 存贮管理: 在主存与二级存储之间对程序进行搬迁 时钟管理: 把cpu的时间分配给当前最高优先权的进程。 1
第二章 核心导言 • 2.1 UNIX操作系统的体系结构 “文件”和“进程”是UNIX系统的两个最基本实体和中 心概念,UNIX系统的所有操作都是以这两者为基础的。整 个系统核心由以下五个部分组成: ① 文件系统: 文件管理和存储空间管理(节点和空间管理) ②I/O设备管理: 核心→缓冲→块设备(随机存取设备) 核心→原始设备(raw设备,字符设备,裸设备) ③ 进程控制: 进程的调度、同步和通讯 ④ 存贮管理: 在主存与二级存储之间对程序进行搬迁 ⑤ 时钟管理: 把cpu的时间分配给当前最高优先权的进程。 1
用户程序 用户级 陷入 程序库 核心级 系统调用界面 文件子系统 进程间通讯 进程控制 高速缓冲 子系统 调度程序 字符设备 块设备 存储管理 设备驱动程序 硬件控制 核心级 硬件级 硬 件 2
硬 件 硬 件 控 制 字符设备 块设备 设备驱动程序 高速缓冲 文件子系统 系 统 调 用 界 面 程 序 库 进程控制 子系统 进程间通讯 调度程序 存储管理 用户程序 用户级 核心级 核心级 硬件级 陷入 2
·2.2系统概念 2.2.1文件系统概貌 1.索引节点(index node一inode) inode特征: ·文件的内部名称 (或代号),方便机器操作; ·每个文件都有一个且只有一个inode.与之对应; inode存放文件的静态参数:存放地点、所有者、 文件类型、存取权限、文件大小等; 。 每个文件都可以有多个名字,但都映射到同一个 inode.上; ·各inode之间以inode号相区别; 3
• 2.2 系统概念 2.2.1 文件系统概貌 1.索引节点(index node——inode) inode特征: • 文件的内部名称(或代号),方便机器操作; • 每个文件都有一个且只有一个inode与之对应; • inode存放文件的静态参数:存放地点、所有者、 文件类型、存取权限、文件大小等; • 每个文件都可以有多个名字,但都映射到同一个 inode上; • 各inode之间以inode号相区别; 3
2.链结(Iink) 一对应命令名n 文件节点 abc xyZ 文件名 一个文件可有多个名字,多个名字都对应同一个文件节 点,每个名字就是该文件节点的一个链结: 一个普通文件的名字个数,就是该文件的链结数; 每个链接名可以放在不同的目录下(同一个文件系统 下); ·删除一个链接名时,文件链接数减一。如链接数不为零, 则文件(节点)仍然存在
2.链结(link) ——对应命令名 ln 文件i节点 abc xyz 文件名 · 一个文件可有多个名字,多个名字都对应同一个文件i节 点,每个名字就是该文件节点的一个链结; . 一个普通文件的名字个数,就是该文件的链结数; · 每个链接名可以放在不同的目录下(同一个文件系统 下); · 删除一个链接名时,文件链接数减一。如链接数不为零, 则文件(节点)仍然存在。 4
使用文件链结的目的: ①方便用户的使用习惯,如“列目录”,可用Is、dir、 ist、lc等; ②误删文件时可补救,又不多占空间。abc和xyz具有 相同的结点号: ③减少移植应用程序时,因使用指定位置的文件,而 拷贝该文件到指定位置去的麻烦。 5
使用文件链结的目的: ①方便用户的使用习惯,如“列目录”,可用ls、dir、 list、lc等; ②误删文件时可补救,又不多占空间。abc和xyz具有 相同的i结点号; ③减少移植应用程序时,因使用指定位置的文件,而 拷贝该文件到指定位置去的麻烦。 5
3.符号链结(symbol link) 一对应命令名Ins 文件节点 abc—Xyz 文件名 给文件的名字再取一个名字,而不是给文件节点再取一 个名字。 链接的是“符号”而不是文件,因此“符号”可以是不 存在的文件,即无意义的字符串。 ·abc和xyz具有不同的inode号,xyz的内容是它所指向 的名字的字符串,大小是字符串长度为3字节 “普通链结”中各名字必须在同一文件系统中,“符号 链结”可在不同的文件系统中。 6
3.符号链结(symbol link) ——对应命令名 ln -s 文件i节点 abc xyz 文件名 • 给文件的名字再取一个名字,而不是给文件节点再取一 个名字。 • 链接的是“符号”而不是文件,因此“符号”可以是不 存在的文件,即无意义的字符串。 • abc和xyz具有不同的inode号,xyz的内容是它所指向 的名字的字符串,大小是字符串长度为3字节。 • “普通链结”中各名字必须在同一文件系统中,“符号 链结” 可在不同的文件系统中。 6
4.活动节点表(索引节点表)一inode表 在内存中存放当前要使用的文件inode的表(或称 为活动节点表),表中的每一个表项对应一个当前 正被使用的文件的状态信息。这样要使用(打开) 同一个文件的进程不必再到盘上去寻找了,(共 享!) inode inode inode inode inode 7
4.活动i节点表(索引节点表)—— inode表 在内存中存放当前要使用的文件inode的表(或称 为活动i节点表),表中的每一个表项对应一个当前 正被使用的文件的状态信息。这样要使用(打开) 同一个文件的进程不必再到盘上去寻找了,(共 享!) 7 inode inode inode inode inode ……
5.用户打开文件表(或称用户文件描述符表) 在系统中每一个进程都有一个描述该进程的数据结 构user(类似于描述文件的i节点),在user中有一 个数组,存放一组指针指向系统打开文件表中该进 程打开的文件所对应的表项。 struct file *u ofile[NOFILE] NOFILE为每个进程最多可同时打开的文件数,这 与系统中的进程数和内存大小以及交换区大小等有 关系,一般为20~100。 这个u ofile数组就是该进程的用户打开文件表。 8
5.用户打开文件表(或称用户文件描述符表) 在系统中每一个进程都有一个描述该进程的数据结 构user(类似于描述文件的i节点),在user中有一 个数组,存放一组指针指向系统打开文件表中该进 程打开的文件所对应的表项。 struct file *u_ofile[NOFILE] NOFILE 为每个进程最多可同时打开的文件数,这 与系统中的进程数和内存大小以及交换区大小等有 关系,一般为20~100。 这个u_ofile数组就是该进程的用户打开文件表。 8
6.系统打开文件表(fle表) 系统打开文件表主要存放被打开文件的读写指 针。 因为一个进程在一个时间片内可能读写不完所 需内容,需要在下一个时间片继续从上一个时间片 结束时的读写位置开始读写,故在进程生存期间应 保持一个读写指针。 此外le表中还存放被打开文件的动态信息:如 文件状态、引用计数(当前使用该文件的进程数) 等。 9
6.系统打开文件表(file表) 系统打开文件表主要存放被打开文件的读写指 针。 因为一个进程在一个时间片内可能读写不完所 需内容,需要在下一个时间片继续从上一个时间片 结束时的读写位置开始读写,故在进程生存期间应 保持一个读写指针。 此外file表中还存放被打开文件的动态信息:如 文件状态、引用计数(当前使用该文件的进程数) 等。 9
A进程 file表 活动inode表 B进程 用户打开文件表 系统打开文件表 活动节点表 10
A进程 B进程 file表 活动inode表 用户打开文件表 系统打开文件表 活动i节点表 10