首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux编程】存储映射IO

存储映射I/O使一个磁盘文件与存储空间中的一个缓冲区相映射,对缓冲区的读、写操作就是对文件的读、写操作,从而能够不再使用read、write系统调用。...len:须要映射的字节数。 prot:对映射存储区的保护要求,不能超过open文件时的权限。...PROT_READ:映射区可读 PROT_WRITE:映射区可写 PROT_EXEC:映射区可运行 PROT_NONE:映射区不可訪问 flag:影响映射存储区的属性。...MAP_PRIVATE:对映射区的存储操作导致创建该映射文件的一个私有副本。 filedes:指定要被映射的文件描写叙述符,映射之前须要先打开该文件。 off:要映射字节在文件里的起始偏移量。...表示存储区中有地址无法映射到文件里。 mmap实际上是将包括文件内容的内核缓冲区映射到应用程序地址空间,然后用memcpy直接进行数据的拷贝。

2.4K20

存储映射IO(mmap函数)

存储映射I/O能将磁盘文件映射到存储空间的一个缓冲区。从而实现从缓冲区读,写文件。这样,就可以在不使用read和write的情况下执行I/O。使用存储映射来进行I/O操作一般有三个方面的应用。...其中前三种可以任意组合,而PROT_NONE表示映射区域不可访问。对映射区域的访问权限不能超过open文件的时候指定的权限。 flags:指定映射区域的属性。...子进程能够通过fork继承存储映射区域,但是exec的新程序不行。 如果修改的映射区域通过MAP_SHARED标志指定属性,那么修改映射区域的操作并不会立即写回文件。...当一个进程终止的时候,会自动解除存储映射区域的映射。我们也可以是由munmap来解除映射。...10字节大小到映射区域,设置映射区域可读,可写。

