新疆浩盛华诚网络科技有限公司

新疆IDC云服务器租用Linux内存的分配与释放原理

发布时间:2024-06-15

新疆IDC云服务器租用Linux内存的分配与释放原理

  Linux是服务器常用的系统。通常情况下云服务器租用用户也会选择Linux系统而内存的分配与释放是Linux系统的运维人员经常做的事,那么用户应该怎么做呢?

  通过 pmap 命令,可以获取用户进程逻辑地址空间中映射的内存信息:

  pmap -x $pid

  其中 -x 表示获取详细信息。

  下面是一个例子:

  pmap -x $(pidof emacs) |head -20

  其中,“Address(地址)”指的进程的逻辑地址空间。新疆IDC云服务器租用Linux内存的分配与释放原理

  “Kbytes”列表示的是对应逻辑地址的容量,以Kb为单位

  “RSS”列表示的是实际使用的物理内存容量,由于分页机制的存在,这个值一般要比”Kbytes”的值要少。

  “Mapping”列为逻辑内存的映射方式,其中”[annon]“表示通过malloc函数来分配的堆空间(匿名内存),”[stack]“为进程的栈空间,这两种映射都是将物理内存映射到进程的逻辑内存上去。 而”emacs-25.3″,”libpixbufloader-svg.so”等文件名则表示它们执行的是文件映射,他们对应的是磁盘上的文件。当这些文件被读入高速缓存后,相应的内存空间被映射成进程的逻辑内存。

  当出现多个程序共同使用相同的文件映射(共享库)时,它们可以共享磁盘高速缓存中的同一空间,从而节省物理内存的使用量,这种技术就是”共享映射”技术。

  除了共享库外,进程的fork也使用了共享映射技术。 当父进程fork子进程时,Linux内核并不对内存中的内容进行实际上的复制,而是将映射到父进程逻辑地址空间内的那部分内容原封不动地共享映射到子进程的逻辑地址空间内。 但为了防止父进程和子进程的内存操作相互影响,Linux内核在进行共享映射时,相应的内存区域会暂时设置为写保护。 当某一方进程试图操作内存时,会引发只读异常。内核检测到这个异常后,会复制操作的这个内存页,从而使两个进程都可进行独立写入。 这种在写入时复制的机制叫做“写时复制(copy-on-write)”

  另一方面,进程将可执行文件或共享库文件内容读入内存并映射到进程逻辑地址空间上时,并不会读入全部的文件内容,而是先标记”该文件的内容已经被映射到逻辑地址空间内”. 当进程访问逻辑地址空间时,由于不存在对应的物理内存,会引发换页错误的异常。内容检测到该异常后会将所需部分以内存页为单位读入内存中。 这种只读入所需内容的机制,叫做请求分页。

  以上就是关于新疆IDC云服务的小知识,想了解更新更详细的内容吗,还不赶快拿起电话来电咨询,您也可以登录新疆IDC云服务的官方网站咨询访问。


分享:

【如果您还没有关注“公司名称”手机网站】

Top