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

Linux 内核 内存管理】内存映射相关数据结构 ③ ( vm_area_struct 结构体成员分析 | shared 成员 | anon_vma_chain 成员 | anon_vma 成员 )

文章目录 一、vm_area_struct 结构体成员分析 1、shared 成员 2、anon_vma_chain 成员 3、anon_vma 成员 二、vm_area_struct 结构体完整源码...在博客 【Linux 内核 内存管理】虚拟地址空间布局架构 ⑦ ( vm_area_struct 结构体成员分析 | vm_start | vm_end | vm_next | vm_prev |vm_rb...) 中 , 分析了 vm_start vm_end vm_next vm_prev vm_rb 这 5 个结构体成员作用 ; 在博客 【Linux 内核 内存管理】内存映射相关数据结构 ② ( vm_area_struct...成员 " 虚拟内存区域 “ vm_area_struct 结构体实例 所 ” 关联 " 的 anon_vma 实例 , 会与 " 父进程 " 的 anon_vma 实例 串联起来 , 组成一个 链表...成员 anon_vma 结构体 用于 组织 " 匿名内存页 " 被 映射到的 " 用户虚拟地址空间 " , anon_vma 成员指向了 anon_vma 结构体实例 ; struct anon_vma

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

    Linux 内核 内存管理】分区伙伴分配器 ⑥ ( zone 结构体中水线控制相关成员 | 在 Ubuntu 中查看内存区域水位线 )

    一、zone 结构体中水线控制相关成员 ( managed_pages | spanned_pages | present_pages ) 二、在 Ubuntu 中查看内存区域水位线 上一篇博客 【Linux...low_wmark_pages(z) (z->watermark[WMARK_LOW]) #define high_wmark_pages(z) (z->watermark[WMARK_HIGH]) 源码路径 : linux...-4.12\include\linux\mmzone.h#255 一、zone 结构体中水线控制相关成员 ( managed_pages | spanned_pages | present_pages...) ---- 在 linux 内核源码中 描述 " 内存区域 " 的结构体 struct zone 中 , 有几个重要的参数 , 用于 控制 区域水线水位 : managed_pages 成员 表示...-4.12\include\linux\mmzone.h#427 二、在 Ubuntu 中查看内存区域水位线 ---- 在 Ubuntu 的 命令行 中 , 执行 cat /proc/zoneinfo

    2.5K30

    Linux 内核 内存管理】内存映射相关数据结构 ⑤ ( vm_area_struct 结构体成员分析 | vm_pgoff 成员 | vm_file 成员 | vm_private_data )

    vm_area_struct 结构体成员分析 1、vm_pgoff 成员 2、vm_file 成员 3、vm_private_data 成员 二、vm_area_struct 结构体完整源码 在博客 【Linux...vm_end | vm_next | vm_prev |vm_rb) 中 , 分析了 vm_start vm_end vm_next vm_prev vm_rb 这 5 个结构体成员作用 ; 在博客 【Linux...vm_page_prot 成员 | vm_flags 成员 ) 中 , 分析了 vm_area_struct 结构体中的 vm_mm vm_page_prot vm_flags 成员作用 ; 在博客 【Linux...内核 内存管理】内存映射相关数据结构 ③ ( vm_area_struct 结构体成员分析 | shared 成员 | anon_vma_chain 成员 | anon_vma 成员 ) 中 , 分析了...vm_area_struct 结构体中的 shared anon_vma_chain anon_vma 成员作用 ; 在博客 【Linux 内核 内存管理】内存映射相关数据结构 ④ ( vm_area_struct

    3.1K20

    Linux 匿名页的反向映射

    我们知道LINUX的内存管理系统中有”反向映射“这一说,目的是为了快速去查找出一个特定的物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Migrate)的时候,就能相应该更改所有相关进程的页表来达到这个目的...1、为什么要使用反向映射   物理内存的分页机制,一个PTE(Page Table Entry)对应一个物理页,但一个物理页可以由多个PTE与之相对应,当该页要被回收时,Linux2.4的做法是遍历每个进程的所有...之后确实采用过此方法,为每个页结构(Page)维护一个链表,这样确实节省了时间,但此链表所占用的空间及维护此链表的代价很大,在2.6中弃之不用,但反向映射机制的思想不过如此,所以还是有参考价值的 2、Linux2.6...anon_vma = (struct anon_vma *) (anon_mapping - PAGE_MAPPING_ANON); spin_lock(&anon_vma->lock); out...Linux采用三级页表: PGD:顶级页表,由pgd_t项组成的数组,其中第一项指向一个二级页表。

    3.7K31

    FTP服务配置与管理

    FTP服务配置与管理 一、 ftp服务器 1、ftp服务器是一种文件传输协议,主要的作用是客户端与服务器之间的文件传输功能实现 2、vsftpd是目前在Linux/unix领域应用十分广泛的一款ftp...vsftpd/vsftpd.conf b) grep -v “#” /etc/vsftpd/vsftpd.conf c) 注意:备份原始主配置文件 d) 在主配置文件输入如下命令及参数: anon_umask...=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES e) 激活配置:systemctl...o+w k) 本地访问:/home/用户名称 5、 验证服务 a) 从win主机访问ftp服务器 开启浏览器 url:ftp://linux的ftp服务器ip地址 b) 从Linux...ftp IP地址 输入anonymous 密码:回车 文件传输: win2003、2008作为Linux客户端访问Linux服务器 三、 ftp服务器管理操作 1、 本机登录ftp(白名单

    1.7K10

    Linux 内核 内存管理】内存映射相关数据结构 ④ ( vm_area_struct 结构体成员分析 | vm_ops 成员 | vm_operations_struct 结构体成员分析 )

    函数指针 6、map_pages 函数指针 7、page_mkwrite 函数指针 三、vm_area_struct 结构体完整源码 四、vm_operations_struct 结构体完整源码 在博客 【Linux...内核 内存管理】内存映射相关数据结构 ③ ( vm_area_struct 结构体成员分析 | shared 成员 | anon_vma_chain 成员 | anon_vma 成员 ) 中 , 分析了...vm_area_struct 结构体中的 shared anon_vma_chain anon_vma 成员作用 ; 一、vm_area_struct 结构体成员分析 ---- 1、vm_ops 成员...内核源码的 linux-4.12\include\linux\mm.h#361 位置 ; /* * These are the virtual MM functions - opening of an...struct list_head anon_vma_chain; /* Serialized by mmap_sem & * page_table_lock */ struct anon_vma

    1.9K30

    一步一图带你深入理解 Linux 物理内存管理

    前文回顾 在上篇文章 《深入理解 Linux 虚拟内存管理》 中,笔者分别从进程用户态和内核态的角度详细深入地为大家介绍了 Linux 内核如何对进程虚拟内存空间进行布局以及管理的相关实现。...Linux 早期使用的就是这种内存模型,因为在 Linux 发展的早期所需要管理的物理内存通常不大(比如几十 MB),那时的 Linux 使用平坦内存模型 FLATMEM 来管理物理内存就足够高效了。...那么 Linux 为什么会默认采用 4KB 作为标准物理内存页的大小呢 ?...) PAGE_MAPPING_ANON 常量定义在内核 /include/linux/page-flags.h 文件中: #define PAGE_MAPPING_ANON 0x1 而对于文件页来说...笔者在 《从 Linux 内核角度探秘 JDK NIO 文件读写本质》 一文中也详细介绍过。

    1.3K32

    宋宝华:论一切都是文件之匿名inode

    Linux里面最大的套路,就是“一切都是文件”。爱一个人,就为她捉萤火虫;做一件事,就让它成为一个“文件”。 为什么自古深情留不住,唯有“文件”得人心呢?...在跨进程的情况下,Linux支持fd的跨进程socket传输,从而可以实现共享内存、dma_buf跨进程共享等。...我们在《宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)》一文中已经详细阐述过这个过程,这里我们就不再赘述了。本文的重点在于匿名inode。...说起anon_inode_getfd_secure(),它再往底层走一级是__anon_inode_getfd(): 进而再走一级是__anon_inode_getfile(): 所以本质上,是先造一个...文件,哪怕最终是匿名的,都以冲天的香阵,弥漫整个Linux的世界。 04 用户使用匿名inode 到了要说再见的时刻了,用户可见的就是fd,通过fd来使用匿名inode。

    55920

    LINUX下的FTP上传下载应用-cyl

    vsftpd.conf vsftpd的主配置文件 以匿名用户为例,我们去掉配置文件/etc/vsftpd/vsftpd.conf 里面以下 anonymous_enable=YES(允许匿名登陆 ) anon_upload_enable...=YES(允许上传) anon_mkdir_write_enable=YES(允许下载) 再在这两句后边加上 anon_other_write_enable=YES(允许新建删除) ?...上的文件打开我的电脑输入 ftp://你的linux的ip ?...点击匿名访问再点击确认 这个就是你的共享文件夹同步在linux中/var/ftp下的pub相对应 ?...用户有向文件夹里写的权限),然后再linux中即可出现可以用cp进行复制下载 至此匿名ftp上传下载完成 有用户名的上传下载(用户名账号密码为linux账户的账号密码) 第一步vim /etc/vsftpd

    3.3K20

    宋宝华:论一切都是文件之匿名inode

    Linux里面最大的套路,就是“一切都是文件”。爱一个人,就为她捉萤火虫;做一件事,就让它成为一个“文件”。 为什么自古深情留不住,唯有“文件”得人心呢?...在跨进程的情况下,Linux支持fd的跨进程socket传输,从而可以实现共享内存、dma_buf跨进程共享等。...image.png 我们在《宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)》一文中已经详细阐述过这个过程,这里我们就不再赘述了。本文的重点在于匿名inode。...说起anon_inode_getfd_secure(),它再往底层走一级是__anon_inode_getfd(): image.png 进而再走一级是__anon_inode_getfile():...文件,哪怕最终是匿名的,都以冲天的香阵,弥漫整个Linux的世界。 04 用户使用匿名inode 到了要说再见的时刻了,用户可见的就是fd,通过fd来使用匿名inode。

    1.3K20

    示例展示虚拟内存和物理内存的分配

    通过前两篇文章(系统调用mmap的内核实现分析,Linux下Page Fault的处理流程)我们可以知道,虚拟内存是在我们向操作系统申请内存(比如malloc或mmap)时分配的,而物理内存是在我们使用...] 00007ffff00f1000 4 4 0 r-x-- [ anon ] ---------------- ------- ------- -------...当程序输出3时,此时我们已经对p对应的地址空间赋值,也就是使用了虚拟内存的第一个page,对应看pmap命令的第三次输出,此时的[ anon ]区域(第74行)显示物理内存已使用4k。...当程序输出4时,此时我们已经对虚拟内存的第二个page进行了写操作,对应看pmap命令的第四次输出,此时的[ anon ]区域(第103行)显示已使用的物理内存是8k。...再推荐下我们之前推荐过的一篇文章,讲的也是linux内核对进程内存的分配、管理等,相信这次你会更加理解这篇文章。

    1.5K10

    Linux 内核 内存管理】内存映射相关数据结构 ② ( vm_area_struct 结构体成员分析 | vm_mm 成员 | vm_page_prot 成员 | vm_flags 成员 )

    vm_area_struct 结构体成员分析 1、vm_mm 成员 2、vm_page_prot 成员 3、vm_flags 成员 二、vm_area_struct 结构体完整源码 在之前的博客 【Linux...unsigned long vm_flags 表示 虚拟内存 的 标志 ; unsigned long vm_flags; /* Flags, see mm.h. */ 虚拟内存 相关的标志位定义在 linux...-4.12\include\linux\mm.h#159 位置 上述 unsigned long vm_flags 可设置的标志位有 VM_READ VM_WRITE VM_EXEC VM_SHARED...An anonymous MAP_PRIVATE, stack * or brk vma (with NULL file) can only be in an anon_vma list. */...struct list_head anon_vma_chain; /* Serialized by mmap_sem & * page_table_lock */ struct anon_vma

    4.1K10

    第七章 FTP服务(2)

    7.2 自定义配置 7.2.1 限制用户访问位置 在客户端cmd界面中可以看到,当使用Linux系统用户登录到FTP服务器后,是允许跳出用户家目录操作的,这就存在安全风险,所以我们会想,能不能把用户锁定在家目录下...anon_mkdir_write_enable=yes ---允许上传目录 anon_other_write_enable=yes ---允许改名删除 systemctl...建立虚拟用户的思路是:Linux系统中,新建一个系统用户,做ftp专用账号,给该账号建立多个虚拟映射账号,并各自配置密码,针对客户端公开虚拟用户信息,则这些所有的虚拟用户登录到FTP服务器后,其实是同一个系统用户身份...anon_mkdir_write_enable=yes anon_other_write_enable=yes vi user2 ---可再针对user2做配置,...说明:虽然虚拟用户访问FTP时是映射到系统用户的,但是作为Linux系统来讲,虚拟用户仍然算作来宾用户,即guest,仍然按匿名用户的权限做限制,并且虚拟用户访问后,把默认访问点当做根,即不允许跳出默认目录做操作

    95920
    领券