暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片
PostgreSQL--内核分析--多进程结构.pdf
363
34页
0次
2021-02-23
50墨值下载
PostgreSQL 数据库---内核源码分析 那海蓝蓝:生活点滴,随风拂去
1 / 34
多进程与多线程PostgreSQL MySQL 结构对比
作者:李海翔
博客:http://blog.163.com/li_hx/
邮箱:lhx3000@163.com
1 进程 .............................................................................................................................................. 2
1.1 理解进程 .......................................................................................................................... 2
1.1.1 进程进程的创建 ................................................................................................... 3
1.1.2 进程间的通信方 ............................................................................................... 4
1.1.2.1 共享内存 ...................................................................................................... 6
1.1.2.2 管道 .............................................................................................................. 7
1.1.2.3 信号 ............................................................................................................ 11
1.2 Windows 系统下进程的使..................................................................................... 13
1.3 Linux 系统下进程的使用 .......................................................................................... 15
2 线程 ............................................................................................................................................ 17
2.1 线程安全..................................................................................................................... 18
2.2 TLS,线程本地存储.................................................................................................. 20
2.3 线程的创建与使 ..................................................................................................... 21
3 进程与线程实例 ........................................................................................................................ 21
3.1 多进程结构的大型数据库管理系统―PostgreSQL ............................................. 22
3.1.1 PostgreSQL 基本架构 ........................................................................................ 23
3.1.2 如何知道 PostgreSQL 是多进程结 ............................................................... 24
3.1.3 掌握 PostgreSQL 进程结构的主要代码 ........................................................... 26
3.2 多线程结构的数据库管理系统――MySQL ............................................................ 26
3.2.1 MySQL 基本架构............................................................................................... 28
3.2.2 如何知道 MySQL 是多线程结构 ...................................................................... 29
3.3 PostgreSQL MySQL 对比 ..................................................................................... 30
3.3.1 PostgreSQL 文件目录的组织 ............................................................................ 30
3.3.1.1 整体代码结构............................................................................................. 30
3.3.1.2 src 主目录下代码结构 ................................................................................ 31
3.3.1.3 数据库服务器主要代码结构 ..................................................................... 31
3.3.2 MySQL 的文件目录组织 ................................................................................... 33
3.4 PostgreSQL 如果线程化如何处理 ............................................................................ 34
PostgreSQL 数据库---内核源码分析 那海蓝蓝:生活点滴,随风拂去
2 / 34
1 进程
进程,何为进程
对于我们写程序的人来讲,代码写好后经编译程序编译C 代码需要链接)等过程才能
运行。这个阶段有时候很繁琐,尤其是编译大型程序集的时候,经常会花费很长时间,如果
机器的物理性能好一些的话,编译速度还是可以忍受的。当我们看着自己写静态代码组合
成一个复杂的程序集合时,也许自己会由衷地心生得意:一会,我的程序就可以运行了……
我的“程序”?注意,这里有个概念了,“程序,什么是程序?其实,作为程序员,我
们所谓的程序通常指的是静态的“源代码”,而上文提及的“编译程序”是一个静态的源码集
合吗?答案是既肯定又否定,此“编译程序”是在操作系统上可执行的实体,已经被编译程
序翻译解析、链接程序装配组合过了的、具有编译其他程序代码功能的可执行软件包,这是
其静态特性;当其开始编译其他代码时,被调入内存执行,就具有了动态特性。
可执行的软件包在执行的过程中,被操作系统调入内存,通过 CPU、寄存器等的配合
在微指令系统的调下被执行,这样的行为方式遵从着冯诺依曼体系结构,但同时,正在被
执行的程序也就有了一个表示其在内存中存在的状态的名称――“进程
1.1 理解进程
书归正传,我们深入理解一下进程:首先,进程是是一个正在运行的程序的实例此实例
具有一个动态的概念,程序员书写的各种 C 代码、Java 代码、各式脚本代码等,不具有动态
的特性,所以充其量只能称为代码段,众多代码段积攒构成完整的语义整体才能被编译使用。
未被操作系统调用前,其存在形式只能以静态这个词来描述。与“静”相对的,就是“动”
动静二字描述了生活中万事万物的基本状态,计算机领域很好的把现实生活中存在的概念搬
迁到计算机领域里,动静结合,相得益彰。
让我们的思绪再飘远一点,讲讲静与动的关系。
程序与进程,是静与动的关系。
进程执行中,数据与正在执行的可处理数据的进程片段,是静与动的关系。
进程处理数据,数据事先给定这种方式和进程动态获取不同数据,是静与动的关系
静与动,在计算机领域普适存在。例如:
示例需求:编写测试用例测试 strcat 函数。
解决方式一:测试用例写到测试程序中。
解决方式二:测试用例写到文件中,动态读取用例文件进行测试。
点评:
第一种方式把测试用例集与代码耦合,灵活性不够,修测试用例需要重新编译代码,
显然不好;第二种方式把测试用例集同代码有效分离,更为合适从而为程序动态获取数据
提供了便利支持,这里采用分别对待的思维方式,把动(变化的测试用例)与静(固定的测
试程序:实现读测试用例进行测试的功能)的状态区别,有效实现解耦
通过考虑动静的关系,区分动态和静态,极大地增加了灵活性,这,在计算机领域比比
of 34
50墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