这种体系按照会溶温度(即部分互溶变为互溶的温度)的不同可以分为以下四类:

1.具有最高会溶温度。这一类系统的溶解度的图中,单双相分界线呈“∩”型,线上是单相,线下是两相。水和苯胺便属于此类。

2.具有最低会溶温度。这一类系统的溶解度的图中,单双相分界线呈“U”型,线上是两相,线下是单相。水和三乙胺属于此类。

3.同时具有最高和最低会溶温度。这一类系统的溶解度的图中,单双相分界线呈“O”型封闭,圈内是两相,圈外是单相。水和烟碱属于此类。

4.没有会溶温度。对于这类系统,在液体存在的范围内,无论按何种比例混合,它们总是彼此部分互溶。如乙醚和水等。

会溶温度反应了液体之间相互溶解的能力,会溶温度越高,互溶性越差,反之越好。利用这个性质可以选择萃取剂。

互溶体系造价信息

市场价 信息价 询价
材料名称 规格/型号 市场价
(除税)
工程建议价
(除税)
行情 品牌 单位 税率 供应商 报价日期
SPM现浇内置保温结构一体系 品种:无机复合保温板;密度(kg/m3):30; 查看价格 查看价格

元立

m2 13% 山西元立新型建材有限公司
地坪漆体系 品种:防水板;说明:详见报价单;规格:30kg; 查看价格 查看价格

三棵树

m2 13% 河北尚科新材料科技有限公司
NBW现浇混凝土内置保温体系 品种:挤塑板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×3/100×3/100×80XPS;厚度(mm):8 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
NBW现浇混凝土内置保温体系 品种:聚苯板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×3/100×3/100×50EPS;厚度(mm):5 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
NBW现浇混凝土内置保温体系 品种:聚苯板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×3/100×3/100×60EPS;厚度(mm):6 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
NCW免拆复合保温模板体系 品种:挤塑板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×70XPS;厚度(mm):70;容重(kg/m3): 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
NBW现浇混凝土内置保温体系 品种:聚苯板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×3/100×3/100×80EPS;厚度(mm):8 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
NCW免拆复合保温模板体系 品种:挤塑板;燃烧等级:B1级;规格(mm):1220×3600;厂家型号:3/100×50XPS;厚度(mm):50;容重(kg/m3): 查看价格 查看价格

德嘉丽

m2 13% 河南省德嘉丽科技开发有限公司
材料名称 规格/型号 除税
信息价
含税
信息价
行情 品牌 单位 税率 地区/时间
自发电一焊机 305A 查看价格 查看价格

台班 韶关市2010年8月信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 汕头市2011年3季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 广州市2010年3季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 汕头市2010年2季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 广州市2010年2季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 广州市2010年1季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 汕头市2009年3季度信息价
二氧化碳气保护焊机 电流250A 查看价格 查看价格

台班 广州市2007年4季度信息价
材料名称 规格/需求量 报价数 最新报价
(元)
供应商 报价地区 最新报价时间
产业生态体系 视频 产业生态体系|360秒 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06
绿道游憩体系规划 视频 绿道游憩体系规划|130秒 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06
产业生态体系 光电沙盘程序 定制|2套 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06
产业生态体系 镜头 9D-FLS067DZ|1个 3 查看价格 广州智影腾达科技有限公司 全国   2020-07-06
产业生态体系 音响 PS-8|2个 3 查看价格 广州市保伦电子有限公司 全国   2020-07-06
产业生态体系 光电视频 定制|120秒 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06
产业生态体系 球幕 九度定制|1套 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06
产业生态体系 LED定制视频 定制|120秒 3 查看价格 深圳泰尔智能视控股份有限公司 全国   2020-07-06

在这类系统中,三对液体之前按照部分互溶的情况,存在以下三种情况:

1.有一对液体部分互溶。如乙酸-三氯甲烷-水组成的系统中,乙酸可以和三氯甲烷或者水完全互溶,但三氯甲烷和水只能部分互溶。再如乙醇-苯-水组成的系统中,乙醇可以和苯或者水完全互溶,但苯和水之间只能部分互溶。

2.有两对液体部分互溶。如乙烯腈-水-乙醇组成的系统中,水可以和乙醇完全互溶,但乙烯腈和水或者乙醇只能部分互溶。

3.有三对液体部分互溶。如乙烯腈-水-乙醚组成的系统中,任意一对液体均部分互溶。 

两个纯液体可按任意比例互溶,每个组分都服从拉乌尔定律,这样组成了理想的完全互溶双液系,或称为理想的液体混合物。通常,两种结构相似或极性相似的化合物可以按任意比例混合,并形成接近理想的液态混合物,如苯和甲苯、水和重水等。

但实际上,非理想液态混合物更为常见。对于非理想液态混合物,它们的行为与Raoult定律存在一定的偏差。

对于正偏差很大的系统,存在最低恒沸点。属于这类系统的有:水和乙醇、甲醇和苯、乙醇和苯等。

对于负偏差很大的系统,存在最高恒沸点。属于这类系统的有:水和硝酸、氯化氢和二甲醚、水和氯化氢等。

互溶体系常见问题

  • 正丁醇与水互溶吗

    相溶,但不是太大,20摄氏度时正丁醇在水中的溶解度是7.7%,水在正丁醇中的溶解度是20.1%。

  • 软件体系结构的体系风格

    软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。处理构件负责对数据进行加工,数据构件是被加工的信息,连接构件把体系结构的不同部分组组合连接起来。这一定义注重区分...

  • 整体系数

    工程量不是已经都核对完了?材价不是也都是确定的?施工单位自己不上机?怎么滴也会被知晓被发现的,肯定是都会要找出原因的

