- 博客(18)
- 收藏
- 关注
原创 Jeston Nvidia Xavier NX 编译 torch1.10_cp38_aarch64
需要的自取。百度网盘 请输入提取码提取码:vhys
2022-04-23 15:22:49
156
原创 2-28 共享内存
进程间通信:内存映射:需要有文件操作;共享内存:直接操作内存,效率最高;共享内存:共享内存允许两个或者多个进程共享物理内存的同一块区域(通常被称为段)。由于 一个共享内存段会称为一个进程用户空间的一部分,因此这种 IPC 机制无需内核介 入。所有需要做的就是让一个进程将数据复制进共享内存中,并且这部分数据会对其 他所有共享同一个段的进程可用。与管道等要求发送进程将数据从用户空间的缓冲区复制进内核内存和接收进程将数据从内核内存复制进用户空间的缓冲区的做法相比,这种 IPC 技术的速度更快.
2021-11-16 21:17:01
203
原创 2-17 内存映射
内存映射是将磁盘文件中的数据映射到内存,用户通过修改内存来修改磁盘;调用相关信息: #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); - 功能:将一个文件或者设备的数据映射到内存中 - 参数: - void *addr: NULL, 由内核指定
2021-11-14 13:43:22
322
原创 2-16 有名管道进行通信
两个管道#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#include <fcntl.h>#include <string.h>int main() { // 1.判断有名管道文件是否存在 int ret = access("fifo1
2021-11-13 19:04:12
233
原创 2-15 有名管道
简介1.匿名管道只能用于有亲缘关系的进程;2.有名管道优点:提供了一个路径名与之关联,以fifo的文件形式存在于文件系统中3.一旦打开了 FIFO,就能在它上面使用与操作匿名管道和其他文件的系统调用一样的 I/O系统调用了(如read()、write()和close())。与管道一样,FIFO 也有一 个写入端和读取端,并且从管道中读取数据的顺序与写入的顺序是一样的。FIFO 的 名称也由此而来:先入先出。2 区别3 使用命令行:创建管道代码#include .
2021-11-13 17:52:38
365
原创 2-14管道的读写特点和管道设置为非阻塞
管道的读写特点:使用管道时,需要注意以下几种特殊的情况(假设都是阻塞I/O操作)1.所有的指向管道写端的文件描述符都关闭了(管道写端引用计数为0),有进程从管道的读端读数据,那么管道中剩余的数据被读取以后,再次read会返回0,就像读到文件末尾一样。2.如果有指向管道写端的文件描述符没有关闭(管道的写端引用计数大于0),而持有管道写端的进程也没有往管道中写数据,这个时候有进程从管道中读取数据,那么管道中剩余的数据被读取后,再次read会阻塞,直到管道中有数据可以读了才读取数据并返回。
2021-11-13 17:15:20
351
原创 2-12 父子进程通过匿名管道通信
/* #include <unistd.h> int pipe(int pipefd[2]); 功能:创建一个匿名管道,用来进程间通信。 参数:int pipefd[2] 这个数组是一个传出参数。 pipefd[0] 对应的是管道的读端 pipefd[1] 对应的是管道的写端 返回值: 成功 0 失败 -1 管道默认是阻塞的:.
2021-11-10 21:44:35
208
原创 2-10 进程间通信
1进程通信概念进程之间相互独立,不能在一个进程中直接访问另外一个进程的资源;进程通信的目的:1:数据传输2:通知事件:一个进程需要向另外一个进程发送消息,通知其发生了某种事件(进程终止的时候要通知父进程)3:资源共享:多个进程之间共享同样的资源。为了做到这一点,需要内核提供互斥和同步机制。4:进程控制:02 进程通信方式3 匿名管道管道:字节流、单向;中间的竖线未管道符;4 管道特点1:是内核内存中维护的缓冲器,其存储能力有限,不同操作系统大小不一定.
2021-11-10 20:57:21
51
原创 2-8 wait
/* #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *wstatus); 功能:等待任意一个子进程结束,如果任意一个子进程结束了,次函数会回收子进程的资源。 参数:int *wstatus 进程退出时的状态信息,传入的是一个int类型的地址,传出参数。 返回值: - 成功:返回被回收的子...
2021-11-09 22:33:00
90
原创 2-7进程退出,孤儿进程,僵尸进程
1 exitexit与_exit区别2孤儿进程孤儿进程结果#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main() { // 创建子进程 pid_t pid = fork(); // 判断是父进程还是子进程 if(pid > 0) { printf("i am parent proce.
2021-11-09 21:52:23
36
原创 2-6 exec函数族
#include <unistd.h> int execl(const char *path, const char *arg, ...); - 参数: - path:需要指定的执行的文件的路径或者名称 a.out /home/nowcoder/a.out 推荐使用绝对路径 ./a.out hello world - arg:是执行可...
2021-11-09 21:18:16
87
原创 2-5父子进程关系和GDB多进程调试
1 父子进程之间的关系区别:1.fork()的返回值不同;父进程 >0 返回子进程的ID子进程=02.PCB中的一些数据当前进程的id以及pid当前父进程的id ppid信号集共同点:某些状态下:子进程刚创建出来,还未执行写数据-用户区的数据;文件描述符读时共享,写时拷贝2 GDB多进程调试...
2021-11-09 20:40:07
95
原创 2-3 进程创建
可以通过man fork 来查看其功能建议查看此链接一次fork引发的惨案! - 知乎#include <sys/types.h>#include <unistd.h>#include <stdio.h>int main() { int num = 10; // 创建子进程 pid_t pid = fork(); // 判断是父进程还是子进程 if(pid > 0) { // ...
2021-11-08 22:21:27
47
原创 2-2进程状态转换
1 进程状态三个基本态:就绪态、运行态、阻塞态五态模型:新建态,终止态三态模型:运行态:进程占有处理器正在运行◼ 就绪态:进程具备运行条件,等待系统分配处理器以便运 行。当进程已分配到除CPU以外的所有必要资源后,只要再 获得CPU,便可立即执行。在一个系统中处于就绪状态的进 程可能有多个,通常将它们排成一个队列,称为就绪队列◼ 阻塞态:又称为等待(wait)态或睡眠(sleep)态,指进程 不具备运行条件,正在等待某个事件的完成(不能直接变成运行态)五态模型新.
2021-11-08 21:33:41
73
原创 2-1进程概述
1.1程序和进程程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程:二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释文件中的其他信息。(ELF可执行连接格式)机器语言指令:对程序算法进行编码。程序入口地址:标识程序开始执行时的起始指令位置。数据:程序文件包含的变量初始值和程序使用的字面量值(比如字符串)。符号表及重定位表:描述程序中函数和变量的位置及名称。这些表格有多重用途,其中包括调试和运行时的符号解析(动态链接)。共享库和
2021-11-08 21:03:58
47
原创 1-9静态库和动态库的对比
1;程序编译成可执行程序的过程2.静态库制作过程3.动态库制作过程4两者优缺点对比:库比较小使用静态库;库比较大使用动态库;静态库:优点:静态库被打包到应用程序中加载速度块;发布程序无需提供静态库,移植方便;缺点:消耗资源,浪费内存;更新、部署、发布麻烦。动态库:优点:可以实现进程中资源共享(共享库)更新、部署、发布简单;可以控制何时加载动态库;缺点:加载速度慢;发布程序时需要提供依赖的动态库;...
2021-11-03 21:38:13
68
原创 1-6动态库的制作
动态库的制作step1:创建文件夹放置相应的库tree查看:命令生成输出文件输出文件生成动态链接库使用拷贝注意路径问题;动态库使用失败的原因分析:并没有将动态库本身加载到程序里,只是加载了一些信息,但是没有加载相应的程序;解决方法添加路径,然后编译静态库动态库区别...
2021-11-03 21:17:26
49
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人