IPC-进程间通信 一、管道 1、概念 2、pipe函数 2.1pipe介绍 2.2 pipe代码示例 父进程向子进程写数据 2.3管道读写行为 2.4管道优劣 2.5 FIFO(有名管道) 二、共享存储映射 1.创建内存映射 2.释放映射区 3.代码示例 通过mmap修改文件内容 4.mmap注意 ...
分类:
系统相关 时间:
2019-07-27 15:51:53
阅读次数:
140
一、概述 PULPino是一个以RISCV架构RI5CY/ZERO-RISCY为内核的单核SoC,复用了PULP的多个组建。PULP使用相互独立的单端口data RAM与instruction RAM。它还包括一个boot ROM,内有boot loader,可以通过SPI从外设flash加载程序, ...
分类:
其他好文 时间:
2019-07-25 10:51:06
阅读次数:
252
目前,进程间通信主要集中在管道和共享内存上使用,共享内存是总所周知的直接对内存映射操作,速度最快的通信方式,缺点,可能就是数据同步没有提供同步机制 共享存储映射 存储映射I/O 存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。于是当从缓冲区中取数 ...
分类:
系统相关 时间:
2019-07-13 18:38:48
阅读次数:
151
另一个有趣的, 但是几乎被忘记的, 接口总线是 NuBus. 它被发现于老的 Mac 计算机(那 些有 M68K CPU 家族的). 所有的这个总线是内存映射的(象 M68K 的所有东西), 并且设备只被地理式寻址. 这对 Apple 是好的和典型的, 因为更老的 Apple II 已经有一个类似的 ...
分类:
系统相关 时间:
2019-07-07 19:04:31
阅读次数:
161
kernel32 user32 ntdll 全部都是通过Mapping映射到各个文件进程内,实际上物理页就一份 为什么kernel32等dll共享时候为啥进程相互之间改写不影响? 原因:因为映射的是写拷贝属性,写的也是拷贝后的数据,而不是原数据 ...
分类:
其他好文 时间:
2019-07-07 17:51:38
阅读次数:
178
对程序的监控,一般采用另外一个进程进行监控(即主进程和监控进程),主进程运行后,先查找下看有没有还在残留运行的监控进程,如果有先结束监控进程,然后重新启动。 如何监控主程序的思路是:主程序中开辟一个共享内存映射文件,通过定时器向文件写入变化的信号数据(自定义)。监控程序定时从共享内存文件中读取信号数 ...
内存映射文件和传统的I/o过程的区别 传统IO:块设备文件,磁盘文件 系统调用->页高速缓存->分配新页->磁盘->页高速缓存->用户进程空间的缓冲区 系统调用 read(),write() 系统调用read()将阻塞调用进程,知道数据被拷贝进用户态地址空间。规范模式但wirte()不同,它在数据被 ...
分类:
其他好文 时间:
2019-06-16 20:14:55
阅读次数:
131
在计算机里,内存地址分为虚拟内存地址和物理内存地址。 数据存放在物理内存中,程序运行时使用的是虚拟内存,并通过虚拟内存地址访问数据和代码。 那操作系统是如何将虚拟内存映射为物理内存地址呢? 以X86的32位系统位例,在32系统中,系统的虚拟内存地址范围为4GB。低2GB给应用程序(Ring3级别)使 ...
分类:
其他好文 时间:
2019-06-14 14:54:16
阅读次数:
107
用不同的方法实现文件的复制 1. 通道 Channel,它是一个对象,可以通过它读取和写入数据。拿NIO与原来的I/O比较,通道就像是流。是对接操作系统底层和缓冲区的桥梁。 2. 性能比较 内存映射最快,其次是NIO读写文件,再其次是加了缓冲的IO流,最后是无缓冲的IO流 代码示例 import j ...
分类:
编程语言 时间:
2019-05-20 13:17:27
阅读次数:
150