自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

天行健,地势坤

远离颠倒梦想,究竟涅槃

  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 linux进程间通信:system V 信号量和共享内存实现进程间同步

关于信号量和共享内存的相关描述已经在前几篇提到过;信号量:即内核维护的一个正整数,可以使用内核提供的p/v接口进行该正整数的+/-操作,它主要用来表示系统中可用资源的个数,协调各个进程有序访问资源,防止发生冲突共享内存:操作系统从运行中的进程拥有的3G用户空间中提供一段用户态可以直接访问的内存块,并且该内存区域可以被其他进程共享信号量在共享内存中的使用基本流程:以下代码通过信号量实现了...

2019-09-30 09:15:10 559 6

原创 v-vim 代码批量缩进,字符串精确查找及替换

vim中代码批量缩进有如下两种办法,主要依靠>和<字符来进行缩进的单位通过设置~/.vimrc,添加如下行set tabstop=4 "设定tab宽度为4个字符set shiftwidth=4 "设定自动缩进为4个字符set expandtab "用space替代tab的输入set noexpandtab "不用space替代tab的输入方法一:一般模式下输入如下字符...

2019-09-29 21:32:53 646

原创 linux进程间通信:system V 信号量

概念描述英文:semaphore 简称SEM,主要用来进行进程间同步本质:内核维护的一个正整数,可对其进行各种+/-操作分类:systemV 信号量、POSIX 有名信号量、POSIX 无名信号量用途:用来标示系统中可用资源的的个数,协调各个进程有序的访问资源,防止发生冲突P操作:程序在进入临界区之前要对资源进行申请V操作:程序离开临界区后要释放相应的资源通信原理类似于房卡,...

2019-09-28 22:29:34 328

原创 linux进程间通信:system V 共享内存

文章目录通信原理优势运行流程编程接口编程实例通信原理多个进程共享物理内存的同一块区域(通常称之为“段”:segment)抛弃了内核态消息转存处理的过程,让两个进程直接通过一块内存进行通信我们普通的像PIPE,FIFO,消息队列等的通信方式如下图:这种方式的通信不论读写,都需要内核态(系统调用 read,write,pipe,mkfifo,msgget,msgsnd,msgrcv等)...

2019-09-28 11:15:25 431

原创 linux进程间通信:消息队列实现双端通信

双端通信描述利用消息队列针对发送接受消息的类型唯一性 进行多个客户端之间消息传递,而不需要server端进行消息转发。同时消息队列的读阻塞和写阻塞特性(消息队列中已经写入数据,如果再不读出来,则无法再次写入)让消息队列的实现过程只能如下:客户端1的父进程用来处理类型1的消息写,子进程处理类型2的消息读客户端2的父进程处理类型2的消息写,子进程处理类型1的消息读实现客户端1 clie...

2019-09-27 08:55:09 524

原创 linux进程间通信:system V消息队列

基本介绍支持不同进程之间以消息(messages)的形式进行数据交换,消息能够拥有自己的标识,且内核使用链表方式进行消息管理。进程之间的通信角色为:发送者和接受者发送者:a. 获取消息队列的ID(key或者msgid)b. 将数据放入一个带有标识的消息结构体,发送到消息队列接受者:a. 获取消息队列的IDb. 指定标识的消息从消息队列中读出,然后进一步后续处理支持不同的进程标记...

2019-09-26 13:14:37 341

原创 linux进程间通信:IPC对象 概念介绍(扫盲)

什么是IPC对象IPC:inter-process communication,进程间通信对象;包括如下组件:管道通信 :FIFO,PIPE,流式数据消息队列:message queue信号量:semaphore共享内存:share memory…IPC分类System V IPC当前系统调用版本主要是类unix和linux操作系统之中包含,它是在linux操作系统出现之前发...

2019-09-25 19:53:30 3558

原创 linux进程间通信:FIFO实现进程间的双向通信

