摘要:
一、下载解压linux内核源码 1、进kernel官网下载源码 我这里下载的是5.4.191版本(仅做实验),为了和我ubuntu虚拟机的交叉编译环境匹配。 2、解压内核源码压缩包 xz -cd linux-5.4.191.tar.xz | tar xvf - 二、清理临时文件 1.删除大多数的编译 阅读全文
摘要:
相关链接: select、poll、epoll程序实例 什么是IO多路复用,理解IO多路复用 一、概述 1、IO操作类型介绍 (1)同步IO 在操作系统中,程序运行的空间分为内核空间和用户空间,用户空间所有对io操作的代码(如文件的读写、socket的收发等)都会通过系统调用进入内核空间完成实际的操 阅读全文
摘要:
相关链接:线程 一、概述 1、为什么使用线程 从进程演化出线程,最主要的目的就是减少进程上下文切换开销。 进程是资源管理的最小单位,那么每个进程 都拥有自己的数据段、代码段和堆栈段。 这必然就造成了进程在进行切换时都需要有比较复杂的上下文切换等动作,因为要保存当前进程上下文的内容, 还要恢复另一个进 阅读全文
摘要:
进程上下文实际上是进程执行活动全过程的静态描述。 我们把已执行过的进程指令和数据在相关寄存器与堆栈中的内容称为上文, 把正在执行的指令和数据在寄存器和堆栈中的内容称为正文, 把待执行的指令和数据在寄存器与堆栈中的内容称为下文。 具体的说,进程上下文包括计算机系统中与执行该进程有关的各种寄存器(例如通 阅读全文
摘要:
一、概述 共享内存用于用于进程间的数据共享, 开辟一块物理内存空间, 各个进程将同一块物理内存空间映射到自己的虚拟地址空间中, 通过虚拟地址进行访问, 进而实现数据共享 共享内存是最快的进程间通信方式, 因为通过虚拟地址空间映射后, 直接通过虚拟地址访问物理内存, 相较于其他方式少了两步数据拷贝的操 阅读全文
摘要:
一、概述 1.信号量 信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),用于多进程对共享数据对象的读取,它和管道有所不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进 阅读全文
摘要:
相关链接:消息队列 一、概述 1、什么是消息队列 消息队列是进程间通信的一种,它是由操作系统维护的以字节序列为基本单位的间接通信机制,遵循先进先出的原则,它提供了一个进程向另一个进程发送一个带类型的数据块的方法。 2、特点: 消息队列是进程或线程间通讯的其中一种方式。遵循先进先出的原则,保证了时间的 阅读全文
摘要:
1、信号 (1)概述 信号是软件中断,进程接收信号后做出相应响应,它提供了一种处理异步事件的方法。每个信号都有名字,这些名字以SIG开头,信号都定义在<signal.h>头文件中,并且都是正整数常量。 (2)怎么产生信号 硬件 执行非法指令 访问非法内存 驱动程序 软件 Ctrl + C:中断信号。 阅读全文
摘要:
命名管道 可用于没有亲缘关系的进程间进行数据传输,数据只能单向流动。 (1)创建管道 #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *filename,mode_t mode) filename:用户读写的FIF 阅读全文
摘要:
1、无名管道 用于具有亲缘关系的进程间通信(常见的就是父子进程),数据只能单向流动。 (1)创建管道 #include<unistd.h> int pipe(int pipefd[2]); 参数: pipefd[2]:参数为两个文件描述符,一个读文件描述符,一个写文件描述符。 返回值: 成功返回0 阅读全文