1.3K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SpringBoot2---静态资源映射规则

    静态资源映射规则 1.静态资源访问 1.0 查看官网文档对应说明 1.1 静态资源目录 1.2 静态资源访问前缀 请注意: 加了静态资源访问前缀后,访问静态资源时,就必须加上前缀,这个多用于拦截器对静态资源的拦截...1.3 改变默认的静态资源路径----自己规定静态资源都放到哪个路径下面 请注意:指定新的静态资源文件夹的位置之后,springboot默认的就不生效了,也就是说我们要通过我们指定的文件夹的位置去访问静态资源...原理: 静态映射/** 请求进来,先去找Controller看能不能处理。...请注意: 加了静态资源访问前缀后,访问静态资源时,就必须加上前缀,这个多用于拦截器对静态资源的拦截 ---- 1.3 改变默认的静态资源路径----自己规定静态资源都放到哪个路径下面 spring:...private String[] staticLocations = CLASSPATH_RESOURCE_LOCATIONS; ---- 3、欢迎页的处理规则 HandlerMapping:处理器映射

    1.1K30

    从SpringBoot源码看资源映射原理

    今天就与大家一起看看SpringBoot中关于资源映射部分的主要源码实现。 建议环境允许的情况下,小伙伴们自己使用idea创建一个springBoot项目,跟着文章一起看一看源码,更容易理解。...SSM中的资源映射 在谈SpringBoot之前,我们先回顾一下SSM中关于资源配置是如何实现的。...,那么我们继续来看SpringBoot的资源映射吧。...SpringBoot的资源映射 其实SpringBoot的资源映射也是一脉相承的,当我们初始化一个SpringBoot项目后,静态资源会默认存在resource/static目录中,那么SpringBoot...static/", "classpath:/public/",“/” 自定义配置 好了,到现在我们已经知道了SpringBoot的默认资源映射来源,那么我们如何配置自定义的资源映射路径呢?

    75910

    Linux】基础IO

    今天我们要学习的是基础IO部分,主要涉及内存和外设之间的数据交互。接下来,就让我们共同探讨这部分内容吧,那我们就开始吧!...本文章重点: 复习C文件IO相关操作 认识文件相关系统调用接口 认识文件描述符,理解重定向 对比fd和FILE,理解系统调用和库函数的关系 理解文件系统中inode的概念 认识软硬链接,对比区别 认识动态静态库...文件在哪里——>文件在磁盘——>磁盘属于硬件,由操作系统进行管理——>所有人想访问磁盘都绕不开操作系统——>使用操作系统的接口——>提供文件级别的系统调用接口——>吧冉语言的文件操作接口都可以在Linux...3.read函数 read函数是Linux下的一个系统调用接口,C语言的fread函数的底层就是read。作用为从一个特定的文件流中读取内容。...4.close函数 close函数也是Linux下的一个系统调用接口,C语言的fclose底层就是close。 参数 fd:就是调用open时的返回值,本质是第一个文件描述符。

    12410

    Linux:基础IO

    ——>其实我们还可以发现  这个文件其实就是基类,而外设就是派生类,然后指针指向什么就调用什么对象,这就是多态,只不过Linux必须用C语言写,所以只能用函数指针来完成这个工作!!...4、理解了Linux的一切皆文件后,懂得了文件操作的底层,即使以后在使用其他语言的文件操作时对接口不熟,但只要给时间查一下,很快就会懂得怎么用了!!...——>因为人们在经过大量的工程实验后,发现我们总是或多或少要使用一些多态的特性,比如说写操作系统的人必然也是有可能开发语言的人,他在写的时候就意识到Linux里面很多虚拟化的东西,要不是你必须拿C去写,...——>因为很多地方需要对软件做分层,设置出各种虚拟化的场景(比如刚刚提到的文件虚拟系统就是,只不过Linux必须用C写,否则肯定用C++写更方便) ——>封装、继承、多态!...缓冲区的大小 #define FLUSH_NOW 1 //立刻刷新 #define FLUSH_LINE 2 //行刷新 #define FLUSH_ALL 4 //全刷新 typedef struct IO_FILE

    7910

    轻松突破文件IO瓶颈:内存映射mmap技术

    将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程映射同一文件,还能保证虚拟空间映射到同一块物理内存,达到内存共享的作用。...(不过虚拟内存这个词也不算错) 虚拟空间原理 物理内存 首先,物理地址实际上也不是连续的,通常是包含作为主存的DRAM和IO寄存器 以前的CPU(如X86)是为IO划分单独的地址空间,所以不能用直接访问内存的方式...(如指针)IO,只能用专门的方法(in/read/out/write)诸如此类。...现在的CPU利用PCI总线将IO寄存器映射到物理内存,所以出现了基于内存访问的IO。还有一点补充的,就如同进程空间有一块内核空间一样,物理内存也会有极小一部分是不能访问的,为内核所用。...vm_area_struct: linux使用vm_area_struct来表示一个独立的虚拟内存区域,一个进程可以使用多个vm_area_struct来表示不用类型的虚拟内存区域(如堆,栈,代码段,MMAP

    4K20

    Linux IO 模型

    对于每个连接或文件,通常需要创建一个单独的线程或进程来处理,这会导致资源消耗很高。...节约资源:NIO 可以节省系统资源,因为程序不需要创建大量的线程或进程来处理并发连接。 异步编程:NIO 是异步编程的核心,允许程序执行其他任务而不必等待 I/O 完成。这在事件驱动编程中非常有用。...fdset 从用户态拷贝到内核态,在高并发下是个巨大的性能开销(可优化为不拷贝); 调用 select 阻塞后,用户进程虽然没有轮询,但在内核还是通过遍历的方式来检查 fd 的就绪状态(可通过异步 IO...在 Linux 2.4 内核前主要是 select 和 poll,自 Linux 2.6 内核正式引入 epoll 以来,epoll 已经成为了目前实现高性能网络服务器的必备技术。...mmap 将用户空间的一块地址和内核空间的一块地址同时映射到相同的一块物理内存地址(不管是用户空间还是内核空间都是虚拟地址,最终要通过地址映射映射到物理地址),使得这块物理内存对内核和对用户均可见,减少用户态和内核态之间的数据交换

    23320

    聊聊Linux IO

    Linux IO 缓存体系,stdio和内核缓存的区别,Page Cache和Buffer Cache的区别。 Buffered IO、mmap(2)、Direct IO的区别。...文件的内容需要映射到实际的物理磁盘,这种映射关系由文件系统来完成;Buffer Cache用于缓存存储设备块(比如磁盘扇区)的数据,而不关心是否有文件系统的存在(文件系统的元数据缓存在Buffer Cache...所以后面的讨论基本上是讨论 IO 相关的系统调用和文件系统Page Cache的一些机制。 Linux内核中的IO栈 这一小节来看 Linux 内核的 IO 栈的结构。先上一张全貌图[4]: ?...设备层,通过 DMA 与内存直接交互,完成数据和具体设备之间的交互 结合这个图,想想Linux系统编程里用到的Buffered IO、mmap(2)、Direct IO,这些机制怎么和 Linux IO...mmap(2)直接把Page Cache映射到了用户态的地址空间里了,所以mmap(2)的方式读文件是没有第二次拷贝过程的。那Direct IO做了什么?

    3.2K21

    (十一)STM32——IO引脚复用与映射

    目录 端口复用 端口复用映射原理  GPIOx AFRL GPIOx AFRH ​ 流程 ---- 端口复用         STM32有很多的内置外设,这些外设的外部引脚都是与GPIO复用的。...端口复用映射原理  STM32F4系列微控制器IO引脚通过一个复用器连接到内置外设或模块。该复用器一次只允许一个外设的复用功能(AF)连接到对应的IO口。...从表中可以看出,32 位寄存器 GPIOx_AFRL 每四个位控制一个 IO 口,所以每个寄存器控制 32/4=8 个 IO 口。...寄存器对应四位的值配置决定这个 IO 映射到哪个复用功能 AF。         ...流程 首先,我们要使用 IO 复用功能外设,必须先打开对应的 IO 时钟和复用功能外设时钟。

    1.7K20
    领券