![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
操作系统
文章平均质量分 64
一缕阳光a
(1)、从2018年8月开始从事分布式数据库内核开发工作,包括自研分布式分析型数据库OLAP、自研分布式数据库HTAP,根据开源数据库实现本公司集群型的OLTP产品,以及现在正在做的根据opengaussDB开发的HTAP类型数据库。
(2)、乐于专研,对分布式数据库有强烈的兴趣。
个人邮箱: zgaoq@163.com。
展开
-
并发与并行的区别
并发(concurrency)指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并行在多处理器系统中存在,而并发可以在单处理器和多处理器系统中都存在,并发能够在单处理器系统中存在是因为并发是并行的假象,并行要求程序能够同时执行多个操作,而并发只是要求程序假装同时执行多个操作(每个小时间片执行一个操作,多个操作快速切换执行)。并发是指一个处理器同时处理多个任务。...转载 2022-07-26 17:37:02 · 8436 阅读 · 1 评论 -
对int变量赋值的操作是原子的吗?
count++;是原子操作吗?先说答案1、在单处理器下,如果将count++;语句翻译为单指令时,是原子操作。不过现在处理器都会对语句进行优化。2、在多处理器下,对于X86和ARM两个处理器来说(1)、在X86架构下,指令集提供了指令前缀lock用于锁定前端串行总线,保证了指令执行时不会收到其他处理器的干扰。因此是原子操作。(2)、在ARM架构下,引入了独占访问内存来实现"原子操作"。原问题什么指令集支持原子操作?其原理是什么?如果考虑到全部的指令集,问题太大了,这里简化下。...转载 2022-07-26 15:31:53 · 829 阅读 · 0 评论 -
如何让linux服务器同步互联网时间
今天在工作中需要搭建一个数据库集群s1,需要将节点A、节点B和节点C都加入集群,先在A节点上创建集群,然后将B和C节点加入到集群,但是在B和C加入到集群之前,会判断B与A、C与A的时间戳是不是在设置的2s~5s内,如果两者的时间戳超过5s时,就会导致节点B或者C无法加入到集群中,这时需要修改A或者B或者C机器的时间戳,修改的方式使用的是:让linux服务器同步互联网时间。使用ntp同步互联网时间首先安装 ntpdate 命令:yum install -y ntpdate接着执行如下命令开始原创 2021-10-19 19:20:17 · 424 阅读 · 0 评论 -
epoll原理详解
原文链接:https://blog.csdn.net/daaikuaichuan/article/details/83862311设想一个场景:有100万用户同时与一个进程保持着TCP连接,而每一时刻只有几十个或几百个TCP连接是活跃的(接收TCP包),也就是说在每一时刻进程只需要处理这100万连接中的一小部分连接。那么,如何才能高效的处理这种场景呢?进程是否在每次询问操作系统收集有事件发生的TCP连接时,把这100万个连接告诉操作系统,然后由操作系统找出其中有事件发生的几百个连接呢?实际上,在Linu转载 2021-06-07 14:08:58 · 520 阅读 · 0 评论 -
linux top 命令的结果
PID:进程标志号,是非零正整数USER:进程所有者的用户名PR:进程的优先级别NI:进程的优先级别数值VIRT:进程占用的虚拟内存值RES:进程占用的物理内存值SHR:进程使用的共享内存值S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数%CPU:该进程占用的CPU使用率%MEM:该进程占用的物理内存和总内存的百分比TIME+:该进程启动后占用的总的CPU时间COMMAND:进程启动的启动命令名称...原创 2020-09-24 14:55:08 · 134 阅读 · 0 评论 -
Linux 查看进程的命令
1、psps -x : 只显示当前用户下的所有进程信息ps -aux : 所有用户下的进程信息2、top显示动态的进程信息,5s刷新一次;3、htop需要自己安装htop命令,比较牛,个人也只是简单使用过,比top命令快,可以使用鼠标操作,但是操作时比较慢,选中一条进程信息后使用F9 直接杀死进程,而不用kill -9 pid...原创 2020-09-24 14:14:27 · 261 阅读 · 0 评论 -
linux Swap交换分区概念
Swap交换分区概念什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料:Linux divides its physical RAM (random access memory) into chucks of memory called pages. Swapping is the process whereby a page of memory is copied to the preconfigured space on ..转载 2020-09-24 14:06:46 · 205 阅读 · 0 评论 -
new 与 malloc区别
new和malloc的区别属性 new/delete是C++关键字,需要编译器支持。malloc/free是库函数,需要头文件支持c。参数 使用new操作符申请内存分配时无须指定内存块的大小,编译器会根据类型信息自行计算。而malloc则需要显式地指出所需内存的尺寸。返回类型 new操作符内存分配成功时,返回的是对象类型的指针,类型严格与对象匹配,无须进行类型转...原创 2020-01-09 15:30:29 · 125 阅读 · 0 评论 -
EPOLLOUT/EPOLLIN事件触发的条件
1、EPOLLOUT事件触发的条件?(0)、c/s连接时触发一次(1)、一次write操作,写满了发送缓冲区,返回错误码为EAGAIN(11)。(2)、对端读取了一些数据,又重新可写了,此时会触发EPOLLOUT。简单地说:EPOLLOUT事件只有在不可写到可写的转变时刻,才会触发一次,所以叫边缘触发。暴力方法:直接调用epoll_ctl()重新设置一下event就...原创 2020-01-02 16:56:47 · 2643 阅读 · 2 评论 -
同步与互斥的区别
同步与互斥的区别:同步:在互斥的基础上实现对资源的有序访问。互斥:对某一资源在同一个时间只能有一个访问者。信号量:在互斥的基础上实现对资源的有序访问,是多线程、多进程之间同步的一种方式。...原创 2019-12-27 19:30:10 · 1246 阅读 · 0 评论 -
Epoll模型详解
1.内核中提高I/O性能的新方法epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调用:epoll_create(2),epoll_ctl(2),epoll_wait(2)。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4)isanewAPIintroducedin...转载 2019-12-13 09:34:16 · 197 阅读 · 0 评论 -
进程之父子进程的关系
转载:https://blog.csdn.net/qq_28840229/article/details/79844763fork之后:父子相同处: 全局变量、.data、.text、栈、堆、环境变量、用户ID、宿主目录、进程工作目录、信号处理方式...父子不同处: 1.进程ID 2.fork返回值 3.父进程ID 4.进程运行时间 5.闹钟(定时器) 6.未决...转载 2019-11-23 14:51:25 · 1145 阅读 · 0 评论 -
编译rocksdb源码导致的部署失败
这几天经历了一次心酸的历程,使用了rocksdb第三方库,编译器是7.2,rocksdb是20190701从github上取下来的,由于rocksdb自己的CMakeList.txt中使用了-march=native编译参数,强制使用了编译代码服务器的cpu指令集,由于是一个集群,集群中的服务器cpu型号信息不一定都一致,导致集群中部分服务器起不来。引起了大领导的关注,自己一下子提起了精神事情...原创 2019-10-12 18:11:41 · 758 阅读 · 0 评论 -
函数局部变量和函数的参数在栈中的布局
#include <stdio.h>#include <iostream>using namespace std;void func(int p1, int p2, int p3){ int a = p1; int b = p2; int c = p3; std::cout << "函数参数入栈顺序(栈在内存中向上...原创 2019-04-14 16:49:22 · 2396 阅读 · 1 评论 -
linux中fork()函数详解
原文地址:http://blog.csdn.net/jason314/article/details/5640969 一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork(...转载 2019-02-18 12:06:05 · 408 阅读 · 0 评论 -
Tcmalloc
TcmallocPtmalloc在性能上还是存在一些问题的,比如不同分配区(arena)的内存不能交替使用,比如每个内存块分配都要浪费8字节内存等等,所以一般倾向于使用第三方的malloc。Tcmalloc是Google gperftools里的组件之一。全名是 thread cache malloc(线程缓存分配器)其内存管理分为线程内存和中央堆两部分。 小内存分配对于小...转载 2019-02-22 11:33:47 · 3061 阅读 · 0 评论 -
进程之间的同步机制
多进程的系统中避免不了进程间的相互关系。本讲将介绍进程间的两种主要关系——同步与互斥,然后着重讲解解决进程同步的几种机制。 进程互斥是进程之间发生的一种间接性作用,一般是程序不希望的。通常的情况是两个或两个以上的进程需要同时访问某个共享变量。我们一般将发生能够问共享变量的程序段称为临界区。两个进程不能同时进入临界区,否则就会导致数据的不一致,产生与时间有关的错误。解决互斥问题应该满转载 2017-02-11 17:49:53 · 5256 阅读 · 0 评论 -
进程地址空间
内核除了管理本身的内存外,还必须管理用户空间中进程的内存,我们称这个内存为进程地址空间,也就是系统中每个用户空间进程所看到的内存,Linux操作系统采用虚拟内存技术,因此,系统中的所有进程之间以虚拟方式共享内存,对一个进程而言,它好像可以访问整个系统的所有物理内存。即使单独一个进程,它所拥有的地址空间也可以远远大于系统的物理内存。地址空间 进程地址空间由进程可寻址的虚拟内存转载 2017-03-30 19:40:38 · 575 阅读 · 0 评论 -
进程之间的通信方式-共享内存
共享内存是被多个进程共享的一部分物理内存。共享内存是进程间共享数据的一种最快的方法,一个进程向共享内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。原理图如下:共享内存的实现分为两个步骤:一、 创建共享内存,使用shmget函数。二、 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用shmat函数。创建共享内存in原创 2017-04-12 12:48:33 · 732 阅读 · 0 评论 -
Linux下的基本常用命令解析
1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括其他用户的程序。 ps -A 显示所有程序。 ps c 列出程序时,显示每个程序真正的指令名称,而不包含路径,参数或常驻服务的标示。 ps -e 此参数的效果和指定"A"参数相同。 ps e 列出程序时,显示每个程序所使用的环境变量。 ps转载 2017-07-06 13:39:28 · 226 阅读 · 0 评论 -
C和C++混合编程(__cplusplus 与 external "c" 的使用)
第一种理解比如说你用C++开发了一个DLL库,为了能够让C语言也能够调用你的DLL输出(Export)的函数,你需要用extern "C"来强制编译器不要修改你的函数名。通常,在C语言的头文件中经常可以看到类似下面这种形式的代码:#ifdef __cplusplusextern "C" {#endif/**** some declaration or so *****/#ifdef __cplus...转载 2018-05-23 13:34:13 · 824 阅读 · 0 评论 -
将GDB中的输出定向到文件
将所有栈信息保存到文件11中 在gdb中: set logging file 11 set logging on thread apply all bt set logging off 结束之后,在相关目录下查看11文件...原创 2018-08-31 18:23:06 · 1546 阅读 · 0 评论 -
解决Too many open files问题
转载:https://blog.csdn.net/zhuwinmin/article/details/72730288当用linux做高并发服务器时,会遇到"Too many open files"的错误。Linux是有文件句柄限制的(open files),而且Linux默认不是很高,一般都是1024,做高并发生产服务器用其实很容易就达到这个数量。在linux中执行ulimit -a...转载 2018-08-21 17:57:41 · 58815 阅读 · 3 评论 -
Linux Cpu 利用率计算
转载:http://blog.chinaunix.net/uid-20057401-id-1979033.html前几天要写一个取得linux performance的函数。查询了一些资料。发现有几种计算cpu利用率的方法。但是都不怎么正确。最后查了以下top的源代码。现列出其计算cpu利用率的关键函数 c代码如下:typedef struct CPU_t { TIC_t u...转载 2018-09-10 18:55:19 · 727 阅读 · 0 评论 -
linux编译动态库之-fPIC
在生成动态库时,常常习惯性的加上fPIC选项,fPIC有什么作用和意义,加不加有什么区别,这里做下小结:fPIC的全称是 Position Independent Code, 用于生成位置无关代码。什么是位置无关代码,个人理解是代码无绝对跳转,跳转都为相对跳转。1、不加fPIC选项即使不加fPIC也可以生成.so文件,但是对于源文件有要求,例如因为不加fPIC编译的so必须要在加载...转载 2018-10-11 08:58:52 · 1365 阅读 · 0 评论 -
Xshell 6如何设置多个session显示在同一个窗口
刚才安装了Xshell 6之后,发现在同一个窗口只能显示4个session,网上查找了一些资料但是都不是想要的结果,经过几分钟的查找,终于找到了设置在同一个窗口session的个数,因此记录下来,或者给与他人帮助。以下以Xshell 6为例:工具--->选项:但是显示的session过多会导致界面交互时难以找到目标主机,因此最好设置为自己能接受的个数,下面设置为10.表示在同...原创 2018-10-11 10:17:54 · 34255 阅读 · 6 评论 -
gcc/g++编译器的优化
gcc/g++编译器的优化 gcc提供了从O0-O3以及Os这几种不同的优化级别供大家选择 O0是编译器默认的设置(1)、-O1:它主要对代码的分支,常量以及表达式等进行优化 (2)、-O2:尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。(3)、-O3:在O2的基础上进行更多的优化,例如普通函数的内联,针对循环的更多优化(4)、-O...原创 2018-12-10 17:24:49 · 1460 阅读 · 0 评论 -
ptmalloc,tcmalloc和jemalloc内存分配策略研究
转载:https://cloud.tencent.com/developer/article/1173720 操作系统内存布局各种malloc的内存分配管理方式离不开操作系统的内存布局策略。32位经典内存布局32位系统下经典内存布局如上,程序起始的1GB地址为内核空间,接下来是向下增长的栈空间和由0x40000000向上增长的mmap地址。而堆地址是从底部开始,去除ELF、...转载 2019-02-22 11:24:12 · 468 阅读 · 0 评论 -
C语言面试题大汇总之华为面试题
该面试题大全可以很好地提高C++/C程序员的技术综合实力1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那转载 2017-02-11 16:55:24 · 4752 阅读 · 0 评论