- 博客(12)
- 收藏
- 关注
原创 进程间通信--消息队列
消息队列和命名管道有很多相似之处,但少了打开和关闭管道方面的复杂性。消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。而且,每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型值得数据块。优点:通过发消息几乎完全避免命名管道得同步和阻塞问题,而且可以提前查看紧急消息。缺点:和管道一样,每个数据块都有一个最大长度得限制,系统中所有队列所包含得全部数据块得总长度也有一个上限。消息队列函数的定义:#include <sys/msg.h>int msgctl(int
2021-12-01 23:06:07
884
原创 进程间通信--共享内存
共享内存是3个IPC机制中的第二个。它允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间传递数据的一种非常有效的方式。实现共享内存常用的函数有:#include <sys/shm.h>void *shmat(int shm_id, const void *shm_addr, int shmflg);int shmctl(int shm_id, int cmd, struct shmid_ds *buf);int shmdt(const void *shm_addr
2021-12-01 22:50:52
727
原创 Linux内存管理和分配实例探索
Linux发展到现在,其内存管理机制足够成熟,内存条大小的发展速度已经足够应付日常跑应用的要求。但是,无论有多少内存可用,内存一直都是一种稀缺资源,合理的内存管理是软件正常运行的基础。对此,我对于Linux的内存分配进行了一次探索,看看在linux自身有限的内存下,程序到底能申请多少可用的内存。1.可用内存Linux可以轻松打破MS-DOS内存模型的上限,而每个Linux系统总有自己的内存申请上限,这个上限和系统内存大小有什么关系呢?下面用一个程序进行测验。首先要做一些准备工作,了解自身系统的内存是多
2021-11-13 20:50:43
1110
原创 python实现socket()模块函数
前言要通过socket实现进程间通信,需要理解客户端/服务器的概念和客户端/服务器之间收发请求的过程。1.什么是客户端/服务器架构?对于不同的人来说,它意味着不同的东西,这取决于你问谁以及描述的是软件还是硬件系统。在这两种情况中的任何一种下,前提都很简单: 服务器就是一系列硬件或软件,为一个或多个客户端(服务的用户)提供所需的“服务”。它存在唯一目的就是等待客户端的请求,并响应它们(提供服务),然后等待更多请求。另一方面,客户端因特定的请求而联系服务器,并发送必要的数据,然后等待服务器的回应,最后完成
2021-11-12 17:47:12
1191
原创 mmap实现原理解析
文章主要是探索mmap的映射原理,前两节借用其他文章讲解mmap对磁盘文件的映射,同时令我对于项目代码中对于mmap 通过/dev/mem对物理内存直接映射的过程,因此做出了一个探索
2021-11-11 16:23:05
4633
原创 2.C语言之数据类型
1.数据类型(1)整数类型short int、int、long int、long long int(2)浮点数类型float、double、long double(3)字符类型char(4)布尔类型-Bool(5)枚举类型enum2.sizeof运算符sizeof运算符用于获得数据类型和表达式的长度(1)sizeof(object) 对象(2)sizeof(type_...
2019-09-25 21:06:06
108
转载 C语言基础有问有答之一
1. 为什么我们说计算机其实是“二傻子”?答:因为计算机的“大脑”是 CPU,CPU 负责计算机大部分日常的计算功能,而 CPU 原理上只认识 0 和 1。简单而言,CPU 是由晶体管组合而成的,晶体管就是微型电子开关,它们是构建CPU的基石,你可以把一个晶体管当作一个电灯开关,它们有个操作位,分别代表两种状态:ON(开)和 OFF(关)。这一开一关就相当于晶体管的连通与断开,而这两种状态正好...
2019-09-25 11:21:41
1430
原创 1.C语言入门学习之认识C语言
1.C语言入门学习之认识C语言一、C语言的发展C语言是第三代高级语言,编程代码需要通过编译器转变编译语言,再转变为机器语言,被计算机读取。graph TDC语言 --> 编译语言 --> 机器语言二、C语言的特性1.灵活度高2.效率高3.可移植性高三、C语言是编译型语言...
2019-09-23 20:49:23
509
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人