linux千峰
文章平均质量分 91
流光一逝&&
菜鸡为入门程序员
展开
-
linux进程间通信(IPC) --- 共享内存
共享内存概述共享内存允许两个或者多个进程共享给定的存储区域共享内存的特点1.共享内存是进程间共享数据的一种最快的方法一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容2.使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥若一个进程正在向共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读,写这些数据。上面图片讲解:左右两边每一个进程在创建的时候,都会给它分配4G的虚拟内存,所以左右两边的空间叫做虚拟内存,而中间的是物理内存,也就是内存条原创 2021-12-27 23:46:01 · 592 阅读 · 0 评论 -
linux进程间通信(IPC) ------ 消息队列
消息队列消息队列是消息的链表,存放在内存中,由内核维护IPC对象除了最原始的进程间通信方式,信号,无名管道,有名管道外,还有三种进程间通信方式称之为IPC对象IPC 对象的分类; 消息队列,共享内存,信号灯集IPC对象也是在内核空间开辟区域,每一种IPC对象创建好之后,都会将其设置为全局,并且会给其分配一个编号,只要找到唯一的这个编号,就可以进行通信,所以不相关的进程,也可以通过IPC对象进行通信IPC对象创建好之后,会在当前系统中可见,只要不删除或者不关闭系统,就会一直存在查看已经创建的.原创 2021-12-27 21:31:01 · 850 阅读 · 0 评论 -
linux进程间通信(IPC)--------- 有名管道
有名管道也称命名管道命名管道(FIFO)和管道基本相同,但也有一些显著的不同其特点是4.FIFO在文件系统中作为一个特殊的文件而存在并且在文件系统中可见,所以有名管道可以实现不相关进程间通信,但FIFO中的内容却存放在内存中7.当使用FIFO的进程退出后,FIFO文件将继续保存在文件系统中以便以后使用8.FIFO有名字,不相关的进程可以通过打开命名管道进行通信通过有名管道所创建的进程间通信方式,最终会在本地给你创建一个p类型的文件就是一个管道文件。linux中文件的类型有7中b .原创 2021-12-27 14:41:44 · 273 阅读 · 0 评论 -
linux进程间通信(IPC) ---- 文件描述符 dup dup2
文件描述符概述文件描述符是非负整数,是文件的标识用户使用文件描述符(file descriptor)来访问文件利用open打开一个文件时,内核会返回一个文件描述符每个进程都有一张文件描述符的表,进程刚被创建时,标准输入,标准输出,标准错误输出设备文件被打开,对应的文件描述符0, 1, 2记录在表中在进程中打开其他文件时,系统会返回文件描述符表中最小可用的文件描述符,并将此文件描述符记录在表中注意:linux中一个进程最多只能打开NR_OPEN_DEFAULT(即1024)个文件,也就意味着最多原创 2021-12-25 23:02:39 · 935 阅读 · 0 评论 -
linux进程间通信(IPC) ---无名管道
管道概述管道(pipe)又称无名管道无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符任何一个进程在创建的时候,系统都会,给它分配4G的虚拟内存,分为3G的用户空间和1G的内核空间,内核空间是所有进程公有的。无名管道就是创建在内核空间的,多个进程知道同一个无名管道的空间,就可以利用它来进行通信无名管道虽然是在内核空间创建的,但是会给当前用户进程两个文件描述符,一个负责执行读操作,一个负责执行写操作无名管道的创建#include <unistd.h>int pi原创 2021-12-25 17:51:58 · 1055 阅读 · 0 评论 -
linux进程间通信(IPC) ---- 信号集 信号阻塞集
信号集概述一个用户进程常常需要对多个信号进行处理,为了方便对多个信号进行处理,在linux系统中引入了信号集,信号集是用来表示多个信号的数据类型信号集数据类型sigset_t定义路径/usr/include/x86_64-linux-gnu/bits/sigset.h(Ubuntu 16.04)信号集相关的操作主要有如下几个函数sigemptysetsigfillsetsigismembersigaddsetsigdelsetsigemptyset函数功能: 初始化一个空的信原创 2021-12-24 20:51:47 · 663 阅读 · 0 评论 -
linux进程间通信(IPC) ------- 信号 kill alarm raise abort pause signal函数 信号阻塞集
进程间通信进程是一个独立的资源分配单位,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源,(例如打开的文件描述符)进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信进程间通信功能数据传输:一个进程需要将发送给另一个进程资源共享;多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件进程控制:有些进程希望完全控制另一个进程的执行(如 debug进程),此时.原创 2021-12-24 17:05:19 · 637 阅读 · 1 评论 -
linux系统编程之进程
进程的定义 程序运行起来就成为了一个进程程序: 是静态的,存放在磁盘上的可执行文件进程: 是动态的,是运行在内存中的程序的执行实例.程序是一些指令的有序集合,而进程是程序执行的过程,是程序的一次执行过程。进程的状态是变化的,其包括进程的创建,调度和消亡只要程序运行,此时就是进程,程序每运行一次 ,就会创建一个进程在linux系统中,进程是管理事务的基本单元进程拥有自己独立的处理环境和系统资源(处理器,存储器,I/O设备,数据,程序)。可使用exec函数由内核将程序读入内存,使其执行起来称.原创 2021-12-16 23:57:15 · 922 阅读 · 0 评论 -
linux系统编程之系统调用
系统编程概述操作系统的职责操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来什么是linux系统编程在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问,学会了c语言再知道一些系统调用的方法,就可以进行linux系统编程了系统编程概述主要就是为了让用户能够更好的和更方便的操作硬件设备,并且对硬件设备也起到保护作用,我们所写的程序,本质就是对硬件设备的操作,所以操作系统提供接口,可以对硬件进行操作,这就是系统编程系统调用概述本质都是对硬件设备的操作.原创 2021-12-14 21:59:49 · 1387 阅读 · 0 评论 -
Linux 系统编程 互斥锁 信号量,多任务互斥和同步
多任务互斥和同步互斥和同步概述在多任务操作系统中,同时运行的多个任务可能都需要访问/使用同一种资源,多个任务之间有依赖关系,某个任务的运行依赖于另一个任务,同步和互斥就是用于解决这两个问题的互斥一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源,POSIX标准中进程和线程同步和互斥的方法,主要有信号量和互斥锁两种方式同步两个或两个以上的进程或线程在运行过程中协调步调,按预定的先后次序运行同步就是在互斥的基础上有顺序互斥锁互斥锁的概念:mutex是一种简.原创 2021-12-11 00:49:38 · 296 阅读 · 0 评论 -
linux 系统编程, 线程 多线程 常用API
linux线程多线程初探进程与线程的区别进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述。进程才是程序(那些指令和数据)的真正运行实例。典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。线程:线程是操作原创 2021-12-09 16:05:40 · 1174 阅读 · 0 评论