命名服务
8.1 名字
OS负责实现各个对象(如进程、
信箱、结点、I/O设备、文件、地址)之间的消息传递,这就要求访问的系统对象都有一个名字。
一个名字(标识符),就是标识一
个对象的一串符号(位或者字符)。
名字和对象之间对应是一个引用关
系,通过名字对对象进行
引用和标识。
对于计算机本身,用数字标识符
(二进制数最适合表示)。
但用户不能高效地使用二进制表
示,用户往往使用OS支持且
易读的正文串识别对象。
因此,计算机有两类名字:用户名
和系统名。
仅仅给出名字是不够的,还必须知
道当前的位置。
名字、地址、路由。
名字:规定了一个寻找的对象
(即欲访问的对象);
地址:定义了对象的位置;
路由:定义了到达对象的路径;是
代表从源点到目的点路径的
一列名字。
将名字变换为地址,将地址变换
为路由。
如果名字可以变换为相关路由,就
可以高效地进行通讯。这个
路由变换函数称为路由选择,并由
路由算法实现。
命名机制的作用:
1 实现对资源的共享,重定向等等;
2 从分布式OS和应用的角度,对
资源进行访问。
现有的一些计算机系统,对不同
类型的对象使用独立的命名原则,
如文件名与其它对象名之间差别
较大,分布式系统应使用统一的
命名原则可以识别各个可用的对
象。
命名机制的目标:
1 命名机制应可以识别全局范围
的对象;
2 应至少支持两类不同的标识符;
方便用户使用的用户级;便于机器
存储表示的系统级;
以上两级的机制应各自独立,且可以高效地进行转换。
3 在整个系统范围内的唯一标识符;
4 在发送具体的消息前,初始化和转
换标识符时交换消息的数量小;
5 命名机制应可以对对象进行重定
位;
负载平衡要求对象应该是可移动的。
6 名字和地址之间的变换不一定是
一一对应的,还可以是一对多;
7 命名机制应支持对同一对象多
副本的使用;
8 命名机制应允许用户对同一对象
定义多个局部的标识符;
9 命名机制应允许多个不同的对象
共用同一个标识符(进程组);
10 分布式系统中使用的独立命名机
制的数目必须是最小的;
DEC系统研究中心开发的全球
名字服务(Global Name Service,
Lampson, 1986)目标:
1 处理任意数量的名字,并为任意
数量的管理组织服务
2 长生命期
3 高可靠性
4 故障隔离
5 容忍怀疑
8.2 一般的命名方式
在计算机系统中,每个对象一般
有两个名字,一个是由用户识别
的文本名(符号),另一个是由
系统使用的内部名。
由于系统可以有多个用户,目录
常常组织成层次结构。
大多数系统允许用户设置一个默
认目录或当前目录。
8.3 分布式系统中的命名方式
名字管理部分的主要功能:
分布式系统中常用的命名方案
有:
1 绝对命名
全系统范围唯一的、无二义性的,
通常是由时钟或计数器之值产
生的位串。
2 相对命名
依赖于使用它的上下文,对于不
同的使用者,一个对象的名字可
以是不同的。
3 层次命名
系统被划分成若干组,每组给定全
局唯一的组名,每组中的每个
对象在组内给定唯一的名字,一
个组中对象名还可按此方式进一
步划分成若干组。
8.4 名字服务器的设计
(name server)
功能:将一个符号串映射成系统内
唯一的物理地址。名字服务器管
理着包含有“名字及其物理地址”
的对照表。
系统中的所有服务程序都由名字
服务器来寻址和定位。
中央方式:全系统仅有一个名字服务器;
复制方式:每个场点都有一个名字服
务器的副本,用以管理该场点
上的所有服务程序及本场点与其它
场点间相互请求的服务信息;
分划方式:系统由若干个子系统组成。
8.5 分布式系统的透明性
命名方案与透明性问题极为相关,系
统的透明性隐含了下面的事实:
1 资源的位置不应嵌入其名字中;
2 名字应该是全局唯一的,相同的
名字应该有相同的效果。
透明性与下面几点要求相冲突
1 局部自治区
由于强调透明性而牺牲了(部分)
自治性;
2 优化
希望知道资源位置的显示信息,并对
它进行控制,这可能出于
优化系统性能的要求;
3 异构
完全透明性是很难实现的。
命名方案与系统的透明性密切相关,
命名服务器可根据给定的
名字来进行资源或对象的地址定
位,并获取有关的属性信息。