如果两种液体彼此互溶的程度很小,可以忽略不计,则可近似地看作这两种液体形成了不互溶的双液系。在这种系统中,只要同时存在两种液体,那么系统的蒸汽压高于任一纯组分的蒸汽压,系统的沸点低于任一纯组分的沸点,而与其组分的比例无关。如水和溴苯形成的系统。这类体系的一个重要应用便是水蒸气蒸馏。如通过硝基苯的还原制备苯胺时,用水蒸气蒸馏法蒸出苯胺,再如在肉桂酸制备的实验中,通过水蒸气蒸馏来除去未反应完的苯甲醛。

互溶体系文献

现场改性橡胶沥青混溶体系分析研究 现场改性橡胶沥青混溶体系分析研究

格式:pdf

大小:796KB

页数: 未知

评分: 4.6

橡胶沥青作为目前研究应用较为广泛的环保型改性沥青之一,具有提高沥青混合料高温稳定性、低温抗裂性、抗疲劳等多项路用性能。目前橡胶沥青存在多种改性和生产工艺,不同改性工艺的橡胶改性沥青性能差异较大。为此,文章通过电镜分析、光谱分析等手段,对橡胶沥青混溶体系的构成与改性机理进行了系统研究,为提出合理改性工艺措施提供理论依据。

立即下载
开茂水库工程岩溶体系研究与评价 开茂水库工程岩溶体系研究与评价

格式:pdf

大小:796KB

页数: 2页

评分: 4.6

开茂水库区处于(侏罗系上统)莲花口组砾岩出露区,该套地层岩溶发育,地表呈现较典型溶蚀残丘地貌特征,勘探及地质调查发现了大量溶蚀洼地、落水洞、溶洞等岩溶现象。岩溶渗漏成为水库修建最为突出的工程地质问题。受地形地貌、地层岩性、地质构造、河谷演化历史等因素影响、开茂水库区岩溶发育十分复杂,勘察阶段通过多种地质勘探方法,基本揭示了库区岩溶发育特征及规律,为岩溶渗漏评价及处理提供了合理可靠的地质依据。

立即下载

来源:MRRiddler ,

blog.mrriddler.com/2017/02/10/计算机体系-编译体系漫游/

要想让代码乖乖运行,自然代码要先经过编译,这篇文章就来聊聊编译体系。

代码的编译过程分为四个阶段,预处理、编译、汇编、链接。而编译阶段是整个过程中最复杂的阶段,编译阶段还可以分为词法分析、语法分析、语义分析。

在一头扎进这四个阶段之间,先聊一下语法、语义。人类之所以能在进化的历史长河中,成为动物中的佼佼者,进化出的复杂的沟通机制—语言功不可没。假如,我说出这句话:你个产品狗还在改需求!那么语法是啥呢?简单说就是构成这句话的顺序,假如顺序错乱意思就不同了。那么语义是啥呢?就是语境,根据我说这句话的情景,才能解释出你指的是谁。语法在编程语言中,表现出来的就是语法结构和结合律。语义表现出来的就是上下文(context)。

