在IDS数据库系统中,线程共包含以下几部分:
控制块
- 会话控制块SCB
- 线程控制块TCB
- RSAM线程控制块
堆栈
内存池
下面简单介绍这几部分内容
会话控制块 Session control block
会话控制块包含有关会话的信息。(客户端与服务器)首次建立连接时,数据库服务器会创建一个会话以及一个对应的会话控制块。
线程控制块Thread Control Block
线程控制块包含有关线程的信息。数据库服务器中运行着的每个线程都有一个线程控制块。它包含着线程的以下信息:
1.threadID:线程的唯一标识
2、status:线程的运行状态
3、register:线程关于CPU中寄存器的情况
4、PC程序计数器:线程执行的下一条指令的地址
5、优先级:线程在操作系统调度的时候的优先级
6、线程的专属存储区:线程单独的存储区域
7、用户栈:线程执行的用户方法栈,用来保存线程当前执行的用户方法的信息
8、内核栈:线程执行的内核方法栈,用来保存线程当前执行的内核方法信息。
RSAM线程控制块:
RSAM线程控制块(rstcb)。在数据库服务器中运行着的某些线程需要访问名为RSAM的动态服务器层,该层用于处理磁盘I/O请求、索引管理、页面管理、缓冲区管理和数据复制。一些系统线程和全部的用户线程都需要RSAM线程控制块。
堆栈
堆栈保存着线程执行函数的数据。进程中也有堆栈这一概念,但由于一个进程中运行着多个线程,因此每个线程也要有自己的堆栈。
内存池
内存池并不是线程的一个独立组成部分。实际上,包含堆栈和控制块在内的所有信息都存储在数据库服务器共享内存虚拟部分的内存池中。