informix基础之第三章INFORMIX组成

1.1 动态服务器的系统结构

图1-1  动态服务器体系结构

如图3-1 所示。 INFORMIX 动态服务器采用的是一种多线程体系结构。这就意味着一个进程利用自己的多个线程可以同时完成多个任务,因而整个系统只需较少的进程就足以完成 DBMS 任务。

动态服务器系统由三个主要组件构成: 共享内存 进程 磁盘

共享内存包括三个段:驻留段、虚拟段和消息段。驻留段主要用做磁盘数据的缓存。虚拟段主要用做内存池以支持进程及相关的会话(session )和线程。当客户与服务器利用共享内存进行通讯时,消息段将用做两者之间的消息缓冲区。

系统中还包括若干构成数据库服务器的UNIX 进程,称为 oninit 。这些进程被称为虚处理器( VP Virtual Processors )。每一个 VP 隶属于某一虚处理器类。而每一虚处理器类都负责完成一类特定的任务。

系统的磁盘组件由多个原始磁盘空间组成,称为chunk Chunk 以页( page )为基本单位。多个 chunk 集合逻辑上构成了数据空间( dbspace )。数据空间用于存储数据库、表、根以及物理日志和逻辑日志。一个数据空间至少包括一个 chunk

1.2 共享内存段

图1-1  动态服务器共享内存

如图3-2 所示,动态服务器的共享内存由 三个段构成  

驻留段主要用做缓冲池,内含逻辑日志和物理日志的缓冲区以及其它系统数据结构。驻留段的大小主要由系统参数BUFFERS 决定。

虚拟段主要用做内存池以支持会话和线程。根据用途的不同,内存池可以进一步分为:会话池、多线程池、字典池、存储过程池、排序池、大缓冲区池以及全局池。内存池的分配和释放是动态进行的。内存池的大小为8k 。如果已有虚拟段耗尽,动态服务器可以根据 onconfig 参数再次动态申请。虚拟内存段的初始大小由参数 SHMVIRTSIZE 决定,其增量由参数 SHMADD 决定,但整个共享内存段的大小不能超过 SHMTOTAL

如果客户与服务器利用共享内存进行通讯,消息段将用做通讯缓冲区。每一用户连接(利用共享内存进行通讯)大致占用12K 的空间。用户连接的数量在参数 NETTYPE 中定义。

用户可以利用ipcs onstat -g seg 命令监控共享内存段的状态

1.3 虚拟处理器( Virtual Processors

图1-1  动态服务器虚拟处理器

数据库系统服务器由若干称为oninit  UNIX 进程组成,在系统中这些进程被称为虚拟处理器( VP ),如 3 - 3 所示。所有VP 都是可执行程序 oninit 的实体。每一 VP 属于一种特定的虚拟处理器类,而不同的虚拟处理器类分别完成不同的任务。每一虚拟处理器类可创建的 VP 数量由下列参数决定:

CPU

NUMCPUVPS

AIO

NUMAIOVPS

PIO

自动启动一个VP 。如果物理日志被镜像,将启动两个 VP

LIO

自动启动一个VP 。如果逻辑日志被镜像,将启动两个 VP

SHM

NETTYPE

TLI

NETTYPE

SOC

NETTYPE

MSC

自动启动一个VP

ADM

自动启动一个VP

OPT

STAGEBLOB被设置,然后自动启动一个 VP

ADT

ADTMODE被设置,然后自动启动一个 VP

用户可以利用 ps onstat -g glo 命令监控 VP 的状态。

1.4 线程

图1-1  多线程机制

在动态服务器中,线程是在oninit 中的一段被执行的指令流。如 3-4 所示,通过多线程机制,可以让一个进程同时为多个任务服务而不必生成多个OS 级进程。进程 oninit  可以启动多个线程,各线程顺序执行,并在适当的时候将控制权转移给其它线程。在多线程进程中每一线程都有自己的执行环境,包括自己的代码空间和自己的局部变量。一个多线程进程负责多个线程间的正文切换。

在系统中,线程只能有两种存在状态:要么正在某个VP 上运行,要么在某一队列中排队等待。在就绪队列中保存了所有已准备就绪只待执行的线程的正文。一旦出现空闲 VP ,该 VP 就从就绪队列中选取一个线程执行,而选取的标准由内部的优先机制决定。

在特定的时候,当前运行的线程会把对VP 的控制权转移给其它线程。有如下几种可能导致控制权的转移:

等待磁盘读写操作

等待应用进程的请求

等待获得锁或其它资源

将运行机会转给其它线程

一旦线程交出控制权,该线程的context 就将被列入等待或睡眠队列中。所有等待某种操作的线程进入等待队列,而所有需要稍后被唤醒的线程进入睡眠队列。

1.5 磁盘组件

图1-1  动态服务器磁盘构件

3-5 所示。在动态服务器中以页(page )作为基本存储和 I/O 单位。页大小因机器和操作系统的不同而不同,一般为 2k ,也可能为 4k 。用户无法改变页大小。

分配给系统使用的连续磁盘空间的单位称为 chunk chunk 由多个页构成。它是一个典型的 UNIX 原始设备。 chunk 的大小由管理员设定。

数据空间( dbspace )是多个 chunk 的逻辑集合。每一数据空间至少包括一个 chunk 。数据库和表创建在指定的数据空间上。系统必须至少包括一个数据空间: root dbspace 。在该空间中存储着所有关于系统的信息。

物理日志( physical log )由连续的磁盘空间构成,其存储着共享内存缓冲区中所有已修改的数据页的(但尚未写入磁盘中)被修改前的映象。因而物理日志主要用于快速恢复。只有当数据页在首次被修改时,系统才会将其映象写入物理日志。

逻辑日志(logical logs ) 也时由连续的磁盘空间构成,其存储着事务记录、 DDL 语句和 checkpoint 记录。由管理员设定逻辑日志的数目。系统循环使用逻辑日志文件。在系统初启时,物理日志和逻辑日志都自动建立在 root dbspace 上。

  

动态服务器系统由三个主要组件构成:共享内存、进程和磁盘。

动态服务器的共享内存由三个段构成:驻留段、虚拟段和消息段。

虚拟处理器都是可执行可执行程序oninit 的实体。

线程是在oninit 中的一段被执行的指令流。

页是在动态服务器中磁盘组件的基本存储和I/O 单位。

  

3-1  在动态服务器中,线程是 ___________________________

3-2  动态服务器的共享内存由哪几个段组成?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值