文章目录 一、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
Linux 内存的分类 Linux 内存的计算 Linux 进程的内存 Linux 应用内存分配 内存是计算机中与CPU进行沟通的桥梁,用于暂时存放CPU中的运算数据。...Linux 内核的内存管理机制设计得非常精妙,对于 Linux 内核的性能有很大影响。...用户内存 = Active(file) + Inactive(file) + Active(anon) + Inactive(anon) + Unevictable = buffers + cached...Active(anon): 1120720 kB Inactive(anon): 314156 kB -bash-4.3$ -bash-4.3$ cat /proc/meminfo | grep...4 4 0 r-x-- [ anon ] ffffffffff600000 4 0 0 r-x-- [ anon ] (部分省略)
一、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
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
我们知道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项组成的数组,其中第一项指向一个二级页表。
主要配置文件/etc/vsftpd/vsftpd.conf,配置如下: 允许匿名登入 anonymous_enable=YES no_anon_password=YES anon_max_rate=...data_connection_timeout=60 idle_session_timeout=600 允许匿名上传,匿名者取得的身份是ftp,所以要chown ftp /var/ftp/upload write_enable=YES #anon_other_write_enable...=YES anon_mkdir_write_enable=YES anon_upload_enable=YES chown_uploads=YES chown_username=root 实体用户相关设置...主要参考http://linux.vbird.org/linux_server/0410vsftpd.php,以及man 5 vsftpd.conf
在Linux内核,对于进程的内存使用与Cgroup的内存使用统计有一些相同和不同的地方。...shared pages (i.e., backed by a file) text (4) text (code) lib (5) library (unused in Linux...2.6) data (6) data + stack dt (7) dirty pages (unused in Linux 2.6) 见函数proc_pid_statm...(vma->vm_flags & VM_SHARED)) { anon = 1;///anon page ......if (anon) { inc_mm_counter(mm, anon_rss); page_add_new_anon_rmap(page, vma, address); } else
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(白名单
在我们使用ARM等嵌入式Linux系统的时候,一个头疼的问题是GPU,Camera,HDMI等都需要预留大量连续内存,这部分内存平时不用,但是一般的做法又必须先预留着。...anon_vma = page_lock_anon_vma(page); if (anon_vma) { /* * Take...reference if we took one */ if (anon_vma) drop_anon_vma(anon_vma); uncharge: if (!...的功能: /* * kernel module helper for testing CMA * * Licensed under GPLv2 or later. */ #include #include #include #include #include <linux
函数指针 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
前文回顾 在上篇文章 《深入理解 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 文件读写本质》 一文中也详细介绍过。
Linux里面最大的套路,就是“一切都是文件”。爱一个人,就为她捉萤火虫;做一件事,就让它成为一个“文件”。 为什么自古深情留不住,唯有“文件”得人心呢?...在跨进程的情况下,Linux支持fd的跨进程socket传输,从而可以实现共享内存、dma_buf跨进程共享等。...我们在《宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)》一文中已经详细阐述过这个过程,这里我们就不再赘述了。本文的重点在于匿名inode。...说起anon_inode_getfd_secure(),它再往底层走一级是__anon_inode_getfd(): 进而再走一级是__anon_inode_getfile(): 所以本质上,是先造一个...文件,哪怕最终是匿名的,都以冲天的香阵,弥漫整个Linux的世界。 04 用户使用匿名inode 到了要说再见的时刻了,用户可见的就是fd,通过fd来使用匿名inode。
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
PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseParNewGC -XX:+UseConcMarkSweepGC 使用ps查看进程使用的内存和虚拟内存 ( Linux...65536 55820 55820 rwx-- [ anon ]00007fa044000000 65536 55896 55896 rwx-- [ anon ]00007fa0c0000000...65536 56304 56304 rwx-- [ anon ]00007f9db8000000 65536 56360 56360 rwx-- [ anon ]00007fa0b8000000...65536 65536 65536 rwx-- [ anon ]000000073c800000 3119140 2488596 2487228 rwx-- [ anon ]total...kB 17629516 7384476 7377520 通过google,找到以下资料 Linux glibc >= 2.10 (RHEL 6) malloc may show excessive
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。
简述 FTP作为主流文件传输协议,在Linux系统管理中扮演着重要的角色。和NFS,Samba被笔者看作是Linux从业者必知必会。...本篇主要介绍如何快速创建FTP虚拟用户,帮助Linux运维新手快速上手学习。 二....⑦ 进入虚拟用户配置目录 cd /etc/vsftpd/vir_user_conf vim test 添加一下内容: local_root=/var/ftp/pub/test anon_mkdir_write_enable...=YES anon_other_write_enable=YES anon_upload_enable=YES anon_world_readable_only=YES 保存,退出 ⑧ 创建test用户根目录
查看qemu打开的所有文件(包括设备,Linux上一切皆文件),可以使用lsof -p PID,或者ls -al /proc/PID/fd: ?...结合上述的strace,不难发现,先打开/dev/kvm作为文件描述符9,再通过ioctl 9得到文件描述符10,即anon_inode:kvm-vm;同理继续可以分析出来其他的fd。...anon_inode_getfd函数创建一个名为“kvm-vm”的一个新的匿名文件,即上文的文件描述符为10的anon_inode:kvm-vm,并注册这个文件的file operation-----kvm_vm_fops...intel架构下,会使用linux-4.0.4/arch/x86/kvm/vmx.c中的vmx_create_vcpu函数。...5,vcpu run anon_inode:kvm-vcpu提供了kvm_vcpu_ioctl函数进行vcpu的ioctl。
通过前两篇文章(系统调用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内核对进程内存的分配、管理等,相信这次你会更加理解这篇文章。
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
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,仍然按匿名用户的权限做限制,并且虚拟用户访问后,把默认访问点当做根,即不允许跳出默认目录做操作
领取专属 10元无门槛券
手把手带您无忧上云