fifo的双向通信的方式如下图:两个进程间的通信需要两个命名管道,分别处理一个进程的读和写导致这种通信方式出现的根因还是由于fifo的阻塞读和阻塞写,所以这里需要使用两个管道对读写进行分别处理。SERVER端代码如下:/************************************************************************* > File ...

2019-09-25 11:44:28 1896

原创 linux进程间通信:FIFO应用 /var/log/ 系统日志的模拟实现

在类unix操作系统下存在这样一个目录/var/log/,主要是记录操作系统相关的系统各个进程服务的日志信息该日志系统的特性如下:支持多进程并发写入同一文件不同进程日志信息可以写入不同文件支持使用head/tail/grep/cat/vi 等命令进行日志操作我们可以利用mkfifo的原子特性来实现一个类似的日志系统,基本结构如下写入fifo的进程代码如下:/*********...

2019-09-24 16:43:31 569

原创 linux进程间通信:命名管道FIFO

文章目录FIFO 通信特点系统调用接口应用拥有亲缘关系之间的进程通信非亲缘关系进程之间的通信总结FIFO 通信特点FIFO文件有文件名可以像普通文件一样存储在文件系统之中可以像普通文件一样使用open/write读写和pipe文件一样属于流式文件,不能使用lseek系统调用重定位文件偏移地址具有写入原子性,支持多个进程同时对FIFO进行写操作,如日志系统/var/logFir...

2019-09-20 18:06:23 421

原创 a-awk 计算数值最大,最小,平均值并保留指定位数

#!/bin/bashMEM_LOG="/tmp/osd_mem_info.log"MEM_RECORD="/var/log/ceph/mem_record.log"while [ 1 ] do top -n 1 -c -u ceph >> $MEM_LOG max_num=`cat $MEM_LOG|grep -w ceph-osd |awk ...

2019-09-18 23:46:46 1429

原创 linux 系统调用 read,write和lseek 使用

read系统调用头文件 #include <unistd.h>函数使用 ssize_t read(int fd, void *buf, size_t count)read 函数会从文件描述符fd中读取指定的count长度的内容,并且将读到的结果放入到buf缓冲区中返回值count 读取成功,则会返回读到的字节数小于count 表示同样读取成功,只是fd从current o...

2019-09-18 13:10:22 2369 1

原创 linux 系统调用 open函数使用

函数介绍本文仅仅将open系统调用的使用简单总结一下,关于其实现原理大批的大佬分享可以自行学习。open系统调用主要用于打开或者创建一个文件,并返回文件描述符。头文件 #include <fcntl.h>函数名称a. int open(const char *pathname, int flags); b. int open(const char *pathname, i...

2019-09-15 18:53:13 1103

原创 linux进程通信:pipe实现进程同步

文章目录通过管道同步进程实现代码管道缓冲区设置缓冲区大小总结 :pipe的特点通过管道同步进程管道自带同步互斥机制:管道的内核实现:fs/pipe.c ,主要通过内核的锁以及等待队列等机制实现管道的write操作会阻塞进程当内存缓冲区已满或被读进程锁定,会阻塞write操作当所有数据被写入管道时write操作才会结束管道的read操作会阻塞进程当读进程被阻塞时会形成...

2019-09-13 18:32:42 1409

原创 linux进程间通信:popen函数通过管道与shell通信

函数描述

2019-09-11 14:24:10 978

原创 linux进程间通信:shell管道 "|" 的实现

linux terminal输入如下命令,其中"|"符号即为我们上文中所说的无名管道介绍正如我们上文中所描述的"|“无名管道提供了具有亲缘关系的进程之间的通信,它由于直接使用系统调用,运行效率较高。则linux系统下可以大批量的使用”|"来提供命令直接输入输出的重定向。具体shell中管道的实现可以参考如下图:当我们直接执行lsmod时,此时进程文件描述符默认会打开标准输入,标准输出,...

2019-09-05 23:00:42 2185 3

原创 再记一次ceph object unfound的艰辛历程

感谢学无止境996同学的陪伴和vigourtyy美丽女友的支持,直到这个解决问题的深夜先说问题:ceph 12.2.1生产环境:3副本 tier + 3副本data机房在拥有业务的情况下重启集群交换机,产生如下场景:time 1: osd.1 down, osd.2 osd.3 up此时数据先落到2,3上(2为primary)time 2: osd.1 osd.2 osd.3 up...

2019-09-04 20:02:06 1725

原创 linux进程间通信:无名管道 pipe

文章目录内核层实现结构通信原理特点使用函数声明使用实例单向通信双向通信编程注意事项管道中无数据时读操作会阻塞将管道的写端句柄关闭,不会影响读端数据读取管道中没有数据,写操作关闭则读操作会立即返回管道大小测试 64K管道发生写满阻塞,一旦有4k空间,写继续总结内核层实现结构Linux操作系统中的无名管道结构如下图:管道在内核中的实现即如一个缓冲区,内核提供将该缓冲区以一个文件句柄的形式...

2019-09-01 23:31:05 504

systemtap beginner guide

systemtap基本介绍 以及 用户态探针基本用法,内核态探针基本用法,一些报错异常处理 还有非常多的基本案例,适合内核调试入门

2020-12-15

分部署存储 技能树.svg

分布式存储技能图谱,较为全面的分布式存储技能学习路线。 建域本人接触分布式存储系统中的ceph开源分布式存储较多,所以关于具体的分布式系统主要偏向于ceph的技能; 除此之外,其他的技能基本是一个好得分布式开发工程师通用的技能路线;依据该路线,我们仅仅是有一个学习的广度拓展,至于深度拓展仍需要各位看官自己评估

2019-12-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除