首页 > 新文章
  • Linux 进程内存分布及 堆分配和栈分配的特点 is a project mainly written in , based on the .文章目录进程内存空间分布size命令查看内存分布堆方式内存分配和栈方式内存分配比较使用stap 深入追踪malloc逻辑 进程内存空间分布 一个程序的内存空间主要如下: 代码段(text segment):只读权限;常是指用来存放程序执行代码的一块内存区域,这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于...

  • 再记一次ceph object unfound的艰辛历程 is a project mainly written in , based on the .文章目录先说问题:再说解决尝试1:尝试2(该尝试建议先在自己环境搭配对应业务测试通过后再现场尝试): 感谢 学无止境996同学的陪伴和vigourtyy美丽女友的支持,直到这个解决问题的深夜 先说问题: ceph 12.2.1生产环境:3副本 tier + 3副本data 机房在拥有业务的情况下重启集群交换机,产生如下场景...

  • Linux进程间通信:popen函数通过管道与shell通信 is a project mainly written in , based on the .函数描述 FILE *popen(const char* command,const char* type) 该函数的执行过程如下: a. 调用pipe创建一个管道,并fork创建一个子进程来执行shell,shell会创建一个子进程来执行commad b. 将父进程的输入输出重定向到管道,建立一个单向的数据流 c. 返回一个文件指...

  • Linux进程间通信:shell管道 | 的实现 is a project mainly written in , based on the .文章目录介绍重定向函数介绍总结 linux terminal输入如下命令,其中"|"符号即为我们上文中所说的无名管道 介绍 正如我们上文中所描述的"|“无名管道提供了具有亲缘关系的进程之间的通信,它由于直接使用系统调用,运行效率较高。则linux系统下可以大批量的使用”|"来提供命令直接输入输出的重定向。 具体sh...

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

  • Linux 系统调用 read,write和lseek 使用 is a project mainly written in , based on the .read系统调用 头文件 #include 函数使用 ssize_t read(int fd, void *buf, size_t count) read 函数会从文件描述符fd中读取指定的count长度的内容,并且将读到的结果放入到buf缓冲区中返回值 count 读取成功,则会返回读到的字节数 小于count...

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

  • Linux进程间通信:命名管道FIFO is a project mainly written in , based on the .文章目录FIFO 通信特点系统调用接口应用拥有亲缘关系之间的进程通信非亲缘关系进程之间的通信总结 FIFO 通信特点 FIFO文件有文件名 可以像普通文件一样存储在文件系统之中可以像普通文件一样使用open/write读写和pipe文件一样属于流式文件,不能使用lseek系统调用重定位文件偏移地址 具有写入原子性,支持多个进...

  • Linux进程间通信:FIFO应用 /var/log/ 系统日志的模拟实现 is a project mainly written in , based on the .在类unix操作系统下存在这样一个目录/var/log/,主要是记录操作系统相关的系统各个进程服务的日志信息 该日志系统的特性如下: 支持多进程并发写入同一文件不同进程日志信息可以写入不同文件支持使用head/tail/grep/cat/vi 等命令进行日志操作 我们可以利用mkfifo的原子特性来实现一个类似的日志系统,基本结...

  • Linux进程间通信:system V消息队列 is a project mainly written in , based on the .文章目录基本介绍编程接口代码实例消息队列的发送和接收消息队列中的消息对象的属性控制 基本介绍 支持不同进程之间以消息(messages)的形式进行数据交换,消息能够拥有自己的标识,且内核使用链表方式进行消息管理。进程之间的通信角色为:发送者和接受者 发送者: a. 获取消息队列的ID(key或者msgid) b. 将数据放入...

  • Linux进程间通信:FIFO实现进程间的双向通信 is a project mainly written in , based on the .fifo的双向通信的方式如下图: 两个进程间的通信需要两个命名管道,分别处理一个进程的读和写 导致这种通信方式出现的根因还是由于fifo的阻塞读和阻塞写,所以这里需要使用两个管道对读写进行分别处理。 同时因为管道传输的数据为流式数据,则无法对数据进行指定标记(数据的发送者,接受者,大小。。。)。 SERVER端代码如下: /*...

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

  • Linux进程间通信:system V 信号量 is a project mainly written in , based on the .文章目录概念描述通信原理编程接口使用流程编程案例 概念描述 英文:semaphore 简称SEM,主要用来进行进程间同步本质:内核维护的一个正整数,可对其进行各种+/-操作分类:systemV 信号量、POSIX 有名信号量、POSIX 无名信号量用途:用来标示系统中可用资源的的个数,协调各个进程有序的访问资源,防止发生冲突...

  • Linux进程间通信:system V 共享内存 is a project mainly written in , based on the .文章目录思维导图如下通信原理优势运行流程编程接口编程实例 思维导图如下 通信原理 多个进程共享物理内存的同一块区域(通常称之为“段”:segment)抛弃了内核态消息转存处理的过程,让两个进程直接通过一块内存进行通信 我们普通的像PIPE,FIFO,消息队列等的通信方式如下图: 这种方式的通信不论读写,都需要内核态...

  • V-vim 代码批量缩进,字符串精确查找及替换 is a project mainly written in , based on the .vim中代码批量缩进 有如下两种办法,主要依靠>和<字符来进行 缩进的单位通过设置~/.vimrc,添加如下行 set tabstop=4 "设定tab宽度为4个字符 set shiftwidth=4 "设定自动缩进为4个字符 set expandtab "用space替代tab的输入 set noexpandtab "不用spa...

  • Linux进程间通信:system V 信号量 生产者和消费者模型编程案例 is a project mainly written in , based on the .生产者和消费者模型: 有若干个缓冲区,生产者不断向里填数据,消费者不断从中取数据两者不冲突的前提: 缓冲区有若干个,且是固定大小,生产者和消费者各有若干个生产者向缓冲区中填数据前需要判断缓冲区是否满,满了则等待,直到有空间消费者从缓冲区中取数据前需要判断缓冲区是否为空,空了则等待,直到缓冲区有数据在某一时刻,缓冲区中只允许有一个操作...

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

  • Linux进程间通信:POSIX 消息队列 is a project mainly written in , based on the .文章目录基本介绍相关编程接口编程实例消息队列通信实例消息队列属性设置实例 基本介绍 关于消息队列的基本介绍,前面在学习system V的消息队列时已经有过了解,linux进程间通信:system V消息队列 支持不同进程之间以消息(messages)的形式进行数据交换,消息能够拥有自己的标识,且内核使用链表方式进行消息管理...

  • Linux进程间通信:POSIX 消息队列 ----异步通信 is a project mainly written in , based on the .在上一篇中linux进程间通信:POSIX 消息队列我们知道消息队列中在消息个数达到了队列所能承载的上限,就会发生消息的写阻塞。 阻塞式的通信影响系统效率,进程之间在通信收到阻塞时并不能去做其他事情,而是一直处于阻塞状态。 为了避免出现这样的低效问题,POSIX消息队列推出如下接口实现异步通信机制 函数头文件#include

  • Linux进程间通信:POSIX 共享内存 is a project mainly written in , based on the .文章目录思维导图通信原理优势POSIX 共享内存 编程接口编程案例 思维导图 之前学习过sysemV 的共享内存的实现及使用原理,参考linux进程间通信:system V 共享内存 POSIX 同样提供共享内存的接口,基本原理和system V的共享内存是一样的。 通信原理 多个进程共享物理内存的同一块区域(通常称之...