预处理(Preprocess):处理预处理符(#),包括宏展开、头文件引入。 词法分析(Lexical Analysis、Tokenizer):写出的代码实际上就是字符串,此阶段需要对字符串进行扫描(Scanner),将字符串扫描出分析的最基本单位(token),并在扫描过程中将它们分类,此阶段是没有任何语义的。也可以理解成将代码扫描出基本表达式。 语法分析(Syntactic analysis、Parser):生成AST抽象语法树,检查语法结构,此阶段是上下文无关的。也可以理解成将基本表达式按语法结构组合成复合表达式。 语义分析(Semantic Analysis):语义检查(比如检查浮点数乘以指针,虽然语法结构正确但是语义检查不合格),将程序与上下文结合,进行静态类型分析,确定AST每个节点的类型。也可以理解将复合表达式结合环境(Environment),并且确定基本表达式、复合表达式的类型。 中间码(Intermediate Representation):与语言无关、平台无关的中间码。如果编译器面向多语言,对于任意语言编译阶段后可以生成通用的中间码,这样编译器就有多语言的高拓展性了。生成中间码后再交给汇编阶段,再生成与平台相关的汇编,这样使编译器将平台相关性尽量往后推移。中间码除了做为“桥接“,对中间码的优化也是整个编译过程中的关键优化。 汇编(Assemble):对中间码生成平台具体的汇编,在这个阶段添加对多个平台的支持,编译器就可以跨平台了。最后生成机器码。 链接(Link):将每个机器码编译单位中引用的其他编译单位中的变量、函数符号修正(fix)成真实地址。

编译历史

编译的历史基本就是计算机的进化史,是很有趣的一段故事。Long time ago… 程序员写程序都是用纸带,那时候还在写0、1机器码。纸带上打孔就是0,不打孔就是1。然后计算机读取纸带就是读取指令。但是就像互联网本质就是提高效率一样,这样写程序的效率怎能接受?并且,写程序如果犯了错误怎么办?重新从头到尾再用新纸带搞一遍?程序员们机智的开始想办法了,先是这样搞:

将指带有误的地方,用黑黑的小贴纸填上去,这样将0改成1了。这也是Patch名字的由来。但是这样写指令效率还是太低,程序员们再机智的想办法。后来将指令进行符号化(Symbol),抽象出指令集,这时就出现了汇编,程序员的效率上了一个档次。但是新的问题又出现了。在写过程调用的时候,要写jmp 具体的函数地址。如果后来要在被调用的函数前面添加指令,那么函数地址也要跟着改。这样牵一发动全身的感觉可不好,为了让影响(impact)缩减到最小,不如将函数地址也符号化。凡是写过程调用先写成jmp func,等到程序生成机器码的时候,再将func换成真正的函数地址,这一步也就是将程序员手动修正交由汇编器修正。

随着生产力的提升,程序的规模越来越大,新的问题出现了,程序膨胀到难以维护和阅读了。程序员们就将程序模块化、层次化。这样也使编译的单位更小粒度化。编译的时候,不同编译单位之间的细节是互相隔离的。比如,对于C语言系,一个.h和一个.m就构成了一个编译单位。.m汇编时,是不知道其他.m的全局变量、函数地址的,而调用的时候就只能用符号进行调用,等到最后所有.m都生成机器码后再进行统一的修正。而负责这一步的就是链接器(Linker),这一步也叫重定位(Relocation)。

目标文件

经过汇编这一阶段后,就会生成目标文件。目标文件和可执行文件已经非常相近了,只是有些符号还未修正,结构上会进行调整。Windows平台下为PE(Portable Executable),Linux平台下为ELF(Executable Linkable Format),Mac平台下为Mach-O。虽然不同平台都有自己的格式,但是它们实际上都大同小异。下面大体聊一下文件的实际字段,这些知识会为后面我们搞一些符号重绑定做铺垫。

section

首先,文件分段(section)。不同的Section放置不同的信息,文件还有一个section header table放置控制信息。实际上,就类似图片格式和mutipart的HTTP报文。以下是一个ELF目标文件的常见section:

—— —— —— —— —— —— ——

|header | -----> 文件头

|—— —— —— —— —— —— ——|

|.text | -----> 代码段

|—— —— —— —— —— —— ——|

|.data | -----> 已初始化全局变量、静态变量

|—— —— —— —— —— —— ——|

|.bss | -----> 未初始化全局变量、静态变量

|—— —— —— —— —— —— ——|

|other sections... |

|—— —— —— —— —— —— ——|

|section header table| -----> section控制信息表

|—— —— —— —— —— —— ——|

|.strtab | -----> 字符串表

|—— —— —— —— —— —— ——|

|.symtab | -----> 符号表

|—— —— —— —— —— —— ——|

|..... |

—— —— —— —— —— —— —— —

.text放置代码,.data放置已初始化的全局变量和静态变量,.bss放置未初始化的全局变量和静态变量。为什么代码和全局变量、静态变量要分开放?实际上,这就是个等同性问题。代码段就是可读的数据,而全局变量、静态变量是可读可写的数据。如果有多个进程进行同一份代码,这些代码都是等同的,不需要各自复制一份。而全局变量、静态变量是不等同的,需要各自复制一份。而分什么又要分已初始化、未初始化呢?目标文件未初始化的全局、静态变量只需要放置一个占位符,代表其在.bss。而.bss在链接阶段,变量不占空间,在装载时由操作系统再分配空间。可以看到,既然是文件格式,不管怎么设计,主要的目的就是占更少的空间。

header有很多文件控制信息,就不一一表述了,其中最重要的就是记录了section header table的起始地址。而section header table记录了所有section的名字、类型、长度、在文件中的偏移量(offset)等。如果想要寻址到任意section都要通过这个header table。section header table实际上是由struct构成的数组。

.strtab放置section名、变量名,包括符号名的字符串。由于在整个结构中,字符串的长度是不定的,一般将这些字符串统一放置在一个table中,然后存储table中的offset,最后寻址到字符串。比如,在下表中,我想找到girlfriend一词,我只要拿到.strtab的base地址,加上girlfriend的offset 9就可以找到这个字符串。

0 1 2 3 4 5 6 7 8

i 0 w a n t 0 a 0

g i r l f r i e n

d

.symtab就是大名鼎鼎的符号表。每个目标文件都有自己的符号表,符号表记录符号的映射,符号可以这样分:文件外符号和文件内符号,文件外符号就是使用在其他文件定义的符号,文件内符号除了在文件内定义给其他文件使用的符号,还包括每个section符号,在文件内定义光是文件内使用的符号。光文件内使用的符号,对链接没有帮助,主要为了崩溃后分析而存在。符号表也是一个由struct构成的数组。ELF的32位符号sturct:

typedef struct {

int32_t st_name;

uint32_t st_value;

int32_t st_size;

unsigned char st_info;

unsigned char st_other;

uint16_t st_shndx;

} ELF32_Sym;

st_name字段就是符号的名字,表示为在.strtab中的字符串offset。st_info表示是局部符号、全局符号还是弱符号。符号也可以分为强符号(Strong Symbol)、弱符号(Weak Symbol),顾名思义,强符号有唯一性,弱符号没有唯一性,一个强符号可以和多个弱符号共存,多个重复的强符号不可以共存,链接器会报出duplicate dymbol,可以用attribute((weak))指明弱符号。相对的,符号也有强引用(Strong Reference)、弱引用(Weak Reference),在链接进行符号修正的时候,强引用必须修正,而弱引用可以不修正,可以用attribute((weakref))指明符号弱引用。

st_shndx字段指明了符号是文件外符号,还是文件内符号。如果是文件外符号就为SHN_UNDEF。如果是文件内符号包括给其他文件使用的、光自己使用的、section符号,就为所在section的索引号,而st_value表示所在section的offset。等到链接过后,不管是文件外符号还是文件内符号,st_value指明实际地址。

符号修饰(Symbol-Decoration)与函数签名(Function-Signature)

机智的同学已经发现了,如果光按上面聊的方式进行符号链接是有问题的,假如目标文件有个func符号又引用了其他文件同名的func符号,那符号不就出现冲突了?这里就需要引入函数签名,函数签名是一个函数的名字、参数类型、所在类名组成的字符串,不同语言、不同编译器对同一个函数生成的函数签名是不一样的,比如OC中函数签名还要加上返回变量类型,C++中还要加上NameSpace。在链接的时候,过程调用符号不光是函数名,是对函数签名处理后的结果,全局变量符号也是经过类似用函数签名处理后的结果。这一处理过程就是符号修饰。

fishhook

fishhook是facebook开源的重绑定Mach-O符号的库,最常用来hook C语言函数,而且实际上只能重新绑定C符号,因为符号修饰这一步只去掉了”_”,相当于只针对C语言做了符号修饰。在了解了目标文件后,重绑定就不是那么困难了。最基本的思路就是先拿到header,然后通过header拿到section header table,再找到.hash,.hash是一个用于加快访问.symtab的哈希结构,再索引到.symtab,详见这里,通过name去.strtab比对符号名,如果匹配就置换value。

https://docs.oracle.com/cd/E2382401/html/819-0690/chapter6-48031.html

fishhook大体实现原理就是这样,只不过对Mach-O平台特性改进一下方案就行。在Mach-O中类似于section header table的段叫做load commands。并且Mach-O中使用二级命名空间,先分segment,就相当于上文中的section,然后再在同一segment中区分section。

先拿到header,通过header中的ncmds(segment的个数)和cmdsize(segment的大小)字段就可以找到所有的segment。然后找到.strtab、.symtab、indirect symbol table。这个indirect symbol table是一个uint32_t的数组。它就是nl_symbol_ptr(non-lazy)和la_symbol_ptr(lazy )对应的.symtab struct数组的索引。nl_symbol_ptr和la_symbol_ptr section section中的reserved1字段指明对应的indirect symbol table起始offset。只要从这两个section对应的indirect symbol table起始表项再跳到.symtab去匹配、置换就可以了。

下面是32位下.symtab的struct,可以看到和上段文章讲的几乎一致:

struct nlist {

union {

char *n_name; /* for use when in-core */

uint32_t n_strx; /* index into the string table */

} n_un;

uint8_t n_type; /* type flag, see below */

uint8_t n_sect; /* section number or NO_SECT */

int16_t n_desc; /* see <mach-o/stab.h> */

uint32_t n_value; /* value of this symbol (or stab offset) */

};

上文提到的Mach-O格式如下:

—— —— —— —— —— —— ——

|header |

|—— —— —— —— —— —— ——|

|load commands |

|—— —— —— —— —— —— ——|

|__Text |

|—— —— —— —— —— —— ——| —— __nl_symbol_ptr

|__Data | -----> |

|—— —— —— —— —— —— ——| —— __la_symbol_ptr

|other sections... |

|—— —— —— —— —— —— ——|

|.strtab |

|—— —— —— —— —— —— ——|

|.dynsym | -----> indirect symbol table

|—— —— —— —— —— —— ——|

|..... |

—— —— —— —— —— —— —— —

更加详细的格式,推荐这篇文章。

http://turingh.github.io/2016/03/07/mach-o文件格式分析/

链接

上面聊了这么多 ,那静态链接到底是如何将多个目标文件链接成一个可执行文件的呢?

静态链接分为两阶段(Two-pass Linking),第一阶段先扫描所有目标文件,调整结构。将所有目标文件相同section合并,包括.symtab合并成全局.symtab,然后为每个section分配虚拟地址,再将全局.symtab中的符号进行置换成虚拟地址。

这里如何将全局.symtab中的符号置换成虚拟地址呢?实际上,在分配section虚拟地址后,符号的虚拟地址按所在section虚拟地址加offset就可以计算出了。

第二阶段将所有符号进行修正。通过重定位表找到所有section中需要被修正的符号位置,然后从全局.symtab查询出虚拟地址置换。

每个section都会对应一个重定位段,这些重定位段组成一个重定位表。每个重定位表项叫做重定位入口(Relocation Entry),它记录了所需重定向符号所在段的offset。

静态链接库

静态链接库就是一组目标文件,经过压缩、索引而成的一个文件形式。当我们平时在使用静态链接库的时候,实际上链接器会根据所需的符号,在库中搜索到相应的目标文件,并将其链接入最终可执行文件。

动态链接

随着静态链接慢慢发展起来,静态链接也暴露出了问题。静态链接将链接与被链接的目标文件结合的太紧密了,导致如果多个目标文件要链接同一个目标文件,那这个被链接的目标文件相当于要被复制多份,每个可执行文件都要包含这个被链接的目标文件的内容,这样会占太多冗余空间。那怎么办?将链接与被链接的目标文件先隔离开,将链接的时机往后推移,等到装载的时候再进行链接。这样,让被链接的目标文件只占一份空间就好。

既然动态链接隔离开了链接、被链接目标文件,链接目标文件需动态链接的符号,就需要先做个动态链接占位符。这也就是说,在目标文件链接成可执行文件时,即使是用作动态链接的目标文件也要作为动态链接库输入到链接阶段,以供目标文件识别哪些符号是动态符号。

动态链接重定位

上面已经聊完了在链接阶段对静态链接进行重定位,根据符号所在section的虚拟地址和所在section的offset。而动态链接可以这样重定位吗?不行,这时动态链接库的地址还没有确定,必须等到装载以后操作系统分配。那可以等到装载以后,确定地址后再直接进行重定位吗?不行,假如动态链接库被多个进程引用,装载时动态链接库进行重定位,动态链接库映射到每个进程中的虚拟地址都不一样,动态链接库只能对一个进程重定位,那么动态链接库就不是共享的了。那怎么搞?

通过.got(global offset table),.got就是一个指针数组,.got存储引用符号的实际地址。而代码段引用符号直接更改为引用.got项的位移,这在链接阶段以后就不会再改变了。然后将.got分配在.data section,装载时每个进程复制一份并修正。实际上,动态链接重定位指的就是在装载的时候,根据全局符号表修正.got表项。动态链接库使用全局变量、静态变量、引用文件外过程调用都要经过.got。.got就像indirection table一样,解决多进程共享动态链接库。

这样,动态链接库虽然在不同进程中有不同的映射虚拟空间,但物理空间上共享。.got在不同进程中,虚拟空间和物理空间都不共享。如下图所示:

virtual address -> physical address

—— —— —— —— —— —— ——

|processA |

|—— —— —— —— —— —— ——|

|..... |

|—— —— —— —— —— —— ——|

|dynamic libiraries |----------

|—— —— —— —— —— —— ——| |

|..... | | |..... |

|—— —— —— —— —— —— ——| | |—— —— —— —— —— —— ——|

|.got |---------|---------->|.got |

|—— —— —— —— —— —— ——| | |—— —— —— —— —— —— ——|

|..... | | |..... |

|—— —— —— —— —— —— ——| | |—— —— —— —— —— —— ——|

----------->|dynamic libiraries |

—— —— —— —— —— —— —— | |—— —— —— —— —— —— ——|

|processB | | |..... |

|—— —— —— —— —— —— ——| | |—— —— —— —— —— —— ——|

|..... | | ------>|.got |

|—— —— —— —— —— —— ——| | | |—— —— —— —— —— —— ——|

|dynamic libiraries |---------- | |..... |

|—— —— —— —— —— —— ——| |

|..... | |

|—— —— —— —— —— —— ——| |

|.got |---------------

|—— —— —— —— —— —— ——|

|..... |

|—— —— —— —— —— —— ——|

动态链接库文件外符号重定位用.got就搞定了,那动态链接库文件内符号呢?静态链接同样是在链接阶段重定位就搞定了。动态链接将绝对寻址指令更换成相对寻址指令,只要指令的offset不变,相对寻址指令就可根据当前地址和offset得到正确的地址,这样文件内符号根本不需要重定位了。基于以上两点的处理,代码段在链接后就不需要更改了,这样的代码段也叫做地址无关码(PIC),也就是说代码段和装载后的地址无关。

延迟绑定(PLT)

由于要跳过.got引用动态链接库的符号,动态链接库比静态链接库慢5%左右,但相比于节省的大量空间还是很划算的。除此之外,动态链接还会有其他的问题,装载时需要进行重定位,会导致性能下降。不如,直接延迟绑定,等到过程调用符号运行时被用到再进行重定位。

整个过程强烈推荐这篇文章,要想理解动态链接重定位,没有比追汇编更好的方法了。动态链接和延迟绑定整个过程都是由动态链接器帮我们完成的。当引用符号(callq)时,先jmpq去plt结构,使用了PLT,引用符号就要先jmpq去plt结构。如果没找到相应的地址,然后再jmpq去.got.plt或.got中。再把符号相应.rela.plt表中的索引和.got.plt相应的表项,pushq入栈,rela.plt中有符号的类型和名字。再jmp到动态链接库中(_dl_fixup),去全局符号表中找到符号相应的地址。再将地址reloc到.got.plt或.got相应表项。然后就完成了延迟绑定,下次引用同样的符号就可以jmpq去plt结构找到地址。

http://sysfork.com/post/linux-dynamic-lib-lazy-load/

引用

程序员的自我修养—链接、装载与库

关注「ImportNew」,看技术干货

冲积扇沉积体系冲积扇是暂时性洪流或间歇性洪流流出山口时,由于地形急剧变缓,水流向四方散开,流速骤减,碎屑物质大量堆积而成的,形状近扇状的沉积体。从山地峡谷向开阔平原转变地带上的一种河流沉积体系,呈扇形或半圆锥状、以粗粒碎屑占优势的堆积物。

沉积体系冲积扇沉积体系的沉积亚相特征

冲积扇是陆地上最靠近物源区的沉积体系,粒度粗,分选差,沉积速率高。扇根分布在临近冲积扇顶部地带的古沟口附近,主要发育有古沟道、主水道和主水道间三种沉积微相。扇中位于冲积扇中部,为冲积扇的主要组成部分。它与扇根并不具有明显的界限,以具有中到较低的沉积坡角和发育的辫状河道为特征。与扇根沉积相比较,砂与砾比率增加,沉积物偏细,成分成熟度和结构成熟度增高,砾石碎屑多呈叠瓦状排列。扇中沉积由于未经过充分分选,加上泥石流的存在,扇中沉积层内、层间和微观非均质性极强。扇缘是整个冲积扇沉积物最细,流体能量最低的部分,呈环带状围绕在冲积扇周围。沉积物为细砾、含砾砂、砂及泥,细砾较为少见。其微相可分为水道径流及片流两种。

沉积体系冲积扇沉积体系的分类

湿地沉积扇:沉积特征,湿地沉积扇主要发育与潮湿气候带,最明显的终年泄水,这些常年河对扇的沉积作用影响小,而由季节性气候条件产生的巨大洪水起着控制作用。整个扇的面积大,有时为干旱扇的几百倍;扇面坡度一般较低,因此河流作用常常控制着湿地扇的整个扇面。自扇顶向扇尾湿地扇的最大碎屑粒径逐渐变小。

沉积亚相分为:扇顶近源相、扇中中段相、扇尾远端相。Ⅱ扇三角洲:冲积扇直接进入水体在滨湖或滨海地带形成的粗碎屑扇状体。沉积特征:冲积扇直接进入水体在滨湖或滨海地带形成的粗碎屑扇状体。它是一种进积到稳定水体中的冲积扇沉积体系,它属于在活动扇与稳定水体交界带上的沉积。这种沉积一部分在陆上,但大部分在水下,有的几乎完全在水下。扇三角洲出现于不同气候和能量条件的各种滨海带中,也常常沿冰缘地带的山间湖滨分布。

扇三角洲的远端相形成于滨岸带、海洋或湖泊的水下环境,当有高速的粗粒沉积物注入水体时才能显现出河流的影响。海岸带的扇形体由于受到河流、波浪、潮汐及水面升降变化等的多种作用,因而形态和面貌呈多种多样。冲积扇沉积体系与能源资源形成、赋存的关系在含煤冲积扇沉积体系中,煤的聚集往往集中于特定的部位,这主要决定于控制泥岩沼泽形成和发育的自然地理条件。在冲积扇体系分布的范围内,有利于成煤的部位主要有扇间洼地、中扇朵叶体间洼地、扇尾地带和扇前缘外侧与河、湖、海环境的过渡地带。对于油气的生成,冲积扇体系是不利的沉积环境,但由于它所产生的沉积物大多岩性粗,可以构成很好的储集层。

实践证明,冲积扇沉积与储层有着密切的关系,特别是砂砾岩冲积扇体储层的油气地质意义已被国内外很多油田证实。只要邻接该砂体有生油层存在,往往可形成次生的油气藏。由冲积扇体系充填的沉积盆地,如果周边的物源区具有含铀矿物的岩体出露,在适宜的气候和沉积环境条件下,常为铀矿的聚集提供了良好的形成条件。

审计体系的分析

1.审计工作体系

审计工作是审计机构和审计人员为实现审计任务,依法行使审计职权,履行审计职责所进行的各项审计行为。审计工作体系是指由若干要素相互联系而构成的一个有机整体。审计工作按不同标志划分要素而形成不同的体系。

审计工作体系按审计工作任务不同,可分为审计业务工作体系和审计管理工作体系。

(一)审计业务工作体系是指由若干审计业务工作要素相互联系而构成的一个有机整体。审计业务工作要素有不同的划分,从而使审计业务工作体系的构成要素有所不同。审计业务工作体系按审计主体的性质划分,是由国家审计、社会审计(注册会计师审计)和内部审计等要素构成的有机整体。审计业务工作体系按审计的内容划分,是由财政财务审计(包括税务审计)、管理审计和经济效益审计等要素构成的有机整体。审计业务工作体系按被审计单位的性质划分,是由政府审计和企业审计等要素构成的有机整体。此外,审计业务工作体系的要素还有:按执行审计机构可将审计划分为外部审计和内部审计;按被审计资料涉及的范围可将审计划分为全部审计和局部审计;按被审计项目涉及的范围可将审计划分为综合审计和专题审计;按被审计单位经济业务发生的时间可将审计划分为事前审计、事中审计和事后审计;按被审计单位的审计报告期可将审计划分为期中审计和期末审计;按审计是否在规定的时间进行可将审计划分为定期审计和不定期审计;按审计是否为初次实施可将审计划分为初次审计、继续审计和后续审计;按执行审计的地点可将审计分为就地审计和报送审计;按是否事先通知被审计单位可将审计分为预告审计和突击审计;按审计的组织方式可将审计划分为授权审计、委托审计和联合审计;按审计的法律义务可将审计划分为法定审计和自愿审计等。在审计业务工作体系中,各种构成要素可以相应建立相对独立的体系。如审计业务工作体系中的国家审计、社会审计(注册会计师审计)和内部审计等构成要素,可以相应地建立国家审计体系、社会审计(注册会计师审计)体系和内部审计体系等。

2.审计科学体系

审计科学体系是指由若干体现审计科学的要素相互联系而形成的一个有机整体。审计科学是研究审计工作规律和审计历史发展规律的知识体系。审计科学按其内容的表现形式,分为审计理论体系和审计学科体系。

(一)审计理论体系是由各种理论要素相互联系而构成的有机整体。审计理论体系包括哪些理论构成部分,理论界尚没有一致的认识。R.K.莫茨、H.A.夏拉夫在所著《审计理论结构》中,提出审计理论结构,由一个核心五个层次构成,一个核心是以数学、逻辑学、形而上学为核心,五个层次是基本哲学、审计假设、审计概念体系、审计标准和审计实务等。尚德尔教授在《审计理论》中,提出审计“理论结构以审计假设为核心,由审计目的、审计标准、审计判断、审计要素四个基本要素所构成。”《蒙哥马利审计学》提出审计理论基本框架以审计目标为核心,以审计准则、审计假设、审计概念和审计技术为主要内容。加拿大审计学家安德森提出,审计理论结构应由一系列的审计概念及其相互关系所构成。在以上各种观点中可以看出,“基本哲学”是审计的理论基础:“审计概念”或“审计概念体系”在理论要素中不能同其他审计理论并列为单独的理论要素,因为其他理论要素也是审计概念:“审计要素”在审计学中一般所指的内容,已表现为相关的理论要素,且各种理论都是审计理论体系中的要素;因而,“基本哲学”、“审计概念”和“审计要素”等不是审计理论体系中的理论要素。

审计理论是审计实践(审计工作)的全面、系统、综合的理性认识,审计理论体系(审计理论结构)的理论要素应能全面、系统、综合地反映审计实践(审计工作)。因此,参考以上观点,审计理论体系的理论要素可以包括:(1)审计基础理论:审计对象、审计范围、审计目标(审计目的)、审计性质、审计任务、审计职能、审计地位、审计作用、审计分类(审计种类)(2)审计行为理论:审计程序、审计决策、审计计划、审计方法、审计证据、审计判断、审计报告、审计技术、审计风险、财务审计、管理审计、经济效益审计、经济责任审计、计算机审计、网络审计、资本验证;(3)审计体制理论:审计环境、审计机构、审计人员、国家审计、内部审计、社会审计、审计标准(审计依据)、审计假设、审计原则、审计准则、审计法规、审计职业道德、审计管理等。

审计理论体系研究的起点是审计理论中的一个重要课题。确定审计理论体系的起点应考虑以下因素:(1)能与其他科学相区别,有区别才有审计理论的发展;(2)审计理论形成的基础,审计理论是对审计实践的系统、综合的理性认识,审计实践是审计理论的源泉;(3)认识的出发点,从实际出发是认识审计和发展审计理论的出发点;(4)外部审计环境同内部审计条件相联系的联结点,审计环境通过联结点与内部审计条件相联系而发生作用。按照这些要求,笔者认为,审计对象应是审计理论体系或审计理论结构的起点理论。因为:(1)审计对象是学科的区别点,以审计对象为审计理论体系的起点理论,才能与其他科学相区别。(2)审计对象是形成审计理论的基础,审计对象的实际内容是审计实践,审计实践是审计理论的源泉,在审计实践的基础上形成和发展各种审计理论要素,如审计本质、审计目标和审计假设是与审计对象相联系而发展的;(3)审计对象是认识的出发点,审计对象的内容是具体的现实情况,从实际出发是认识审计和发展审计理论的出发点;(4)审计对象是与外部审计环境同内部审计条件相联系的联结点,外部审计环境通过审计对象与内部审计条件相联系而发生作用。

(二)审计学科体系是由各种学科要素相互联系而构成的有机整体。审计学是一门独立的学科,它包括哪些分支学科,有其发展和认识的过程。在20世纪90年代初以前,一般认为审计学科体系,包括审计学原理、财务审计学、经济效益审计学、财政审计学(政府审计学)、金融审计学、工业审计学、农业审计学、基本建设审计学、商业审计学、粮食审计学、物资审计学、外贸审计学、审计案例学、计算机审计学和审计史学等。会计改革对审计学的建设产生直接的影响,如财政部于1993年7 月1日实施的基本行业会计制度,2001年开始实施的《企业会计制度》都对审计学科建设产生了影响。

考虑审计环境的变化,笔者认为审计学科体系可以包括以下基本学科:审计学原理、政府审计学、财务审计学、管理审计学、经济效益审计学、经济责任审计学、计算机审计学、内部审计学、国际审计学、比较审计学、环境审计、风险审计、审计技术学、审计哲学和审计史学等。应该指出,审计学科体系所包括的基本学科,与学校的审计课程体系是相近的,但不是相同的;不能把审计学科体系等同为审计课程体系,审计学科体系应包括全部审计学科(审计分支学科),除审计基本学科之外,还包括其他分支学科如环境审计、风险审计和审计哲学等,而审计课程体系只设置审计学科体系中的基本学科。

3.审计组织体系

审计组织体系是指由审计机构、审计人员和审计规范等相互联系而构成的一个有机整体。显然,这里的审计组织是指广义审计组织体制。审计体制是指审计机构及其权限、关系的形式、制度和体系。审计组织体系按不同的标志可以划分不同的构成要素,由这些不同的要素构成不同的体系。

(一)审计组织体系按审计运行条件划分要素,是由审计机构、审计人员和审计规范等要素相互联系而构成的有机整体;审计体系具有层次性,由上述要素相应形成审计机构体系、审计人员体系和审计规范体系。

审计机构体系即一般所称的狭义的审计组织体系。审计组织(审计机构)体系按审计机构设置划分要素,是由国家审计机关、内部审计机构和社会审计组织等要素相互联系而构成的一个有机整体。也就是说,审计机构(审计组织)包括国家审计机关、内部审计机构和社会审计组织。根据审计体系具有层次性的要求,相应形成国家审计机关组织体系、内部审计机构组织体系和社会审计组织体系。

审计人员体系是指由各种审计人员相互联系而构成的一个有机整体。各类、各层次的审计人员是做好审计工作的关键。

审计规范体系是指由各种审计规范相互联系而构成的一个有机整体。审计规范体系按规范实施范围划分要素,是由国际审计规范、中国审计规范、主要发达国家审计规范和其他主要国家审计规范等要素构成的有机整体。中国审计规范体系按规范实施范围划分要素,是由国家审计规范、社会审计规范和内部审计规范等要素构成的有机整体。中国审计规范体系按规范内容的性质划分要素,是由审计法律规范、企业事业单位审计制度和审计职业道德规范等要素构成的有机整体。审计法律规范体系按法律规范内容的性质划分要素,是由国家宪法、审计法律、审计行政法规、审计地方性法规、自治条例、单行条例和审计规章等要素构成的有机整体。在审计法规体系中还包括其他法律法规中有关审计的法规。在审计实际工作中,还有审计执业规范体系,它是由各种执业规范相互联系而构成的有机整体。审计执业规范体系主要由四部分构成:独立审计准则(独立审计基本准则、独立审计具体准则与独立审计实务公告、执业规范指南)、注册审计师质量控制准则、注册审计师职业道德规范及注册审计师后续教育准则。

(二)审计组织体系按审计组织性质划分要素,是由国家审计组织、内部审计组织和社会审计组织等要素相互联系而构成的有机整体;根据审计体系具有层次性的要求,相应形成国家审计组织体系、内部审计组织体系和社会审计组织体系。国家审计组织体系按审计运行条件划分要素,是由审计机构(最高审计机关、地方审计机关、派出机关)、审计人员和审计规范等要素相互联系而构成的有机整体。内部审计组织体系按审计运行条件划分要素,是由内部审计组织、内部审计人员和审计规范等要素相互联系而构成的有机整体。社会审计组织体系按审计运行条件划分要素,是由社会审计机构(会计师事务所)、注册会计师和审计规范等要素相互联系而构成的有机整体。

对审计组织体系的研究,有利于探讨国际大环境和中国实际,建立中国的审计体制,特别是建立一套与国际协调的审计规范体系。

4.审计教育体系

审计教育体系是各种审计教育相互联系而构成的有机整体。审计教育体系与会计教育体系密切相关。有的学校专设审计系和审计专业,有的学校不专设审计系或审计专业而将培养审计人才的要求溶于培养会计人才要求之中,因此,培养会计人才就是在培养审计人才。在这种情况下,审计教育体系与会计教育体系是一致的。

审计教育体系的构成,包括中等审计教育、高等审计教育和其他审计教育。审计教育的重点是高等审计教育。高等审计教育是以审计本科为基点,建立审计专科、本科、研究生(硕士生、博士生)培养目标明确、相互衔接的审计教育体系。高等审计教育包括普通高等审计教育和成人高等审计教育。普通高等审计教育,是以未就业的学龄阶段的青年为主要教育对象,在一般大学和学院设有本科和专科审计专业(会计专业)、硕士和博士研究生审计专业(会计专业);成人高等审计教育是以已经就业的劳动者为教育对象,在广播电视大学、函授大学、业余大学、职工大学、管理干部学院、成人教育学院(或培训中心)等院校设有审计专业(或会计专业)。

对审计教育体系的研究,需要探讨如何培养适应审计国际化要求的人才;同时,要研究在一定范围内需要建立相对独立的审计教育体系,并在会计教育体系中重视培养审计人才的要求。

5.审计方法体系

审计方法体系是各种审计方法相互联系而构成的有机整体。审计方法体系包括哪些审计方法,在认识上还不一致。一般讲审计方法是指审计工作方法。从审计的全部内容来说,审计方法不仅指审计工作方法,还应包括其他审计方法。审计方法按其内容和性质,分为审计工作方法、审计研究方法、审计组织方法和审计教育方法,相应地,审计方法体系按其内容和性质,分为审计工作方法体系、审计研究方法体系、审计组织方法体系和审计教育方法体系。本文主要探讨审计工作方法体系和审计研究方法体系。

(一)审计工作方法体系一般称审计方法体系。审计工作方法体系是各种审计工作方法相互联系而构成的有机整体。方法体系包括哪些方法有各种认识。一般认为审计方法分为两类,审计一般方法和审计技术方法,或审计基本方法和审计技术方法,或审计思想方法和审计技术方法。审计一般方法,是在审计工作中运用唯物辩证法,进行分析、调查、判断和评价的方法;审计技术方法,是审计人员在审计过程中,所采取的技术性措施和手段。至于审计技术方法包括哪些内容,有各种见解,但从审计工作的全面性来分析,按审计工作的内容划分,一般包括审计计划方法、审计证据方法、审计报告方法、资本验证方法、咨询服务方法、审计文件处理方法和审计管理方法等;其具体方法,有计划法、检查法、盘点法、观察法、查询法、审阅法、核对法、调节法、计算法、分析法、验资法、报告法和管理法等。

(二)审计研究方法体系是各种审计研究方法相互联系而构成的有机整体。审计研究方法有各种分类:(1)审计研究方法按认识过程,分为经验知识方法、理论知识方法、理论发展方法和理论验证方法;或分为感性认识方法、理性认识方法和综合方法;或分为选题方法、搜集资料方法、资料加工整理方法和成果表达方法。(2)审计研究方法按研究目的,分为实证方法和规范方法;或分为描述性方法、规范性方法和社会经济方法;或分为经验方法、理论方法、思维方法、数学方法和属性方法;或分为实证方法、实验方法、分析方法、表述方法和历史方法。(3)审计研究方法按历史发展,分为传统审计研究方法和现代审计研究方法。(4)审计研究方法按研究的范围,分为一般研究方法和专门研究方法。(5)审计研究方法按研究的性质,分为定性方法和定量方法。(6)审计研究方法按研究的时间关系,分为静态方法和动态方法等。在实际审计研究工作中,根据审计研究项目的内容、性质和要求,需要综合运用各种研究方法。2100433B

互溶体系相关推荐
  • 相关百科
  • 相关知识
  • 相关专栏