[JAVA解惑](美)布洛赫.扫描版
Java解惑,是一本以大量java实例,讲述如何在程序中避免程序缺陷和程序陷阱的,解惑的过程中,介绍了一些Java编程语言中许多不易被掌握的知识点,其阅读价值非常高,适合具有Java知识的学习者和有编程经验的Java程序员阅读。
BackTrack中文指南V10 密码:NEURON
BackTrack是基于Ubuntu的自启动运行光盘,它包含了一套安全及计算机取证工具。它其实是依靠融合Auditor Security Linux和WHAX(先前的Whoppix)而创建成的。
BackTrack是目前为止知名度最高,评价最好的关于信息安全的Linux发行版.它是基于Linux平台并集成安全工具而开发成的Linux Live发行版,旨在帮助网络安全人员对网络骇客行为进行评估.不论您是否把它做为常用系统,或是从光盘或移动硬盘启动,它都可以定制各种安全包, 包括内核配置,脚本和补丁, 以用于入侵检测.[1]
BackTrack是一套信息安全审计专用的Linux发行版, 不论您是信息安全专家还是新手. 它创造了一条可以方便您从世界上最大的安全工具库寻找和更新安全工具的捷径.
用户包括信息安全领域的专业渗透测试人员, 政府雇员, IT人员, 信息安全爱好者以及安全领域的初学者. 来自不同行业, 不同技术水平用户的反馈促使我们开发了这样一个面对多元需求,包括商业和非商业需求的系统.
无论是在渗透无线网络, 服务器, 还是在进行网站安全评估, 或是在学习安全技术, 或是在利用社会工程学获取信息, BackTrack都可以满足您在信息安全方面的需要。
Oracle Solaris Trusted Extensions 配置指南
《OracleSolarisTrustedExtensions配置指南》介绍在Solaris操作系(SolarisOS)中配置TrustedExtensions的过程。该指南还介绍如何准备Solari系统以支持TrustedExtensions的安全安装。
目录
前言........................................................................................................................................................13
1
TrustedExtensions的安全规划 .......................................................................................................19
在TrustedExtensions中规划安全 .................................................................................................. 19
了解TrustedExtensions ............................................................................................................. 20
了解站点的安全策略................................................................................................................. 20
设计TrustedExtensions的管理策略 ...................................................................................... 21
设计标签策略 .............................................................................................................................. 21
规划TrustedExtensions的系统硬件和容量 ......................................................................... 22
规划可信网络 .............................................................................................................................. 22
在TrustedExtensions中规划区域 .......................................................................................... 23
规划多级别访问 ......................................................................................................................... 24
在TrustedExtensions中规划LDAP命名服务 ..................................................................... 25
在TrustedExtensions中规划审计 .......................................................................................... 25
在TrustedExtensions中规划用户安全 ................................................................................. 26
设计TrustedExtensions的配置策略 ...................................................................................... 27
在启用TrustedExtensions之前解决其他问题 .................................................................... 28
在启用TrustedExtensions之前备份系统 ............................................................................. 28
启用TrustedExtensions的结果(从管理员角度) ................................................................... 29
2
TrustedExtensions的配置任务列表...............................................................................................31
任务列表:准备Solaris系统以使用TrustedExtensions ........................................................... 31
任务列表:准备和启用TrustedExtensions ................................................................................. 31
任务列表:配置TrustedExtensions .............................................................................................. 32
3
将TrustedExtensions软件添加到SolarisOS(任务) ..............................................................37
初始设置团队的职责 ........................................................................................................................ 37
3
安装或升级SolarisOS以使用TrustedExtensions ...................................................................... 37
▼ 安装Solaris系统以支持TrustedExtensions ......................................................................... 38
▼ 准备已安装的Solaris系统以使用TrustedExtensions ........................................................ 38
在启用TrustedExtensions之前收集信息并做出决定 ............................................................... 40
▼ 在启用TrustedExtensions之前收集系统信息 .................................................................... 41
▼ 在启用TrustedExtensions之前做出系统和安全决策 ....................................................... 41
启用TrustedExtensions服务........................................................................................................... 43
▼ 启用TrustedExtensions ............................................................................................................. 43
4
配置TrustedExtensions(任务) ...................................................................................................45
在TrustedExtensions中设置全局区域 ......................................................................................... 45
▼ 检查并安装标签编码文件 ........................................................................................................ 46
▼ 在TrustedExtensions中启用IPv6网络................................................................................. 49
▼ 配置系统解释域 ......................................................................................................................... 50
▼ 创建用于克隆区域的ZFS池 ................................................................................................... 51
▼ 重新引导并登录到TrustedExtensions .................................................................................. 52
▼ 在TrustedExtensions中初始化SolarisManagementConsole服务器 ............................. 54
▼ 使全局区域成为TrustedExtensions中的客户机 ................................................................ 57
创建有标签区域 ................................................................................................................................. 60
▼ 运行txzonemgr脚本 .................................................................................................................. 61
▼ 在TrustedExtensions中配置网络接口 ................................................................................. 62
▼ 命名区域并为其添加标签 ........................................................................................................ 65
▼ 安装有标签区域 ......................................................................................................................... 67
▼ 引导有标签区域 ......................................................................................................................... 68
▼ 检验区域的状态 ......................................................................................................................... 70
▼ 定制有标签区域 ......................................................................................................................... 71
▼ 在TrustedExtensions中复制或克隆区域 ............................................................................. 73
将网络接口和路由添加到有标签区域 ......................................................................................... 74
▼ 添加网络接口以路由现有的有标签区域 ............................................................................. 75
▼ 添加不使用全局区域的网络接口以路由现有的有标签区域 .......................................... 77
▼ 在每个有标签区域中配置名称服务高速缓存 ..................................................................... 80
在TrustedExtensions中创建角色和用户..................................................................................... 82
▼ 创建实施职责分离的权限配置文件 ...................................................................................... 82
▼ 在TrustedExtensions中创建安全管理员角色 .................................................................... 85
▼ 创建受限系统管理员角色 ........................................................................................................ 87
目录
OracleSolarisTrustedExtensions配置指南 • 2011年8月
4
▼ 在TrustedExtensions中创建可以承担角色的用户............................................................ 88
▼ 检验TrustedExtensions角色是否有效 ................................................................................. 90
▼ 使用户能够登录到有标签区域 ............................................................................................... 92
在TrustedExtensions中创建起始目录 ......................................................................................... 92
▼ 在TrustedExtensions中创建起始目录服务器 .................................................................... 93
▼ 在TrustedExtensions中使用户能够访问其起始目录 ....................................................... 93
将用户和主机添加到现有可信网络 .............................................................................................. 95
▼ 将NIS用户添加到LDAP服务器............................................................................................ 95
TrustedExtensions配置故障排除................................................................................................... 97
在启用 Trusted Extensions 之后运行了 netservices limited ..........................................97
无法在有标签区域中打开控制台窗口 .................................................................................. 97
有标签区域无法访问X服务器 ............................................................................................... 98
其他TrustedExtensions配置任务 ................................................................................................100
▼ 如何在TrustedExtensions中将文件复制到便携介质 .....................................................100
▼ 如何在TrustedExtensions中从便携介质复制文件..........................................................101
▼ 如何从系统中删除TrustedExtensions ................................................................................102
5
为TrustedExtensions配置LDAP(任务) .................................................................................105
在TrustedExtensions主机上配置LDAP服务器(任务列表) ............................................105
在TrustedExtensions主机上配置LDAP代理服务器(任务列表) ...................................106
在TrustedExtensions系统上配置SunJavaSystemDirectoryServer .....................................106
▼ 收集用于LDAP的DirectoryServer的信息 ........................................................................107
▼ 安装SunJavaSystemDirectoryServer ...................................................................................108
▼为DirectoryServer创建LDAP客户机 .................................................................................110
▼ 配置SunJavaSystemDirectoryServer的日志 .....................................................................112
▼ 为SunJavaSystemDirectoryServer配置多级别端口........................................................113
▼ 置备SunJavaSystemDirectoryServer ...................................................................................114
为现有SunJavaSystemDirectoryServer创建TrustedExtensions代理 ................................116
▼ 创建LDAP代理服务器 ...........................................................................................................116
为LDAP配置SolarisManagementConsole(任务列表) ......................................................117
▼ 向SolarisManagementConsole注册LDAP凭证 ...............................................................118
▼ 使SolarisManagementConsole接受网络通信 ...................................................................118
▼ 在SolarisManagementConsole中编辑LDAP工具箱 ......................................................119
▼ 验证SolarisManagementConsole是否包含TrustedExtensions信息 ...........................120
目录
5
6
配置具有TrustedExtensions的无显示系统(任务) .............................................................123
TrustedExtensions中的无显示系统配置(任务列表) .........................................................123
▼ 在TrustedExtensions中,以root用户身份启用远程登录 ...........................................124
▼ 在TrustedExtensions中以某个角色启用远程登录..........................................................125
▼ 启用从无标签系统进行的远程登录 ....................................................................................127
▼ 使用远程SolarisManagementConsole在文件范围内进行管理 ....................................127
▼ 启用管理GUI的远程显示 .....................................................................................................128
▼ 在TrustedExtensions中使用rlogin或ssh命令登录和管理无显示系统 ..................128
A
站点安全策略 ................................................................................................................................... 131
创建和管理安全策略 ......................................................................................................................131
站点安全策略和TrustedExtensions ............................................................................................132
计算机安全建议 ...............................................................................................................................132
物理安全建议 ...................................................................................................................................133
人员安全建议 ...................................................................................................................................134
常见安全违规 ...................................................................................................................................134
其他安全参考信息 ..........................................................................................................................135
美国政府出版物 .......................................................................................................................135
UNIX安全出版物 ....................................................................................................................135
一般计算机安全出版物 ..........................................................................................................136
一般UNIX出版物 ....................................................................................................................136
B
使用CDE操作在TrustedExtensions中安装区域 ......................................................................137
使用CDE操作将网络接口与区域关联(任务列表) ...........................................................137
▼ 使用CDE操作为系统指定两个IP地址 .............................................................................137
▼ 使用CDE操作为系统指定一个IP地址 .............................................................................139
准备使用CDE操作创建区域(任务列表) .............................................................................140
▼ 使用CDE操作指定区域名称和区域标签 ..........................................................................140
使用CDE操作创建有标签的区域(任务列表) ....................................................................142
▼ 使用CDE操作安装、初始化并引导有标签区域 .............................................................143
▼ 在TrustedCDE中解析本地区域与全局区域间的路由 ...................................................145
▼ 在TrustedExtensions中定制引导的区域 ...........................................................................147
▼ 在TrustedExtensions中使用复制区域方法 .......................................................................148
▼ 在TrustedExtensions中使用克隆区域方法 .......................................................................149
目录
OracleSolarisTrustedExtensions配置指南 • 2011年8月
6
C
TrustedExtensions的配置核对表 .................................................................................................151
用于配置TrustedExtensions的核对表 .......................................................................................151
Solaris 动态跟踪指南
DTrace是一个用于SolarisTM操作系统的全面的动态跟踪框架。DTrace提供一个强大的基础结构,使管理员、开发者和服务人员能简明地回答有关操作系统和用户程序行为的任意问题。《Solaris动态跟踪指南》介绍如何使用DTrace观察、调试和调优系统行为。本书还包含一套完整的关于捆绑的DTrace观察工具和D编程语言的参考资料。
目录
前言........................................................................................................................................................21
1
简介........................................................................................................................................................25
入门 ....................................................................................................................................................... 25
提供器和探测器 ................................................................................................................................. 27
编译和检测过程 ................................................................................................................................. 29
变量和算术表达式 ............................................................................................................................ 30
谓词 ....................................................................................................................................................... 33
输出格式化.......................................................................................................................................... 36
数组 ....................................................................................................................................................... 39
外部符号和类型 ................................................................................................................................. 41
2
类型、运算符和表达式.....................................................................................................................43
标识符名称和关键字 ........................................................................................................................ 43
数据类型和大小 ................................................................................................................................. 44
常量 ....................................................................................................................................................... 46
算术运算符.......................................................................................................................................... 47
关系运算符.......................................................................................................................................... 48
逻辑运算符.......................................................................................................................................... 48
按位运算符.......................................................................................................................................... 49
赋值运算符.......................................................................................................................................... 50
递增和递减运算符 ............................................................................................................................ 51
条件表达式.......................................................................................................................................... 51
类型转换 .............................................................................................................................................. 52
优先级 .................................................................................................................................................. 53
3
3
变量........................................................................................................................................................55
标量变量 .............................................................................................................................................. 55
关联数组 .............................................................................................................................................. 56
线程局部变量 ..................................................................................................................................... 57
子句局部变量 ..................................................................................................................................... 60
内置变量 .............................................................................................................................................. 62
外部变量 .............................................................................................................................................. 64
4
D程序结构 ...........................................................................................................................................67
探测器子句和声明 ............................................................................................................................ 67
探测器说明.......................................................................................................................................... 68
谓词 ....................................................................................................................................................... 69
操作 ....................................................................................................................................................... 69
C预处理程序的用法 ......................................................................................................................... 69
5
指针和数组...........................................................................................................................................71
指针和地址.......................................................................................................................................... 71
指针安全 .............................................................................................................................................. 72
数组声明和存储 ................................................................................................................................. 73
指针和数组关系 ................................................................................................................................. 74
指针运算 .............................................................................................................................................. 75
通用指针 .............................................................................................................................................. 76
多维数组 .............................................................................................................................................. 76
指向DTrace对象的指针 .................................................................................................................. 77
指针和地址空间 ................................................................................................................................. 77
6
字符串 ...................................................................................................................................................79
字符串表示.......................................................................................................................................... 79
字符串常量.......................................................................................................................................... 80
字符串赋值.......................................................................................................................................... 80
字符串转换.......................................................................................................................................... 80
字符串比较.......................................................................................................................................... 81
目录
Solaris动态跟踪指南 • 2008年10月
4
7
结构和联合...........................................................................................................................................83
结构 ....................................................................................................................................................... 83
结构指针 .............................................................................................................................................. 85
联合 ....................................................................................................................................................... 89
成员大小和偏移 ................................................................................................................................. 92
位字段 .................................................................................................................................................. 92
8
类型和常量定义 ..................................................................................................................................95
Typedef ................................................................................................................................................. 95
枚举 ....................................................................................................................................................... 96
内置 ....................................................................................................................................................... 97
类型名称空间 ..................................................................................................................................... 98
9
聚合..................................................................................................................................................... 101
聚合函数 ............................................................................................................................................101
聚合 .....................................................................................................................................................102
列显聚合 ............................................................................................................................................109
数据标准化........................................................................................................................................109
清除聚合 ............................................................................................................................................113
截断聚合 ............................................................................................................................................114
最小化删除........................................................................................................................................115
10
操作和子例程 ................................................................................................................................... 117
操作 .....................................................................................................................................................117
缺省操作 ............................................................................................................................................117
数据记录操作 ...................................................................................................................................118
trace() .......................................................................................................................................118
tracemem() .................................................................................................................................119
printf() .....................................................................................................................................119
printa() .....................................................................................................................................119
stack() .......................................................................................................................................119
ustack() .....................................................................................................................................121
jstack() .....................................................................................................................................125
破坏性操作........................................................................................................................................125
目录
5
处理破坏性操作 .......................................................................................................................125
内核破坏性操作 .......................................................................................................................128
特殊操作 ............................................................................................................................................131
推理操作 ....................................................................................................................................131
exit() .........................................................................................................................................131
子例程 ................................................................................................................................................131
alloca() .....................................................................................................................................131
basename() .................................................................................................................................131
bcopy() .......................................................................................................................................132
cleanpath() ...............................................................................................................................132
copyin() .....................................................................................................................................132
copyinstr() ...............................................................................................................................132
copyinto() .................................................................................................................................133
dirname() ...................................................................................................................................133
msgdsize() .................................................................................................................................133
msgsize() ...................................................................................................................................133
mutex_owned() ...........................................................................................................................133
mutex_owner() ...........................................................................................................................134
mutex_type_adaptive() ..........................................................................................................134
progenyof() ...............................................................................................................................134
rand() .........................................................................................................................................134
rw_iswriter() ...........................................................................................................................135
rw_write_held() ......................................................................................................................135
speculation() ...........................................................................................................................135
strjoin() ...................................................................................................................................135
strlen() .....................................................................................................................................135
11
缓冲区和缓冲 ................................................................................................................................... 137
主体缓冲区........................................................................................................................................137
主体缓冲区策略 ...............................................................................................................................137
switch策略 ................................................................................................................................138
fill策略 ....................................................................................................................................138
ring策略 ....................................................................................................................................139
其他缓冲区........................................................................................................................................140
缓冲区大小........................................................................................................................................140
目录
Solaris动态跟踪指南 • 2008年10月
6
缓冲区调整大小策略 ......................................................................................................................140
12
输出格式化........................................................................................................................................ 143
printf() .............................................................................................................................................143
转换规范 ....................................................................................................................................144
标志说明符 ................................................................................................................................144
宽度和精度说明符 ...................................................................................................................145
大小前缀 ....................................................................................................................................145
转换格式 ....................................................................................................................................146
printa() .............................................................................................................................................147
trace()缺省格式 ............................................................................................................................149
13
推理跟踪 ............................................................................................................................................ 151
推理接口 ............................................................................................................................................151
创建推理 ............................................................................................................................................152
使用推理 ............................................................................................................................................152
提交推理 ............................................................................................................................................153
放弃推理 ............................................................................................................................................153
推理示例 ............................................................................................................................................154
推理选项和调整 ...............................................................................................................................158
14
dtrace(1M)实用程序 .......................................................................................................................161
说明 .....................................................................................................................................................161
选项 .....................................................................................................................................................161
操作数 ................................................................................................................................................166
退出状态 ............................................................................................................................................166
15
脚本..................................................................................................................................................... 167
解释程序文件 ...................................................................................................................................167
宏变量 ................................................................................................................................................168
宏参数 ................................................................................................................................................170
目标进程ID ......................................................................................................................................171
目录
7
16
选项和可调参数 ............................................................................................................................... 173
使用者选项........................................................................................................................................173
修改选项 ............................................................................................................................................175
17
dtrace提供器 ....................................................................................................................................177
BEGIN探测器 .....................................................................................................................................177
END探测器 .........................................................................................................................................178
ERROR探测器 .....................................................................................................................................178
稳定性 ................................................................................................................................................180
18
lockstat提供器................................................................................................................................181
概述 .....................................................................................................................................................181
自适应锁定探测器 ..........................................................................................................................181
旋转锁定探测器 ...............................................................................................................................182
线程锁定 ............................................................................................................................................183
读取器/写入器锁定探测器 ............................................................................................................183
稳定性 ................................................................................................................................................184
19
profile提供器 ..................................................................................................................................185
profile-n探测器 ............................................................................................................................185
tick-n探测器 ...................................................................................................................................188
参数 .....................................................................................................................................................188
计时器分辨率 ...................................................................................................................................188
探测器创建........................................................................................................................................190
稳定性 ................................................................................................................................................190
20
fbt提供器 ..........................................................................................................................................191
探测器 ................................................................................................................................................191
探测器参数........................................................................................................................................192
entry探测器 .............................................................................................................................192
return探测器 ...........................................................................................................................192
示例 .....................................................................................................................................................192
尾部调用优化 ...................................................................................................................................198
汇编函数 ............................................................................................................................................200
目录
Solaris动态跟踪指南 • 2008年10月
8
指令集限制........................................................................................................................................200
x86限制 ......................................................................................................................................200
SPARC限制................................................................................................................................200
断点交互 ............................................................................................................................................200
模块装入 ............................................................................................................................................201
稳定性 ................................................................................................................................................201
21
syscall提供器 ..................................................................................................................................203
探测器 ................................................................................................................................................203
系统调用记时错误 ...................................................................................................................203
子编码的系统调用 ...................................................................................................................203
大文件系统调用 .......................................................................................................................204
专用系统调用 ............................................................................................................................204
参数 .....................................................................................................................................................205
稳定性 ................................................................................................................................................205
22
sdt提供器 ..........................................................................................................................................207
探测器 ................................................................................................................................................207
示例 .....................................................................................................................................................208
创建SDT探测器 ..............................................................................................................................212
声明探测器 ................................................................................................................................212
探测器参数 ................................................................................................................................212
稳定性 ................................................................................................................................................212
23
sysinfo提供器 ..................................................................................................................................215
探测器 ................................................................................................................................................215
参数 .....................................................................................................................................................217
示例 .....................................................................................................................................................219
稳定性 ................................................................................................................................................221
24
vminfo提供器 ....................................................................................................................................223
探测器 ................................................................................................................................................223
参数 .....................................................................................................................................................225
示例 .....................................................................................................................................................225
目录
9
稳定性 ................................................................................................................................................229
25
proc提供器 ........................................................................................................................................231
探测器 ................................................................................................................................................231
参数 .....................................................................................................................................................233
lwpsinfo_t .................................................................................................................................233
psinfo_t .....................................................................................................................................236
示例 .....................................................................................................................................................237
exec..............................................................................................................................................237
start和exit .............................................................................................................................238
lwp-start和lwp-exit ............................................................................................................240
signal-send ...............................................................................................................................242
稳定性 ................................................................................................................................................243
26
sched提供器 ......................................................................................................................................245
探测器 ................................................................................................................................................245
参数 .....................................................................................................................................................247
cpuinfo_t ...................................................................................................................................248
示例 .....................................................................................................................................................248
on-cpu和off-cpu .....................................................................................................................248
enqueue和dequeue ..................................................................................................................256
sleep和wakeup .........................................................................................................................262
preempt、remain-cpu ..............................................................................................................270
change-pri .................................................................................................................................272
tick..............................................................................................................................................274
稳定性 ................................................................................................................................................276
27
io提供器 ............................................................................................................................................277
探测器 ................................................................................................................................................277
参数 .....................................................................................................................................................278
bufinfo_t结构 .........................................................................................................................278
devinfo_t ...................................................................................................................................280
fileinfo_t .................................................................................................................................280
示例 .....................................................................................................................................................281
目录
Solaris动态跟踪指南 • 2008年10月
10
稳定性 ................................................................................................................................................293
28
mib提供器 ..........................................................................................................................................295
探测器 ................................................................................................................................................295
参数 .....................................................................................................................................................307
稳定性 ................................................................................................................................................307
29
fpuinfo提供器 ..................................................................................................................................309
探测器 ................................................................................................................................................309
参数 .....................................................................................................................................................311
稳定性 ................................................................................................................................................311
30
pid提供器 ..........................................................................................................................................313
命名pid探测器 ................................................................................................................................313
函数边界探测器 ...............................................................................................................................314
entry探测器 .............................................................................................................................314
return探测器 ...........................................................................................................................315
函数偏移探测器 ...............................................................................................................................315
稳定性 ................................................................................................................................................315
31
plockstat提供器..............................................................................................................................317
概述 .....................................................................................................................................................317
互斥探测器........................................................................................................................................318
读取器/写入器锁定探测器 ............................................................................................................318
稳定性 ................................................................................................................................................319
32
fasttrap提供器................................................................................................................................321
探测器 ................................................................................................................................................321
稳定性 ................................................................................................................................................321
33
用户进程跟踪 ................................................................................................................................... 323
copyin()和copyinstr()子例程 .................................................................................................323
避免错误 ....................................................................................................................................324
目录
11
消除dtrace(1M)干扰 .....................................................................................................................325
syscall提供器 .................................................................................................................................325
ustack()操作 ...................................................................................................................................326
uregs[]数组 .....................................................................................................................................328
pid提供器 .........................................................................................................................................330
用户函数边界跟踪 ...................................................................................................................330
跟踪任意指令 ............................................................................................................................332
34
为用户应用程序静态定义跟踪 .................................................................................................... 335
选择探测器位置 ...............................................................................................................................335
向应用程序中添加探测器 .............................................................................................................336
定义提供器和探测器...............................................................................................................336
向应用程序代码中添加探测器 .............................................................................................337
生成包含探测器的应用程序 .................................................................................................337
35
安全性 ................................................................................................................................................ 339
权限 .....................................................................................................................................................339
使用DTrace的权限 .........................................................................................................................340
dtrace_proc权限 .............................................................................................................................340
dtrace_user权限 .............................................................................................................................341
dtrace_kernel权限 ........................................................................................................................342
超级用户权限 ...................................................................................................................................342
36
匿名跟踪 ............................................................................................................................................ 343
匿名启用 ............................................................................................................................................343
声明匿名状态 ...................................................................................................................................344
匿名跟踪示例 ...................................................................................................................................344
37
事后跟踪 ............................................................................................................................................ 349
显示DTrace使用者 .........................................................................................................................349
显示跟踪数据 ...................................................................................................................................350
38
性能注意事项 ................................................................................................................................... 353
限制已启用的探测器 ......................................................................................................................353
目录
Solaris动态跟踪指南 • 2008年10月
12
使用聚合 ............................................................................................................................................353
使用可高速缓存的谓词..................................................................................................................354
39
稳定性 ................................................................................................................................................ 357
稳定性级别........................................................................................................................................357
相关性类 ............................................................................................................................................359
接口属性 ............................................................................................................................................360
稳定性计算和报告 ..........................................................................................................................360
稳定性执行........................................................................................................................................362
40
转换器 ................................................................................................................................................ 365
转换器声明........................................................................................................................................365
转换运算符........................................................................................................................................367
进程模型转换器 ...............................................................................................................................368
稳定转换 ............................................................................................................................................368
41
版本控制 ............................................................................................................................................ 369
版本和发行版 ...................................................................................................................................369
版本控制选项 ...................................................................................................................................370
提供器版本控制 ...............................................................................................................................371
编写设备驱动程序
编写设备驱动程序》提供有关为面向字符的设备、面向块的设备、网络设备、SCSI目标和HBA设备以及USB设备开发SolarisolarisOperatingSystem,SolarisOS)驱动程序的信息。本书讨论了如何为符合SolarisOSDDI/DKI(DeviceDriver
Interface/Driver-KernelInterface,设备驱动程序接口/驱动程序内核接口)的所有体系结构开发多线程可重入设备驱动程序。介绍了一种常用的驱动程序编写方法,该方法允许在编写驱动程序时忽略特定于平台的问题,如字节存储顺序(endianness)和数据排序等。
其他主题包括:强化Solaris驱动程序;电源管理;驱动程序自动配置;程控I/O;直接内存访问(DirectMemoryAccess,DMA);设备上下文管理;编译、安装和测试驱动程序;调试驱动程序以及将Solaris驱动程序移植到64位环境。
目录
前言........................................................................................................................................................29
第1部分
针对Solaris平台设计设备驱动程序..............................................................................................35
1
Solaris设备驱动程序概述 ................................................................................................................37
设备驱动程序基础知识.................................................................................................................... 37
什么是设备驱动程序? ............................................................................................................ 37
什么是设备驱动程序入口点? ............................................................................................... 38
设备驱动程序入口点 ........................................................................................................................ 38
通用于所有驱动程序的入口点 ............................................................................................... 39
用于块设备驱动程序的入口点 ............................................................................................... 41
用于字符设备驱动程序的入口点........................................................................................... 42
用于STREAMS设备驱动程序的入口点 ............................................................................... 43
用于内存映射设备的入口点 ................................................................................................... 44
网络设备驱动程序入口点 ........................................................................................................ 45
用于SCSIHBA驱动程序的入口点 ........................................................................................ 45
用于PC卡驱动程序的入口点 ................................................................................................. 46
设备驱动程序设计注意事项 ........................................................................................................... 46
DDI/DKI功能 ............................................................................................................................. 47
驱动程序上下文 ......................................................................................................................... 48
返回错误 ...................................................................................................................................... 49
动态内存分配 .............................................................................................................................. 49
热插拔 ........................................................................................................................................... 50
2
Solaris内核和设备树 .........................................................................................................................51
什么是内核? ..................................................................................................................................... 51
多线程执行环境 ......................................................................................................................... 53
3
虚拟内存 ...................................................................................................................................... 53
作为特殊文件的设备................................................................................................................. 53
DDI/DKI接口 ............................................................................................................................. 53
设备树概述.......................................................................................................................................... 54
设备树组件 .................................................................................................................................. 54
显示设备树 .................................................................................................................................. 56
将驱动程序绑定到设备 ............................................................................................................ 58
3
多线程 ...................................................................................................................................................61
锁定原语 .............................................................................................................................................. 61
驱动程序数据的存储类 ............................................................................................................ 61
互斥锁 ........................................................................................................................................... 62
读取器/写入器锁 ........................................................................................................................ 63
信号 ............................................................................................................................................... 63
线程同步 .............................................................................................................................................. 64
线程同步中的条件变量 ............................................................................................................ 64
cv_wait()和cv_timedwait()函数 ........................................................................................ 65
cv_wait_sig()函数 ................................................................................................................... 66
cv_timedwait_sig()函数 ........................................................................................................ 67
选择锁定方案 ..................................................................................................................................... 67
潜在的锁定缺点 ......................................................................................................................... 68
线程无法接收信号 ..................................................................................................................... 68
4
属性........................................................................................................................................................71
设备属性 .............................................................................................................................................. 71
设备属性名称 .............................................................................................................................. 72
创建和更新属性 ......................................................................................................................... 72
查找属性 ...................................................................................................................................... 72
prop_op()入口点 ....................................................................................................................... 74
5
管理事件和排队任务 .........................................................................................................................77
管理事件 .............................................................................................................................................. 77
事件介绍 ...................................................................................................................................... 77
使用ddi_log_sysevent()记录事件 ...................................................................................... 78
目录
编写设备驱动程序 • 2010年9月
4
定义事件特性 .............................................................................................................................. 80
排队任务 .............................................................................................................................................. 83
任务队列简介 .............................................................................................................................. 83
任务队列接口 .............................................................................................................................. 83
使用任务队列 .............................................................................................................................. 84
观察任务队列 .............................................................................................................................. 84
6
驱动程序自动配置 .............................................................................................................................87
驱动程序的装入和卸载.................................................................................................................... 87
驱动程序必需的数据结构 ............................................................................................................... 88
modlinkage结构 ......................................................................................................................... 88
modldrv结构 ................................................................................................................................ 89
dev_ops结构 ................................................................................................................................ 89
cb_ops结构 .................................................................................................................................. 90
可装入驱动程序接口 ........................................................................................................................ 91
_init()示例 ................................................................................................................................ 92
_fini()示例 ................................................................................................................................ 93
_info()示例 ................................................................................................................................ 93
设备配置概念 ..................................................................................................................................... 94
设备实例和实例编号................................................................................................................. 94
次要节点和次要设备号 ............................................................................................................ 95
probe()入口点 ........................................................................................................................... 95
attach()入口点 ......................................................................................................................... 97
detach()入口点 .......................................................................................................................102
getinfo()入口点 .....................................................................................................................103
使用设备ID ......................................................................................................................................105
注册设备ID ...............................................................................................................................105
注销设备ID ...............................................................................................................................106
7
设备访问:程控I/O..........................................................................................................................107
设备内存 ............................................................................................................................................107
管理设备和主机字节序之间的差别 ....................................................................................108
管理数据排序要求 ...................................................................................................................108
ddi_device_acc_attr结构 ....................................................................................................108
映射设备内存 ............................................................................................................................109
目录
5
映射设置示例 ............................................................................................................................109
设备访问函数 ...................................................................................................................................110
备用设备访问接口 ...................................................................................................................111
8
中断处理程序 ................................................................................................................................... 113
中断处理程序概述 ..........................................................................................................................113
设备中断 ............................................................................................................................................114
高级别中断 ................................................................................................................................114
传统中断 ....................................................................................................................................115
标准消息告知中断和扩展消息告知中断 ...........................................................................115
软件中断 ....................................................................................................................................116
DDI中断函数 ...................................................................................................................................117
中断功能函数 ............................................................................................................................117
中断初始化和销毁函数 ..........................................................................................................117
优先级管理函数 .......................................................................................................................118
软中断函数 ................................................................................................................................118
中断函数示例 ............................................................................................................................118
注册中断 ............................................................................................................................................119
注册传统中断 ............................................................................................................................119
注册MSI中断 ...........................................................................................................................122
中断资源管理 ...................................................................................................................................125
中断资源管理功能 ...................................................................................................................125
回调接口 ....................................................................................................................................126
中断请求接口 ............................................................................................................................128
中断资源管理实现样例 ..........................................................................................................130
中断处理程序功能 ..........................................................................................................................135
处理高级别中断 ...............................................................................................................................137
高级互斥锁 ................................................................................................................................137
高级别中断处理示例...............................................................................................................137
9
直接内存访问(DirectMemoryAccess,DMA) ..............................................................................141
DMA模型 ..........................................................................................................................................141
设备DMA的类型 ............................................................................................................................142
总线主控器DMA .....................................................................................................................142
第三方DMA ..............................................................................................................................142
目录
编写设备驱动程序 • 2010年9月
6
第一方DMA ..............................................................................................................................143
主机平台DMA的类型 ...................................................................................................................143
DMA软件组件:句柄、窗口和Cookie .....................................................................................143
DMA操作 ..........................................................................................................................................144
执行总线主控器DMA传送 ...................................................................................................144
执行第一方DMA传送 ............................................................................................................144
执行第三方DMA传送 ............................................................................................................145
DMA特性 ..................................................................................................................................145
管理DMA资源 ................................................................................................................................148
对象锁定 ....................................................................................................................................148
分配DMA句柄 .........................................................................................................................148
分配DMA资源 .........................................................................................................................149
确定最大突发流量大小 ..........................................................................................................151
分配专用DMA缓冲区 ............................................................................................................152
处理资源分配故障 ...................................................................................................................153
对DMA引擎进行编程 ............................................................................................................154
释放DMA资源 .........................................................................................................................155
释放DMA句柄 .........................................................................................................................156
取消DMA回调 .........................................................................................................................156
同步内存对象 ............................................................................................................................157
DMA窗口 ..........................................................................................................................................159
10
映射设备和内核内存 ...................................................................................................................... 163
内存映射概述 ...................................................................................................................................163
导出映射 ............................................................................................................................................163
segmap(9E)入口点 ....................................................................................................................163
devmap(9E)入口点 ....................................................................................................................165
将设备内存与用户映射相关联 ....................................................................................................166
将内核内存与用户映射相关联 ....................................................................................................168
为用户访问分配内核内存 ......................................................................................................168
将内核内存导出到应用程序 .................................................................................................170
释放为用户访问导出的内核内存.........................................................................................171
11
设备上下文管理 ............................................................................................................................... 173
设备上下文简介 ...............................................................................................................................173
目录
7
什么是设备上下文?...............................................................................................................173
上下文管理模型 .......................................................................................................................173
上下文管理操作 ...............................................................................................................................175
devmap_callback_ctl结构 ....................................................................................................175
用于设备上下文管理的入口点 .............................................................................................176
将用户映射与驱动程序通知关联.........................................................................................183
管理映射访问 ............................................................................................................................184
12
电源管理 ............................................................................................................................................ 187
电源管理框架 ...................................................................................................................................187
设备电源管理 ............................................................................................................................187
系统电源管理 ............................................................................................................................188
设备电源管理模型 ..........................................................................................................................188
电源管理组件 ............................................................................................................................189
电源管理状态 ............................................................................................................................189
电源级别 ....................................................................................................................................189
电源管理相关性 .......................................................................................................................191
设备的自动电源管理...............................................................................................................191
设备电源管理接口 ...................................................................................................................192
power()入口点 .........................................................................................................................193
系统电源管理模型 ..........................................................................................................................195
自动关闭阈值 ............................................................................................................................196
繁忙状态 ....................................................................................................................................196
硬件状态 ....................................................................................................................................196
系统的自动电源管理...............................................................................................................196
系统电源管理使用的入口点 .................................................................................................196
电源管理设备访问示例..................................................................................................................200
电源管理控制流程 ..........................................................................................................................201
电源管理接口的更改 ......................................................................................................................202
13
强化Solaris驱动程序 ......................................................................................................................205
Sun故障管理体系结构I/O故障服务 .........................................................................................205
什么是预测性自我修复? ......................................................................................................206
SolarisFaultManager ................................................................................................................206
错误处理 ....................................................................................................................................209
目录
编写设备驱动程序 • 2010年9月
8
诊断故障 ....................................................................................................................................222
事件注册表 ................................................................................................................................223
词汇表 .........................................................................................................................................223
资源 .............................................................................................................................................224
用于Solaris设备驱动程序的防御性编程方法 ..........................................................................224
使用单独的设备驱动程序实例 .............................................................................................225
独占使用DDI访问句柄 .........................................................................................................225
检测已损坏的数据 ...................................................................................................................225
DMA隔离 ..................................................................................................................................226
处理有问题的中断 ...................................................................................................................227
其他编程注意事项 ...................................................................................................................228
驱动程序强化测试工具..................................................................................................................229
故障注入 ....................................................................................................................................229
设置测试工具 ............................................................................................................................230
测试驱动程序 ............................................................................................................................231
使用脚本自动完成测试过程 .................................................................................................233
14
分层驱动程序接口(LayeredDriverInterface,LDI) ....................................................................237
LDI概述 .............................................................................................................................................237
内核接口 ............................................................................................................................................238
分层标识符-内核设备使用方 .............................................................................................238
分层驱动程序句柄-目标设备 .............................................................................................239
LDI内核接口示例 ....................................................................................................................242
用户接口 ............................................................................................................................................253
设备信息库接口 .......................................................................................................................253
列显系统配置命令接口 ..........................................................................................................254
设备用户命令接口 ...................................................................................................................257
第2部分
设计特定种类的设备驱动程序 .....................................................................................................259
15
字符设备驱动程序 .......................................................................................................................... 261
字符驱动程序结构概述..................................................................................................................261
字符设备自动配置 ..........................................................................................................................263
设备访问(字符驱动程序) .........................................................................................................264
目录
9
open()入口点(字符驱动程序) ........................................................................................264
close()入口点(字符驱动程序) ......................................................................................265
I/O请求处理 .....................................................................................................................................266
用户地址 ....................................................................................................................................266
向量化的I/O .............................................................................................................................266
同步I/O与异步I/O之间的差别 ..........................................................................................268
数据传输方法 ............................................................................................................................268
映射设备内存 ...................................................................................................................................274
对文件描述符执行多路复用I/O操作 ........................................................................................275
其他I/O控制 ....................................................................................................................................277
ioctl()入口点(字符驱动程序) ......................................................................................277
对有64位处理能力的设备驱动程序的I/O控制支持 .....................................................279
处理copyout()溢出 ................................................................................................................281
32位和64位数据结构宏................................................................................................................282
结构宏如何工作? ...................................................................................................................282
何时使用结构宏 .......................................................................................................................283
声明并初始化结构句柄 ..........................................................................................................283
结构句柄的操作 .......................................................................................................................283
其他操作 ....................................................................................................................................284
16
块设备驱动程序 ............................................................................................................................... 285
块驱动程序结构概述 ......................................................................................................................285
文件I/O ..............................................................................................................................................286
块设备自动配置 ...............................................................................................................................287
控制设备访问 ...................................................................................................................................288
open()入口点(块驱动程序) .............................................................................................288
close()入口点(块驱动程序)...........................................................................................290
strategy()入口点 ...................................................................................................................290
buf结构 ......................................................................................................................................291
同步数据传输(块驱动程序) ....................................................................................................292
异步数据传输(块驱动程序) ....................................................................................................296
检查是否有无效的buf请求 ..................................................................................................296
对请求进行排队 .......................................................................................................................296
开始第一个传输 .......................................................................................................................297
处理中断的设备 .......................................................................................................................298
目录
编写设备驱动程序 • 2010年9月
10
dump()和print()入口点 ..............................................................................................................299
dump()入口点(块驱动程序) .............................................................................................300
print()入口点(块驱动程序)...........................................................................................300
磁盘设备驱动程序 ..........................................................................................................................300
磁盘ioctl ..................................................................................................................................301
磁盘性能 ....................................................................................................................................301
17
SCSI目标驱动程序 ...........................................................................................................................303
目标驱动程序介绍 ..........................................................................................................................303
Sun公用SCSI体系结构概述 .........................................................................................................304
常规控制流程 ............................................................................................................................305
SCSA函数 ..................................................................................................................................305
硬件配置文件 ...................................................................................................................................306
声明和数据结构 ...............................................................................................................................307
scsi_device结构 .....................................................................................................................307
scsi_pkt结构(目标驱动程序) ........................................................................................308
SCSI目标驱动程序的自动配置 ....................................................................................................309
probe()入口点(SCSI目标驱动程序) .............................................................................310
attach()入口点(SCSI目标驱动程序) ...........................................................................311
detach()入口点(SCSI目标驱动程序) ...........................................................................314
getinfo()入口点(SCSI目标驱动程序).........................................................................314
资源分配 ............................................................................................................................................315
scsi_init_pkt()函数 .............................................................................................................315
scsi_sync_pkt()函数 .............................................................................................................316
scsi_destroy_pkt()函数 ......................................................................................................316
scsi_alloc_consistent_buf()函数 ...................................................................................316
scsi_free_consistent_buf()函数......................................................................................317
生成和传输命令 ...............................................................................................................................317
生成命令 ....................................................................................................................................317
设置目标功能 ............................................................................................................................318
传输命令 ....................................................................................................................................318
命令完成 ....................................................................................................................................319
重新使用包 ................................................................................................................................320
自动请求检测模式 ...................................................................................................................321
转储处理 ....................................................................................................................................322
目录
11
SCSI选项 ...........................................................................................................................................324
18
SCSI主机总线适配器驱动程序 .....................................................................................................327
主机总线适配器驱动程序介绍 ....................................................................................................327
SCSI接口 ...........................................................................................................................................328
SCSAHBA接口 ................................................................................................................................329
SCSAHBA入口点摘要 ...........................................................................................................329
SCSAHBA数据结构 ................................................................................................................330
按目标实例的数据 ...................................................................................................................335
传输结构克隆 ............................................................................................................................336
SCSAHBA函数 .........................................................................................................................337
HBA驱动程序的相关性和配置问题 ...........................................................................................338
声明和结构 ................................................................................................................................338
模块初始化入口点 ...................................................................................................................339
自动配置入口点 .......................................................................................................................341
SCSAHBA驱动程序入口点 ..........................................................................................................344
目标驱动程序实例初始化 ......................................................................................................345
资源分配 ....................................................................................................................................347
命令传输 ....................................................................................................................................356
功能管理 ....................................................................................................................................362
中止和重置管理 .......................................................................................................................366
动态重新配置 ............................................................................................................................368
SCSIHBA驱动程序特定问题 .......................................................................................................369
安装HBA驱动程序 .................................................................................................................369
HBA配置属性 ...........................................................................................................................370
x86目标驱动程序配置属性 ...................................................................................................371
排队支持 ............................................................................................................................................372
19
网络设备驱动程序 .......................................................................................................................... 373
GLDv3网络设备驱动程序框架 ....................................................................................................373
GLDv3MAC注册 .....................................................................................................................373
GLDv3功能 ...............................................................................................................................377
GLDv3数据路径 .......................................................................................................................380
GLDv3状态更改通知 ..............................................................................................................382
GLDv3网络统计信息 ..............................................................................................................382
目录
编写设备驱动程序 • 2010年9月
12
GLDv3属性 ...............................................................................................................................383
GLDv3接口汇总 .......................................................................................................................384
GLDv2网络设备驱动程序框架 ....................................................................................................386
GLDv2设备支持 .......................................................................................................................387
GLDv2DLPI提供者 .................................................................................................................388
GLDv2DLPI原语 .....................................................................................................................389
GLDv2I/O控制函数 ................................................................................................................390
GLDv2驱动程序需求 ..............................................................................................................391
GLDv2网络统计信息 ..............................................................................................................392
GLDv2声明和数据结构..........................................................................................................395
GLDv2函数参数 .......................................................................................................................399
GLDv2入口点 ...........................................................................................................................400
GLDv2返回值 ...........................................................................................................................403
GLDv2服务例程 .......................................................................................................................403
20
USB驱动程序.....................................................................................................................................407
Solaris环境中的USB .......................................................................................................................407
USBA2.0框架 ............................................................................................................................407
USB客户机驱动程序 ...............................................................................................................408
绑定客户机驱动程序 ......................................................................................................................410
USB设备如何显示在系统中 .................................................................................................410
USB设备和Solaris设备树 ......................................................................................................410
兼容设备名称 ............................................................................................................................410
具有多个接口的设备...............................................................................................................412
检查设备驱动程序绑定 ..........................................................................................................413
基本设备访问 ...................................................................................................................................413
连接客户机驱动程序之前 ......................................................................................................413
描述符树 ....................................................................................................................................413
注册驱动程序以获取设备访问权限 ....................................................................................415
设备通信 ............................................................................................................................................416
USB端点.....................................................................................................................................416
缺省管道 ....................................................................................................................................417
管道状态 ....................................................................................................................................417
打开管道 ....................................................................................................................................417
关闭管道 ....................................................................................................................................418
目录
13
数据传输 ....................................................................................................................................418
刷新管道 ....................................................................................................................................424
设备状态管理 ...................................................................................................................................424
热插拔USB设备.......................................................................................................................425
电源管理 ....................................................................................................................................427
序列化 .........................................................................................................................................431
实用程序函数 ...................................................................................................................................431
设备配置工具 ............................................................................................................................431
其他实用程序函数 ...................................................................................................................433
USB设备驱动程序样例 ..................................................................................................................434
第3部分
生成设备驱动程序 ...........................................................................................................................435
21
编译、装入、打包和测试驱动程序............................................................................................ 437
驱动程序开发摘要 ..........................................................................................................................437
驱动程序代码布局 ..........................................................................................................................438
头文件 .........................................................................................................................................438
源文件 .........................................................................................................................................439
配置文件 ....................................................................................................................................439
准备安装驱动程序 ..........................................................................................................................440
编译和链接驱动程序...............................................................................................................440
模块相关性 ................................................................................................................................441
编写硬件配置文件 ...................................................................................................................442
安装、更新和删除驱动程序 .........................................................................................................442
将驱动程序复制到模块目录 .................................................................................................442
使用add_drv安装驱动程序...................................................................................................443
更新驱动程序信息 ...................................................................................................................444
删除驱动程序 ............................................................................................................................444
装入和卸载驱动程序 ......................................................................................................................444
驱动程序打包 ...................................................................................................................................445
软件包后安装 ............................................................................................................................445
软件包预删除 ............................................................................................................................446
驱动程序测试条件 ..........................................................................................................................447
配置测试 ....................................................................................................................................447
功能测试 ....................................................................................................................................447
目录
编写设备驱动程序 • 2010年9月
14
错误处理 ....................................................................................................................................447
测试装入和卸载 .......................................................................................................................448
压力、性能和互操作性测试 .................................................................................................448
DDI/DKI兼容性测试 ..............................................................................................................449
安装和打包测试 .......................................................................................................................449
测试特定类型驱动程序 ..........................................................................................................449
22
调试、测试和调优设备驱动程序 ................................................................................................ 451
测试驱动程序 ...................................................................................................................................451
启用Deadman功能以避免硬挂起 .......................................................................................451
使用串行连接进行测试 ..........................................................................................................452
设置测试模块 ............................................................................................................................454
避免测试系统中发生数据丢失 .............................................................................................456
恢复设备目录 ............................................................................................................................458
调试工具 ............................................................................................................................................459
事后调试 ....................................................................................................................................460
使用kmdb内核调试程序 .........................................................................................................460
使用mdb模块调试程序 ...........................................................................................................463
使用kmdb和mdb执行的有用调试任务 ...............................................................................464
调优驱动程序 ...................................................................................................................................471
内核统计信息 ............................................................................................................................471
用于动态检测过程的DTrace.................................................................................................476
23
推荐的编码方法 ............................................................................................................................... 477
调试准备方法 ...................................................................................................................................477
使用唯一前缀来避免内核符号冲突 ....................................................................................477
使用cmn_err()记录驱动程序活动......................................................................................478
使用ASSERT()捕捉无效假设 ................................................................................................478
使用mutex_owned()验证和记录锁定要求 .........................................................................478
使用条件编译在开销较大的调试功能之间切换 ..............................................................479
将变量声明为可变变量..................................................................................................................480
可维护性 ............................................................................................................................................481
定期运行状况检查 ...................................................................................................................481
Solaris链接程序和库指南
《多线程编程指南》介绍了SolarisTM操(SolarisOperatingSystem,SolarisOS中
POSIX®线程和Solaris线程的多线程编程接口。本指南将指导应用程序程序员如何创建新的多线程程序以及如何向现有的程序中添加多线程。尽管本指南同时介绍POSIX线程接口和Solaris线程接口,但大多数主题都以POSIX线程为重点。仅适用Solaris线程的信息将专门在一章中介绍。
目录
前言........................................................................................................................................................11
1
多线程基础介绍 ..................................................................................................................................15
定义多线程术语 ................................................................................................................................. 15
符合多线程标准 ................................................................................................................................. 16
多线程的益处 ..................................................................................................................................... 17
提高应用程序的响应................................................................................................................. 17
有效使用多处理器 ..................................................................................................................... 17
改进程序结构 .............................................................................................................................. 17
占用较少的系统资源................................................................................................................. 17
结合线程和RPC(远程过程调用) ...................................................................................... 18
多线程概念.......................................................................................................................................... 18
并发性和并行性 ......................................................................................................................... 18
多线程结构一览 ......................................................................................................................... 18
线程调度 ...................................................................................................................................... 19
线程取消 ...................................................................................................................................... 19
线程同步 ...................................................................................................................................... 20
使用64位体系结构 ........................................................................................................................... 20
2
基本线程编程 ......................................................................................................................................23
线程库 .................................................................................................................................................. 23
创建缺省线程 .............................................................................................................................. 23
等待线程终止 .............................................................................................................................. 25
简单线程的示例 ......................................................................................................................... 26
分离线程 ...................................................................................................................................... 28
为线程特定数据创建键 ............................................................................................................ 29
删除线程特定数据键................................................................................................................. 30
3
设置线程特定数据 ..................................................................................................................... 31
获取线程特定数据 ..................................................................................................................... 32
获取线程标识符 ......................................................................................................................... 36
比较线程ID ................................................................................................................................. 36
初始化线程 .................................................................................................................................. 37
停止执行线程 .............................................................................................................................. 38
设置线程的优先级 ..................................................................................................................... 38
获取线程的优先级 ..................................................................................................................... 39
向线程发送信号 ......................................................................................................................... 40
访问调用线程的信号掩码 ........................................................................................................ 41
安全地Fork .................................................................................................................................. 42
终止线程 ...................................................................................................................................... 42
结束 ............................................................................................................................................... 43
取消线程 ...................................................................................................................................... 43
取消线程 ...................................................................................................................................... 45
启用或禁用取消功能................................................................................................................. 45
设置取消类型 .............................................................................................................................. 46
创建取消点 .................................................................................................................................. 47
将处理程序推送到栈上 ............................................................................................................ 48
从栈中弹出处理程序................................................................................................................. 48
3
线程属性 ...............................................................................................................................................51
属性对象 .............................................................................................................................................. 51
初始化属性 .................................................................................................................................. 52
销毁属性 ...................................................................................................................................... 53
设置分离状态 .............................................................................................................................. 54
获取分离状态 .............................................................................................................................. 55
设置栈溢出保护区大小 ............................................................................................................ 56
获取栈溢出保护区大小 ............................................................................................................ 57
设置范围 ...................................................................................................................................... 58
获取范围 ...................................................................................................................................... 59
设置线程并行级别 ..................................................................................................................... 60
获取线程并行级别 ..................................................................................................................... 60
设置调度策略 .............................................................................................................................. 61
获取调度策略 .............................................................................................................................. 62
目录
多线程编程指南 • 2006年10月
4
设置继承的调度策略................................................................................................................. 63
获取继承的调度策略................................................................................................................. 64
设置调度参数 .............................................................................................................................. 64
获取调度参数 .............................................................................................................................. 65
设置栈大小 .................................................................................................................................. 67
获取栈大小 .................................................................................................................................. 68
关于栈 ........................................................................................................................................... 69
设置栈地址和大小 ..................................................................................................................... 71
获取栈地址和大小 ..................................................................................................................... 73
4
用同步对象编程 ..................................................................................................................................75
互斥锁属性.......................................................................................................................................... 76
初始化互斥锁属性对象 ............................................................................................................ 77
销毁互斥锁属性对象................................................................................................................. 78
设置互斥锁的范围 ..................................................................................................................... 79
获取互斥锁的范围 ..................................................................................................................... 80
设置互斥锁类型的属性 ............................................................................................................ 80
获取互斥锁的类型属性 ............................................................................................................ 82
设置互斥锁属性的协议 ............................................................................................................ 82
获取互斥锁属性的协议 ............................................................................................................ 84
设置互斥锁属性的优先级上限 ............................................................................................... 85
获取互斥锁属性的优先级上限 ............................................................................................... 86
设置互斥锁的优先级上限 ........................................................................................................ 87
获取互斥锁的优先级上限 ........................................................................................................ 88
设置互斥锁的强健属性 ............................................................................................................ 89
获取互斥锁的强健属性 ............................................................................................................ 90
使用互斥锁.......................................................................................................................................... 91
初始化互斥锁 .............................................................................................................................. 92
使互斥保持一致 ......................................................................................................................... 93
锁定互斥锁 .................................................................................................................................. 94
解除锁定互斥锁 ......................................................................................................................... 96
使用非阻塞互斥锁锁定 ............................................................................................................ 97
销毁互斥锁 .................................................................................................................................. 98
互斥锁定的代码示例................................................................................................................. 99
条件变量属性 ...................................................................................................................................105
目录
5
初始化条件变量属性...............................................................................................................106
删除条件变量属性 ...................................................................................................................106
设置条件变量的范围...............................................................................................................107
获取条件变量的范围...............................................................................................................108
使用条件变量 ...................................................................................................................................109
初始化条件变量 .......................................................................................................................109
基于条件变量阻塞 ...................................................................................................................111
解除阻塞一个线程 ...................................................................................................................112
在指定的时间之前阻塞 ..........................................................................................................114
在指定的时间间隔内阻塞 ......................................................................................................116
解除阻塞所有线程 ...................................................................................................................117
销毁条件变量状态 ...................................................................................................................119
唤醒丢失问题 ............................................................................................................................120
生成方和使用者问题...............................................................................................................120
使用信号进行同步 ..........................................................................................................................124
命名信号和未命名信号 ..........................................................................................................125
计数信号量概述 .......................................................................................................................125
初始化信号 ................................................................................................................................126
增加信号 ....................................................................................................................................128
基于信号计数进行阻塞 ..........................................................................................................129
减小信号计数 ............................................................................................................................129
销毁信号状态 ............................................................................................................................130
使用信号时的生成方和使用者问题 ....................................................................................131
读写锁属性........................................................................................................................................133
初始化读写锁属性 ...................................................................................................................134
销毁读写锁属性 .......................................................................................................................134
设置读写锁属性 .......................................................................................................................135
获取读写锁属性 .......................................................................................................................136
使用读写锁........................................................................................................................................136
初始化读写锁 ............................................................................................................................137
获取读写锁中的读锁...............................................................................................................138
读取非阻塞读写锁中的锁 ......................................................................................................139
写入读写锁中的锁 ...................................................................................................................139
写入非阻塞读写锁中的锁 ......................................................................................................140
解除锁定读写锁 .......................................................................................................................140
销毁读写锁 ................................................................................................................................141
目录
多线程编程指南 • 2006年10月
6
跨进程边界同步 ...............................................................................................................................142
生成方和使用者问题示例 ......................................................................................................142
比较元语 ............................................................................................................................................145
5
使用Solaris软件编程 ......................................................................................................................147
进程创建中的fork问题 .................................................................................................................147
Fork-One模型 ...........................................................................................................................148
Fork-all模型 ..............................................................................................................................151
选择正确的Fork .......................................................................................................................151
进程创建:exec和exit问题 .......................................................................................................152
计时器、报警与剖析 ......................................................................................................................152
每LWPPOSIX计时器 .............................................................................................................152
每线程报警 ................................................................................................................................153
剖析多线程程序 .......................................................................................................................153
非本地转向:setjmp和longjmp ..................................................................................................154
资源限制 ............................................................................................................................................154
LWP和调度类 ..................................................................................................................................154
分时调度 ....................................................................................................................................155
实时调度 ....................................................................................................................................155
公平共享调度程序 ...................................................................................................................155
固定优先级调度 .......................................................................................................................156
扩展传统信号 ...................................................................................................................................156
同步信号 ....................................................................................................................................157
异步信号 ....................................................................................................................................157
延续语义 ....................................................................................................................................157
对信号执行的操作 ...................................................................................................................158
定向于线程的信号 ...................................................................................................................160
完成语义 ....................................................................................................................................162
信号处理程序和异步信号安全 .............................................................................................163
中断对条件变量的等待 ..........................................................................................................165
I/O问题 ..............................................................................................................................................166
I/O作为远程过程调用 ............................................................................................................167
人为的异步性 ............................................................................................................................167
异步I/O ......................................................................................................................................167
共享的I/O和新的I/O系统调用 ..........................................................................................169
目录
7
getc和putc的替代项 .............................................................................................................169
6
安全和不安全的接口 ...................................................................................................................... 171
线程安全 ............................................................................................................................................171
MT接口安全级别 ............................................................................................................................173
不安全接口的可重复执行函数 .............................................................................................174
异步信号安全函数 ..........................................................................................................................175
库的MT安全级别 ...........................................................................................................................175
不安全库 ....................................................................................................................................176
7
编译和调试........................................................................................................................................ 177
编译多线程应用程序 ......................................................................................................................177
为编译做准备 ............................................................................................................................177
选择Solaris语义或POSIX语义 ............................................................................................178
包括<thread.h>或<pthread.h> ..........................................................................................178
定义_REENTRANT或_POSIX_C_SOURCE ..................................................................................179
使用libthread或libpthread链接 .....................................................................................179
与POSIX信号的-lrt链接 ....................................................................................................181
将原有模块与新模块链接 ......................................................................................................181
备用线程库........................................................................................................................................181
调试多线程程序 ...............................................................................................................................181
多线程程序中常见的疏忽性问题.........................................................................................181
使用TNF实用程序跟踪和调试 ............................................................................................182
使用truss ..................................................................................................................................182
使用mdb ......................................................................................................................................182
使用dbx ......................................................................................................................................183
8
Solaris线程编程 ................................................................................................................................185
比较Solaris线程和POSIX线程的API .......................................................................................185
API的主要差异 ........................................................................................................................185
函数比较表 ................................................................................................................................186
Solaris线程的独有函数 ..................................................................................................................189
暂停执行线程 ............................................................................................................................190
继续执行暂停的线程...............................................................................................................191
目录
多线程编程指南 • 2006年10月
8
相似的同步函数-读写锁 .............................................................................................................192
初始化读写锁 ............................................................................................................................192
获取读锁 ....................................................................................................................................194
尝试获取读锁 ............................................................................................................................194
获取写锁 ....................................................................................................................................195
尝试获取写锁 ............................................................................................................................196
解除锁定读写锁 .......................................................................................................................196
销毁读写锁的状态 ...................................................................................................................197
相似的Solaris线程函数 .................................................................................................................199
创建线程 ....................................................................................................................................199
获取最小栈大小 .......................................................................................................................201
获取线程标识符 .......................................................................................................................202
停止执行线程 ............................................................................................................................202
向线程发送信号 .......................................................................................................................203
访问调用线程的信号掩码 ......................................................................................................203
终止线程 ....................................................................................................................................204
等待线程终止 ............................................................................................................................204
创建线程特定的数据键 ..........................................................................................................206
设置线程特定的数据值 ..........................................................................................................207
获取线程特定的数据值 ..........................................................................................................208
设置线程的优先级 ...................................................................................................................208
获取线程的优先级 ...................................................................................................................210
相似的同步函数-互斥锁 .............................................................................................................210
初始化互斥锁 ............................................................................................................................210
销毁互斥锁 ................................................................................................................................213
获取互斥锁 ................................................................................................................................213
释放互斥锁 ................................................................................................................................214
尝试获取互斥锁 .......................................................................................................................214
相似的同步函数:条件变量 .........................................................................................................215
初始化条件变量 .......................................................................................................................215
销毁条件变量 ............................................................................................................................216
等待条件 ....................................................................................................................................217
等待绝对时间 ............................................................................................................................218
等待时间间隔 ............................................................................................................................218
解除阻塞一个线程 ...................................................................................................................219
解除阻塞所有线程 ...................................................................................................................220
目录
9
相似的同步函数:信号..................................................................................................................220
初始化信号 ................................................................................................................................220
增加信号 ....................................................................................................................................222
基于信号计数阻塞 ...................................................................................................................222
减小信号计数 ............................................................................................................................223
销毁信号状态 ............................................................................................................................224
跨进程边界同步 ...............................................................................................................................224
生成方和使用者问题示例 ......................................................................................................224
fork()和Solaris线程的特殊问题................................................................................................227
9
编程原则 ............................................................................................................................................ 229
重新考虑全局变量 ..........................................................................................................................229
提供静态局部变量 ..........................................................................................................................230
同步线程 ............................................................................................................................................231
单线程策略 ................................................................................................................................232
可重复执行函数 .......................................................................................................................232
避免死锁 ............................................................................................................................................234
与调用相关的死锁 ...................................................................................................................235
锁定原则 ....................................................................................................................................235
线程代码的一些基本原则 .............................................................................................................236
创建和使用线程 ...............................................................................................................................236
使用多处理器 ...................................................................................................................................237
基础体系结构 ............................................................................................................................237
线程程序示例 ...................................................................................................................................241
需要进一步阅读的内容 ..........................................................................................................241
A
样例应用程序:多线程grep .........................................................................................................243
tgrep的说明 .....................................................................................................................................243
B
Solaris线程示例:barrier.c........................................................................................................301
Solaris系统管理指南:高级管理
《系统管理指南:高级管理》是介绍OracleSolaris系统管理信息重要内容的一套文档中的组成部分。该指南包含基于SPARC和基于x86的系统的信息。
本书假设您已经安装了OracleSolaris操作系统(operatingsystem,OS)。同时假设您已经设置了任何计划使用的网络软件。
目录
前言........................................................................................................................................................15
1
管理终端和调制解调器(概述) ...................................................................................................19
管理终端和调制解调器方面的新增功能 ..................................................................................... 19
SPARC:相关控制台 ................................................................................................................... 19
SPARC:对如何设置控制台的$TERM值的更改 ................................................................. 20
系统控制台上由SMF管理的ttymon调用 ........................................................................... 20
终端、调制解调器、端口和服务 .................................................................................................. 20
终端描述 ...................................................................................................................................... 21
调制解调器描述 ......................................................................................................................... 21
端口描述 ...................................................................................................................................... 21
服务描述 ...................................................................................................................................... 22
端口监视器 .................................................................................................................................. 22
终端和调制解调器的管理工具 ...................................................................................................... 22
串行端口工具 .............................................................................................................................. 23
服务访问工具概述 ..................................................................................................................... 23
2
设置终端和调制解调器(任务) ...................................................................................................25
设置终端和调制解调器(任务列表) ......................................................................................... 25
使用串行端口工具设置终端和调制解调器(概述) ............................................................... 26
设置终端 ...................................................................................................................................... 26
设置调制解调器 ......................................................................................................................... 27
如何设置终端、调制解调器和初始化端口(任务) ............................................................... 29
▼ 如何设置终端 .............................................................................................................................. 29
▼ 如何设置调制解调器................................................................................................................. 30
▼ 如何初始化端口 ......................................................................................................................... 31
解决终端和调制解调器问题 ........................................................................................................... 31
3
3
使用服务访问工具管理串行端口(任务) .................................................................................33
管理串行端口(任务列表) ........................................................................................................... 34
使用服务访问工具 ............................................................................................................................ 34
整体SAF管理(sacadm) .................................................................................................................... 35
服务访问控制器(SAC程序) ............................................................................................... 35
SAC初始化进程 ......................................................................................................................... 36
端口监视器服务管理(pmadm) .......................................................................................................... 36
ttymon端口监视器 ..................................................................................................................... 36
端口初始化进程 ......................................................................................................................... 37
双向服务 ...................................................................................................................................... 37
TTY监视器和网络侦听器端口监视器 ......................................................................................... 37
TTY端口监视器(ttymon)......................................................................................................... 38
ttymon和控制台端口 ................................................................................................................ 38
特定于ttymon的管理命令(ttyadm) ....................................................................................... 38
网络侦听器服务(listen) ......................................................................................................... 39
特殊listen专用管理命令(nlsadmin) .................................................................................. 39
管理ttymon端口监视器 .................................................................................................................. 40
▼ 如何设置ttymon控制台终端类型 ......................................................................................... 40
▼ 如何在ttymon控制台终端上设置波特率速度.................................................................... 40
▼ 如何添加ttymon端口监视器 .................................................................................................. 41
▼ 如何查看ttymon端口监视器状态 ......................................................................................... 42
▼ 如何停止ttymon端口监视器 .................................................................................................. 43
▼ 如何启动ttymon端口监视器 .................................................................................................. 43
▼ 如何禁用ttymon端口监视器 .................................................................................................. 43
▼ 如何启用ttymon端口监视器 .................................................................................................. 44
▼ 如何删除ttymon端口监视器 .................................................................................................. 44
管理ttymon服务(任务列表) ..................................................................................................... 44
管理ttymon服务 ................................................................................................................................ 45
▼ 如何添加服务 .............................................................................................................................. 45
▼ 如何查看TTY端口服务的状态 .............................................................................................. 46
▼ 如何启用端口监视器服务 ........................................................................................................ 48
▼ 如何禁用端口监视器服务 ........................................................................................................ 48
服务访问工具管理(参考) ........................................................................................................... 48
与SAF相关联的文件 ................................................................................................................ 48
/etc/saf/_sactab文件 ............................................................................................................. 49
/etc/saf/pmtab/_pmtab文件 ................................................................................................. 49
目录
系统管理指南:高级管理 • 2011年8月
4
服务状态 ...................................................................................................................................... 51
端口监视器状态 ......................................................................................................................... 51
端口状态 ...................................................................................................................................... 51
4
管理系统资源(概述).....................................................................................................................53
系统资源管理方面的新增功能 ...................................................................................................... 53
用于显示产品名称的新增prtconf选项 ............................................................................... 53
识别芯片多线程功能的psrinfo命令选项 .......................................................................... 54
新增localeadm命令 .................................................................................................................. 54
管理系统资源(指南).................................................................................................................... 54
5
显示和更改系统信息(任务) .......................................................................................................57
显示系统信息(任务列表) ........................................................................................................... 57
显示系统信息 .............................................................................................................................. 58
▼ 如何显示系统的物理处理器类型........................................................................................... 63
▼ 如何显示系统的逻辑处理器类型........................................................................................... 64
▼ 如何显示系统中安装的语言环境........................................................................................... 64
▼ 如何确定系统中是否安装了语言环境 .................................................................................. 65
更改系统信息(任务列表) ........................................................................................................... 65
更改系统信息 ..................................................................................................................................... 66
▼ 如何手动设置系统的日期和时间........................................................................................... 66
▼ 如何设置每日消息 ..................................................................................................................... 67
▼ 如何更改系统的主机名 ............................................................................................................ 68
▼ 如何向系统中添加语言环境 ................................................................................................... 69
▼ 如何从系统中删除语言环境 ................................................................................................... 69
6
管理磁盘使用(任务).....................................................................................................................71
管理磁盘使用(任务列表) ........................................................................................................... 71
显示有关文件和磁盘空间的信息 .................................................................................................. 72
▼ 如何显示有关文件和磁盘空间的信息 .................................................................................. 72
检查文件大小 ..................................................................................................................................... 75
▼ 如何显示文件大小 ..................................................................................................................... 75
▼ 如何查找大文件 ......................................................................................................................... 76
▼ 如何查找超过指定大小限制的文件 ...................................................................................... 77
目录
5
检查目录大小 ..................................................................................................................................... 78
▼ 如何显示目录、子目录和文件的大小 .................................................................................. 78
▼ 如何显示本地UFS文件系统的用户所有权......................................................................... 79
查找并删除旧文件或非活动文件 .................................................................................................. 80
▼ 如何列出最新文件 ..................................................................................................................... 80
▼ 如何查找并删除旧文件或非活动文件 .................................................................................. 81
▼ 如何清除临时目录 ..................................................................................................................... 82
▼ 如何查找并删除core文件 ...................................................................................................... 82
▼ 如何删除故障转储文件 ............................................................................................................ 83
7
管理UFS配额(任务).....................................................................................................................85
什么是UFS配额? ............................................................................................................................ 85
使用UFS配额 ..................................................................................................................................... 85
设置UFS配额的软限制和硬限制 .......................................................................................... 86
磁盘块与文件限制之间的区别 ............................................................................................... 86
设置UFS配额 ..................................................................................................................................... 86
设置UFS配额的原则 ................................................................................................................ 87
设置UFS配额(任务列表) .......................................................................................................... 88
▼ 如何为UFS配额配置文件系统............................................................................................... 88
▼ 如何设置一个用户的UFS配额............................................................................................... 89
▼ 如何设置多个用户的UFS配额............................................................................................... 90
▼ 如何检查UFS配额一致性 ....................................................................................................... 90
▼ 如何启用UFS配额 .................................................................................................................... 91
维护UFS配额(任务列表) .......................................................................................................... 92
检查UFS配额 ..................................................................................................................................... 92
▼ 如何检查超过的UFS配额 ....................................................................................................... 92
▼ 如何检查文件系统中的UFS配额 .......................................................................................... 93
更改和删除UFS配额........................................................................................................................ 94
▼ 如何更改软限制缺省值 ............................................................................................................ 95
▼ 如何更改用户的UFS配额 ....................................................................................................... 96
▼ 如何禁用用户的UFS配额 ....................................................................................................... 97
▼ 如何禁用UFS配额 .................................................................................................................... 98
8
调度系统任务(任务).....................................................................................................................99
创建和编辑crontab文件(任务列表) ...................................................................................... 99
目录
系统管理指南:高级管理 • 2011年8月
6
自动执行系统任务的方法 .............................................................................................................100
用于调度重复性作业:crontab ...........................................................................................100
用于调度单个作业:at ..........................................................................................................101
调度重复性系统任务(cron) ..........................................................................................................101
在crontab文件内 ....................................................................................................................102
cron守护进程处理调度的方法 ............................................................................................103
crontab文件项的语法 ............................................................................................................103
创建和编辑crontab文件 ..............................................................................................................104
▼ 如何创建或编辑crontab文件 ..............................................................................................104
▼ 如何验证crontab文件是否存在 ..........................................................................................105
显示crontab文件............................................................................................................................106
▼ 如何显示crontab文件 ...........................................................................................................106
删除crontab文件............................................................................................................................107
▼ 如何删除crontab文件 ...........................................................................................................107
控制对crontab命令的访问 ..........................................................................................................108
▼ 如何拒绝crontab命令访问...................................................................................................108
▼ 如何将crontab命令访问限制于指定的用户 ....................................................................109
如何验证受限的crontab命令访问 .....................................................................................110
使用at命令(任务列表) ............................................................................................................111
调度单个系统任务(at) ..................................................................................................................111
at命令的说明 ...........................................................................................................................111
控制对at命令的访问 .............................................................................................................112
▼ 如何创建at作业 ......................................................................................................................112
▼ 如何显示at队列 ......................................................................................................................113
▼ 如何验证at作业 ......................................................................................................................113
▼ 如何显示at作业 ......................................................................................................................114
▼ 如何删除at作业 ......................................................................................................................114
▼ 如何拒绝对at命令的访问 ....................................................................................................115
▼ 如何验证at命令访问已被拒绝............................................................................................116
9
管理系统记帐(任务).................................................................................................................. 117
系统记帐方面的新增功能 .............................................................................................................117
OracleSolaris进程记帐和统计信息改进 .............................................................................117
什么是系统记帐? ..........................................................................................................................118
系统记帐的工作原理...............................................................................................................118
目录
7
系统记帐组件 ............................................................................................................................118
系统记帐(任务列表)..................................................................................................................122
设置系统记帐 ...................................................................................................................................122
▼ 如何设置系统记帐 ...................................................................................................................123
对用户计费........................................................................................................................................125
▼ 如何对用户计费 .......................................................................................................................125
维护记帐信息 ...................................................................................................................................126
修复损坏的文件并更正wtmpx错误 .....................................................................................126
▼ 如何修复损坏的wtmpx文件 ..................................................................................................126
更正tacct错误 ........................................................................................................................126
▼ 如何修复tacct错误................................................................................................................127
重新启动runacct脚本 ...........................................................................................................127
▼ 如何重新启动runacct脚本...................................................................................................128
停止和禁用系统记帐 ......................................................................................................................128
▼ 如何暂时停止系统记帐 ..........................................................................................................128
▼ 如何永久禁用系统记帐 ..........................................................................................................129
10
系统记帐(参考) .......................................................................................................................... 131
runacct脚本 .....................................................................................................................................131
每日记帐报告 ...................................................................................................................................133
每日报告 ....................................................................................................................................134
每日使用情况报告 ...................................................................................................................135
每日命令摘要 ............................................................................................................................136
每月命令摘要 ............................................................................................................................137
上次登录报告 ............................................................................................................................137
使用acctcom检查pacct文件 ...............................................................................................137
系统记帐文件 ...................................................................................................................................139
runacct脚本生成的文件 ........................................................................................................141
11
管理系统性能(概述).................................................................................................................. 143
管理系统性能方面的新增功能 ....................................................................................................143
增强的pfiles工具 ..................................................................................................................143
CPU性能计数器 .......................................................................................................................143
有关系统性能任务的参考信息 ....................................................................................................144
系统性能和系统资源 ......................................................................................................................144
目录
系统管理指南:高级管理 • 2011年8月
8
进程和系统性能 ...............................................................................................................................145
关于监视系统性能 ..........................................................................................................................146
监视工具 ....................................................................................................................................146
12
管理系统进程(任务).................................................................................................................. 149
管理系统进程(任务列表) .........................................................................................................149
用于管理系统进程的命令 .............................................................................................................150
使用ps命令 ...............................................................................................................................150
使用/proc文件系统和命令 ..................................................................................................151
使用进程命令管理进程(/proc) ............................................................................................152
▼ 如何列出进程 ............................................................................................................................153
▼ 如何显示有关进程的信息 ......................................................................................................154
▼ 如何控制进程 ............................................................................................................................155
终止进程 (pkill, kill) .......................................................................................................... 156
▼ 如何终止进程(pkill) .............................................................................................................156
▼ 如何终止进程(kill) ...............................................................................................................157
调试进程(pargs,preap) ..........................................................................................................157
管理进程类信息(任务列表) ....................................................................................................158
管理进程类信息 ...............................................................................................................................159
更改进程的调度优先级(priocntl) .....................................................................................159
▼ 如何显示有关进程类的基本信息(priocntl) ....................................................................160
▼ 如何显示进程的全局优先级 .................................................................................................160
▼ 如何指定进程优先级(priocntl) ..........................................................................................161
▼ 如何更改分时进程的调度参数(priocntl) ........................................................................161
▼ 如何更改进程的类(priocntl) ..............................................................................................162
更改分时进程的优先级(nice) ..............................................................................................163
▼ 如何更改进程的优先级(nice) ..............................................................................................163
系统进程问题的故障排除 .............................................................................................................164
13
监视系统性能(任务).................................................................................................................. 165
显示系统性能信息(任务列表) ................................................................................................165
显示虚拟内存统计信息(vmstat) .................................................................................................166
▼ 如何显示虚拟内存统计信息(vmstat) .................................................................................167
▼ 如何显示系统事件信息 (vmstat -s) .................................................................................... 167
▼ 如何显示交换统计信息 (vmstat -S) .................................................................................... 168
目录
9
▼ 如何显示每台设备的中断次数 (vmstat -i) ...................................................................... 168
显示磁盘使用率信息 ( iostat) .................................................................................................... 169
▼ 如何显示磁盘使用率信息(iostat) .....................................................................................169
▼ 如何显示扩展磁盘统计信息 (iostat -xtc) ....................................................................... 170
显示磁盘空间统计信息(df)..........................................................................................................171
▼ 如何显示磁盘空间信息 (df -k) ............................................................................................ 171
监视系统活动(任务列表) .........................................................................................................172
监视系统活动(sar) .........................................................................................................................173
▼ 如何检查文件访问 (sar -a) ................................................................................................... 174
▼ 如何检查缓冲区活动 (sar -b) .............................................................................................. 174
▼ 如何检查系统调用统计信息 (sar -c) ................................................................................. 176
▼ 如何检查磁盘活动 (sar -d) ................................................................................................... 177
▼ 如何检查页出和内存 (sar -g) .............................................................................................. 178
检查内核内存分配 ...................................................................................................................179
▼ 如何检查内核内存分配 (sar -k) .......................................................................................... 180
▼ 如何检查进程间通信 (sar -m) .............................................................................................. 181
▼ 如何检查页入活动 (sar -p) ................................................................................................... 182
▼ 如何检查队列活动 (sar -q) ................................................................................................... 183
▼ 如何检查未使用的内存 (sar -r) .......................................................................................... 184
▼ 如何检查 CPU 使用率 (sar -u) ............................................................................................. 185
▼ 如何检查系统表状态 (sar -v) .............................................................................................. 186
▼ 如何检查交换活动 (sar -w) ................................................................................................... 187
▼ 如何检查终端活动 (sar -y) ................................................................................................... 188
▼ 如何检查总体系统性能 (sar -A) .......................................................................................... 189
自动收集系统活动数据(sar) .......................................................................................................189
引导时运行sadc命令 .............................................................................................................189
使用sa1脚本定期运行sadc命令 ........................................................................................190
使用sa2Shell脚本生成报告 ..................................................................................................190
设置自动数据收集(sar) .........................................................................................................190
▼ 如何设置自动数据收集 ..........................................................................................................192
14
软件问题故障排除(概述) ......................................................................................................... 193
故障排除方面的新增内容 .............................................................................................................193
CommonAgentContainer问题 .............................................................................................193
x86:SMF引导归档文件服务可能在系统重新引导期间失败 .........................................194
目录
系统管理指南:高级管理 • 2011年8月
10
动态跟踪功能 ............................................................................................................................194
kmdb取代kadb作为标准的Solaris内核调试程序 ............................................................194
有关软件故障排除任务的参考信息 ............................................................................................195
系统崩溃故障排除 ..........................................................................................................................195
系统崩溃时应执行的操作 ......................................................................................................195
收集故障排除数据 ...................................................................................................................196
系统崩溃故障排除核对表 .............................................................................................................197
15
管理系统消息 ................................................................................................................................... 199
查看系统消息 ...................................................................................................................................199
▼ 如何查看系统消息 ...................................................................................................................200
系统日志轮转 ...................................................................................................................................201
定制系统消息日志 ..........................................................................................................................202
▼ 如何定制系统消息日志 ..........................................................................................................203
启用远程控制台消息传送 .............................................................................................................204
在运行级转换期间使用辅助控制台消息传递 ...................................................................204
在交互式登录会话期间使用consadm命令 ........................................................................205
▼ 如何启用辅助(远程)控制台 .............................................................................................206
▼ 如何显示辅助控制台的列表 .................................................................................................206
▼ 如何在系统重新引导期间启用辅助(远程)控制台 .....................................................206
▼ 如何禁用辅助(远程)控制台 .............................................................................................207
16
管理核心转储文件(任务) ......................................................................................................... 209
管理核心转储文件(任务列表) ................................................................................................209
管理核心转储文件概述..................................................................................................................210
配置核心转储文件路径 ..........................................................................................................210
扩展的核心转储文件名 ..........................................................................................................210
设置核心转储文件名称模式 .................................................................................................211
启用setuid程序以生成核心转储文件 ...............................................................................212
如何显示当前的核心转储配置 .............................................................................................212
▼ 如何设置核心转储文件名称模式.........................................................................................212
▼ 如何启用每进程核心转储文件路径 ....................................................................................213
▼ 如何启用全局核心转储文件路径.........................................................................................213
核心转储文件问题故障排除 .........................................................................................................214
检查核心转储文件 ..........................................................................................................................214
目录
11
17
管理系统故障转储信息(任务) ................................................................................................ 215
管理系统故障转储信息中的新增内容 .......................................................................................215
快速故障转储工具 ...................................................................................................................215
管理系统故障转储信息(任务列表) .......................................................................................216
系统崩溃(概述) ..........................................................................................................................216
交换区域和转储设备的OracleSolarisZFS支持 ................................................................217
x86:GRUB引导环境中的系统崩溃......................................................................................217
系统故障转储文件 ...................................................................................................................217
保存故障转储 ............................................................................................................................217
dumpadm命令 ..............................................................................................................................218
dumpadm命令的工作原理 ........................................................................................................219
转储设备和卷管理器...............................................................................................................219
管理系统故障转储信息..................................................................................................................219
▼ 如何显示当前的故障转储配置 .............................................................................................219
▼ 如何修改故障转储配置 ..........................................................................................................220
▼ 如何检查故障转储 ...................................................................................................................221
▼ 如何从完整的故障转储目录中恢复(可选的) ..............................................................222
▼ 如何禁用或启用故障转储的保存.........................................................................................223
18
各种软件问题的故障排除(任务)............................................................................................ 225
重新引导失败时应执行的操作 ....................................................................................................225
忘记超级用户口令时应执行的操作 ............................................................................................226
x86:SMF引导归档文件服务在系统重新引导期间失败时应执行的操作 ..........................229
系统挂起时应执行的操作 .............................................................................................................230
文件系统已满时应执行的操作 ....................................................................................................230
由于创建了大文件或目录导致文件系统已满 ...................................................................231
由于系统内存不足导致TMPFS文件系统变满 ....................................................................231
复制或恢复后文件ACL丢失时应执行的操作 .........................................................................231
备份问题故障排除 ..........................................................................................................................231
备份文件系统后根(/)文件系统变满 ..................................................................................231
确保备份和恢复命令相匹配 .................................................................................................232
检查以确保当前目录正确 ......................................................................................................232
交互命令 ....................................................................................................................................232
OracleSolarisOS中CommonAgentContainer问题的故障排除 ..........................................233
端口号冲突 ................................................................................................................................233
目录
系统管理指南:高级管理 • 2011年8月
12
▼ 如何检查端口号 .......................................................................................................................233
超级用户口令的安全性被破坏 .............................................................................................234
▼ 如何为OracleSolarisOS生成安全密钥...............................................................................234
19
文件访问问题故障排除(任务) ................................................................................................ 235
解决搜索路径的问题 (Command not found) ................................................................................235
▼ 如何诊断和更正搜索路径问题 .............................................................................................236
解决文件访问问题 ..........................................................................................................................237
更改文件和组的所有权 ..........................................................................................................237
识别网络访问问题 ..........................................................................................................................238
20
解决UFS文件系统不一致问题(任务) ....................................................................................239
fsck错误消息 ...................................................................................................................................240
一般fsck错误消息 ..................................................................................................................241
初始化阶段的fsck消息 .........................................................................................................243
阶段1:检查块和大小消息 ...................................................................................................245
OracleSolaris10:阶段1B:重新扫描更多DUPS消息 ..................................................249
阶段1B:重新扫描更多DUPS消息 ....................................................................................250
阶段2:检查路径名消息 .......................................................................................................250
阶段3:检查连通性消息 .......................................................................................................256
阶段4:检查引用计数消息 ...................................................................................................258
阶段5:检查柱面组消息 .......................................................................................................261
阶段5:检查柱面组消息 .......................................................................................................262
fsck摘要消息 ...........................................................................................................................263
清除阶段消息 ............................................................................................................................263
21
软件包问题故障排除(任务) .................................................................................................... 265
软件包符号链接问题故障排除 ....................................................................................................265
特定软件包安装错误 ......................................................................................................................266
一般软件包安装问题 ......................................................................................................................266
Solaris应用程序包开发者指南
《应用程序包开发者指南》提供设计、生成和验证软件包的逐步说明以及相关的背景信息。本指南还包括在软件包创建过程中可能非常有用的高级技术。
目录
前言..........................................................................................................................................................9
1
设计软件包...........................................................................................................................................13
在何处找到打包任务 ........................................................................................................................ 13
什么是软件包? ................................................................................................................................. 13
软件包组件.......................................................................................................................................... 14
必需的软件包组件 ..................................................................................................................... 15
可选软件包组件 ......................................................................................................................... 15
生成软件包之前的注意事项 ........................................................................................................... 16
使软件包可远程安装................................................................................................................. 17
针对客户机/服务器配置进行优化 ......................................................................................... 17
根据功能边界打包 ..................................................................................................................... 17
根据版税边界打包 ..................................................................................................................... 17
根据系统相关性打包................................................................................................................. 17
消除软件包中的重叠................................................................................................................. 18
根据本地化边界打包................................................................................................................. 18
映像包管理系统(ImagePackagingSystem,IPS)软件包 ............................................................ 18
打包命令、文件和脚本.................................................................................................................... 19
2
生成软件包...........................................................................................................................................21
软件包生成过程(任务图) ........................................................................................................... 21
软件包环境变量 ................................................................................................................................. 22
关于使用环境变量的一般规则 ............................................................................................... 22
软件包环境变量汇总................................................................................................................. 23
创建pkginfo文件.............................................................................................................................. 23
定义软件包实例 ......................................................................................................................... 24
定义软件包名称(NAME) ............................................................................................................. 25
3
定义软件包类别(CATEGORY)..................................................................................................... 26
▼ 如何创建pkginfo文件 ............................................................................................................. 26
组织软件包的内容 ............................................................................................................................ 27
▼ 如何组织软件包的内容 ............................................................................................................ 27
创建prototype文件 ......................................................................................................................... 28
prototype文件的格式 .............................................................................................................. 28
从头创建prototype文件 ......................................................................................................... 33
示例-使用 pkgproto 命令创建 prototype 文件 .................................................................33
优化使用pkgproto命令创建的prototype文件 ................................................................. 34
向 prototype 文件添加功能 .....................................................................................................36
▼ 如何使用pkgproto命令创建prototype文件 ..................................................................... 38
生成软件包.......................................................................................................................................... 40
使用最简单的pkgmk命令 ......................................................................................................... 40
pkgmap文件 .................................................................................................................................. 40
▼ 如何生成软件包 ......................................................................................................................... 41
3
增强软件包的功能(任务) ............................................................................................................45
创建信息文件和安装脚本(任务图) ......................................................................................... 45
创建信息文件 ..................................................................................................................................... 46
定义软件包相关性 ..................................................................................................................... 46
▼ 如何定义软件包相关性 ............................................................................................................ 47
编写版权信息 .............................................................................................................................. 49
▼ 如何编写版权信息 ..................................................................................................................... 49
在目标系统上保留额外空间 ................................................................................................... 50
▼ 如何在目标系统上保留额外空间........................................................................................... 51
创建安装脚本 ..................................................................................................................................... 52
软件包安装期间的脚本处理 ................................................................................................... 52
软件包删除期间的脚本处理 ................................................................................................... 53
对脚本可用的软件包环境变量 ............................................................................................... 53
为脚本获取软件包信息 ............................................................................................................ 55
脚本的退出代码 ......................................................................................................................... 55
编写request脚本 ...................................................................................................................... 56
▼ 如何编写request脚本 ............................................................................................................. 57
使用checkinstall脚本收集文件系统数据 ........................................................................ 58
▼ 如何收集文件系统数据 ............................................................................................................ 59
目录
应用程序包开发者指南 • 2009年4月
4
编写过程脚本 .............................................................................................................................. 60
▼ 如何编写过程脚本 ..................................................................................................................... 61
编写类操作脚本 ......................................................................................................................... 62
▼ 如何编写类操作脚本................................................................................................................. 68
创建带签名的软件包 ........................................................................................................................ 69
带签名的软件包 ......................................................................................................................... 69
证书管理 ...................................................................................................................................... 70
创建带签名的软件包................................................................................................................. 72
▼ 如何创建不带签名的目录格式的软件包 ............................................................................. 72
▼ 如何将证书导入到软件包密钥库........................................................................................... 73
▼ 如何对软件包签名 ..................................................................................................................... 74
4
验证和转换软件包 .............................................................................................................................77
验证和转换软件包(任务图) ...................................................................................................... 77
安装软件包.......................................................................................................................................... 78
安装软件数据库 ......................................................................................................................... 78
与pkgadd命令交互 .................................................................................................................... 78
在同构环境中的独立系统或服务器上安装软件包 ............................................................ 79
▼ 如何在独立系统或服务器上安装软件包 ............................................................................. 79
验证软件包的完整性 ........................................................................................................................ 80
▼ 如何验证软件包的完整性 ........................................................................................................ 80
显示有关已安装的软件包的附加信息 ......................................................................................... 81
pkgparam命令.............................................................................................................................. 81
▼ 如何使用 pkgparam 命令获取信息 ..........................................................................................82
pkginfo命令 ................................................................................................................................ 83
▼ 如何使用 pkginfo 命令获取信息 ............................................................................................86
删除软件包.......................................................................................................................................... 86
▼ 如何删除软件包 ......................................................................................................................... 86
将软件包转换为分发介质 ............................................................................................................... 87
▼ 如何将软件包转换为分发介质 ............................................................................................... 87
5
软件包创建案例研究 .........................................................................................................................89
请求来自管理员的输入.................................................................................................................... 89
技术 ............................................................................................................................................... 89
方法 ............................................................................................................................................... 90
目录
5
案例研究文件 .............................................................................................................................. 91
在安装时创建文件并在删除期间保存文件 ................................................................................ 92
技术 ............................................................................................................................................... 92
方法 ............................................................................................................................................... 93
案例研究文件 .............................................................................................................................. 94
定义软件包兼容性和相关性 ........................................................................................................... 95
技术 ............................................................................................................................................... 95
方法 ............................................................................................................................................... 96
案例研究文件 .............................................................................................................................. 96
使用标准类和类操作脚本修改文件 .............................................................................................. 97
技术 ............................................................................................................................................... 97
方法 ............................................................................................................................................... 97
案例研究文件 .............................................................................................................................. 98
使用sed类和postinstall脚本修改文件 .................................................................................100
技术 .............................................................................................................................................100
方法 .............................................................................................................................................100
案例研究文件 ............................................................................................................................101
使用build类修改文件 ...................................................................................................................102
技术 .............................................................................................................................................102
方法 .............................................................................................................................................102
案例研究文件 ............................................................................................................................103
在安装期间修改crontab文件 ......................................................................................................103
技术 .............................................................................................................................................103
方法 .............................................................................................................................................104
案例研究文件 ............................................................................................................................104
使用过程脚本安装和删除驱动程序 ............................................................................................106
技术 .............................................................................................................................................106
方法 .............................................................................................................................................106
案例研究文件 ............................................................................................................................107
使用sed类和过程脚本安装驱动程序 ........................................................................................109
技术 .............................................................................................................................................109
方法 .............................................................................................................................................109
案例研究文件 ............................................................................................................................110
目录
应用程序包开发者指南 • 2009年4月
6
6
创建软件包的高级技术.................................................................................................................. 115
指定基目录........................................................................................................................................115
缺省管理文件 ............................................................................................................................115
使用BASEDIR参数 ....................................................................................................................117
使用参数化基目录 ...................................................................................................................117
管理基目录 ................................................................................................................................119
适应重定位........................................................................................................................................119
遍历基目录 ................................................................................................................................120
在异构环境中支持重定位 .............................................................................................................127
传统方法 ....................................................................................................................................128
超越传统 ....................................................................................................................................131
使软件包可远程安装 ......................................................................................................................136
示例-安装到客户机系统 ......................................................................................................136
示例-安装到服务器或独立系统.........................................................................................137
示例-挂载共享文件系统 ......................................................................................................137
修补软件包........................................................................................................................................138
checkinstall脚本 ...................................................................................................................139
preinstall脚本 .......................................................................................................................143
类操作脚本 ................................................................................................................................148
postinstall脚本 .....................................................................................................................153
patch_checkinstall脚本 ......................................................................................................158
patch_postinstall脚本.........................................................................................................160
升级软件包........................................................................................................................................161
request脚本 ..............................................................................................................................162
postinstall脚本 .....................................................................................................................163
创建类归档软件包 ..........................................................................................................................163
归档软件包目录的结构 ..........................................................................................................164
支持类归档软件包的关键字 .................................................................................................165
faspac实用程序 .......................................................................................................................166
GO 语言(中文版PDF)
GO 语言(中文版PDF)
PHP & MySQL范例精解
PHP & MySQL范例精解.。。。。。
Delphi 2005程序设计教程_实例源文件和教学课件
Delphi 2005程序设计教程_实例源文件和教学课件
Delphi 7 程序设计教程
相关代码及。。。 [Delphi 7 程序设计教程].zip\书籍源码
python-2.7.2 for windows
python开发环境。。。Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
Jython是用Java语言实现的Python解释器
•Jython是用Java语言实现的Python解释器。这意味着你可以用Python语言编写程序而同时使用Java库!Jython是一个稳定成熟的软件。如果你也是一个Java程序员,我强烈建议你尝试一下Jython