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

Linux内存描述之内存页面page--Linux内存管理(四)

1 Linux如何描述物理内存 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点(node), 内存则被分簇, 每个CPU对应一个本地物理内存, 即一个...接着各个节点又被划分为内存管理区域, 一个管理区域通过struct zone_struct描述, 其被定义为zone_t, 用以表示内存某个范围, 低端范围16MB被描述为ZONE_DMA, 某些工业标准体系结构中...简单来说, 页是一个数据块, 可以存放在任何页框(内存中)或者磁盘(被交换至交换分区)中 我们今天就来详细讲解一下linux下物理页帧描述 2 页帧 内核把物理页作为内存管理基本单位....page状态和其他信息 */ 这些标识是独立于体系结构, 因而无法通过特定于CPU或计算机信息(该信息保存在页表中) 3.1 页面管理区和节点映射 在早期linux-2.4.18内核中,...mem_map mem_map是一个struct page数组,管理着系统中所有的物理内存页面

8.4K11

Linux内存描述之概述--Linux内存管理(一)

而内存管理其他地方则认为他们就是在处理一个(伪)NUMA系统. 2.2 Linux物理内存组织形式 Linux把物理内存划分为三个层次来管理 层次 描述 存储节点(Node) CPU被划分为多个节点..., 用于表示不同范围内存, 内核可以使用不同映射方式映射物理内存 页面(Page) 内存被细分为多个页面帧, 页面是最基本页面分配单位 为了支持NUMA模型,也即CPU对不同内存单元访问时间可能不同...接着各个节点又被划分为内存管理区域, 一个管理区域通过struct zone_struct描述, 其被定义为zone_t, 用以表示内存某个范围, 低端范围16MB被描述为ZONE_DMA, 某些工业标准体系结构中...内核将每个簇所对应node又被分成称为管理区(zone)块,它们各自描述在内存中范围。...一个管理区(zone)由struct zone结构体来描述,在linux-2.4.37之前内核中是用typedef struct zone_struct zone_t数据结构来描述) 对于x86_32

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

    Linux内存描述之高端内存--Linux内存管理(五)

    但是,当Linux物理内存超过1G时,线性访问机制就不够用了,因为只能有1G内存可以被映射,剩余物理内存无法被内核管理,所以,为了解决这一问题,Linux把内核地址分为线性区和非线性区两部分,线性区规定最大为...4 页框管理 4.1 页框管理 Linux采用4KB页框大小作为标准内存分配单元。...由于CPU对内存非一致性访问,系统物理内存被划分为几个节点(每个节点描述符为pg_data_t),每个节点物理内存又可以分为3个管理区:ZONE_DMA(低于16M页框地址),ZONE_NORMAL...每个管理区又有自己描述符,描述了该管理区空闲页框,保留页数目等。每个页描述符都有到内存节点和到节点管理连接(被放在flag高位字段)。...每个进程都有其自身页面目录PGD,Linux将该目录指针存放在与进程对应内存结构task_struct.(struct mm_struct)mm->pgd中。

    12.5K23

    网站页面优化:描述(DESCRIPTION)

    描述标签,用于汇总网页内容,大概155个字符片段,搜索引擎有时会在搜索结果中展示这些内容,以便访问者在点击页面之前了解页面的内容。...如果谷歌认为网页提供描述谷歌认为不够好,谷歌会根据网页内容自动生成更适合网页摘要,使结果与查询字词更相关。由此可见元描述优化对页面基础优化至关重要,吸引用户点击你链接。...> 描述标签优化作用 描述标签是重吸睛,提高点击率,轻排名作用 SEO元描述通常展示在搜索结果页面,如果网页描述出现在搜索结果中没有相关关键词,搜索引擎会从页面的其它地方抓取一些文本...但谷歌确实使用元描述片段文本,其他搜索引擎也许可能会使用它作为排名。实践中,元描述在任何情况下都要显示在搜索结果页面中,所以元描述好坏直接影响到有多少人点击你网页链接。...确切地说,当这种情况发生时是不可预测,通常会发生这种情况,当GOOGLE认为现有的元描述不能充分满足用户搜索结果,并可以从目标页面中识别出更好匹配搜索查询片段时。 你还在网站上使用元描述吗?

    1.3K30

    Linux电源管理(11)_Runtime PM之功能描述

    因为从个人角度讲,我很推崇使用RPM进行日常动态电源管理,而不是suspend机制。 软件工程基本思想就是模块化:高内聚和低耦合。...很不幸,到目前为止,linux kernelruntime PM还是很复杂。这里复杂,不是从实现角度,而是从对外角度。...这就是当前Linux kernel电源管理中“Opportunistic suspend”和RPM两种机制并存原因。...4. runtime PMAPI汇整 RPM提供API位于“include/linux/pm_runtime.h”中,在这里先浏览一下,目的有二:一是对前面描述RPM运行机制有一个感性认识;二是为后面分析...由3.3描述可知,很多RPM请求都是异步,这些请求会挂到一个名称为“pm_wq”工作队列上,这个函数目的,就是清空这个队列,另外如果有resume请求,同步等待resume完成。

    2.5K20

    Linux内存描述之内存区域zone--Linux内存管理(三)

    接着各个节点又被划分为内存管理区域, 一个管理区域通过struct zone_struct描述, 其被定义为zone_t, 用以表示内存某个范围, 低端范围16MB被描述为ZONE_DMA, 某些工业标准体系结构中...一个管理区(zone)由struct zone结构体来描述,在linux-2.4.37之前内核中是用typedef struct zone_struct zone_t数据结构来描述管理类型用zone_type...一个管理区(zone)由struct zone结构体来描述(linux-3.8~目前linux4.5),而在linux-2.4.37之前内核中是用struct zone_struct数据结构来描述...如果空闲页数目低于pages_min = watermark[WMARK_MIN], 则内存页面非常紧张, 页回收工作压力就比较大 4.3 内存域标志 内存管理域zone_t结构中flags字段描述了内存域的当前状态...这些变量用于对高端内存页面的分配。后面将描述。 5 管理区表zone_table与管理区节点映射 内核在初始化内存管理区时, 首先建立管理区表zone_table.

    9.5K31

    Linux内存描述之内存节点node--Linux内存管理(二)

    CPU访问本地内存速度比访问远程内存速度要快 Linux适用于各种不同体系结构, 而不同体系结构在内存管理方面的差别很大....内存中每个节点都是由pg_data_t描述,而pg_data_t由struct pglist_data定义而来, 该数据结构定义在include/linux/mmzone.h, line 615 在分配一个页面时..., Linux采用节点局部分配策略, 从最靠近运行中CPU节点分配内存, 由于进程往往是在同一个CPU上运行, 因此从当前节点得到内存很可能被用到 1.3 pg_data_t描述内存节点 表示node...,用于描述该节点所拥有的物理内存页,它包含了该页面所有的内存页,被放置在全局mem_map数组中 bdata 这个仅用于引导程序boot 内存分配,内存在启动时,也需要使用内存,在这里内存使用了自举内存分配器...实例数组指针, 用于描述结点所有物理内存页.

    7.9K21

    Linux进程描述符task_struct结构体详解--Linux进程管理与调度(一)【转】

    Linux内核通过一个被称为进程描述task_struct结构体来管理进程,这个结构体包含了一个进程所需所有信息。它定义在include/linux/sched.h文件中。...现在,我们在内核中实现了一种新睡眠方法 Linux Kernel 2.6.25 引入了一种新进程睡眠状态, 状态 描述 TASK_KILLABLE 当进程处于这种可以终止新睡眠状态中,它运行原理类似于...进程内核栈 void *stack; 内核栈与线程描述符 对每个进程,Linux内核都把两个不同数据结构紧凑存放在一个单独为进程分配内存区域中; 一个是内核态进程堆栈 另一个是紧挨着进程描述小数据结构...Linux把thread_info(线程描述符)和内核态线程堆栈存放在一起,这块区域通常是8192K(占两个页框),其实地址必须是8192整数倍。...内核栈数据结构描述thread_info和thread_union thread_info是体系结构相关,结构定义在thread_info.h中 Linux内核中使用一个联合体来表示一个进程线程描述符和内核栈

    2.3K20

    Linux 文件描述符详解

    Overview 了解Linux怎样处理输入和输出是非常重要。一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确位置。同样我们也可以更好地理解输入重定向和输出重定向。...Linux标准文件描述符 文件描述符 缩写 描述 0 STDIN 标准输入 1 STDOUT 标准输出 2 STDERR 标准错误输出 ---- Linux系统将所有设备都当作文件来处理,而Linux...其实我们可以想象我们电脑显示器和键盘在Linux系统中都被看作是文件,而它们都有相应文件描述符与之对应。 其实我们与计算机之间交互是我可以输入一些指令之后它给我一些输出。...1>&6 vincent@geek:~/test$ cat test i love linux shell!!!1234 上面的命令很有意思:我首先把文件描述符6指向test文件。...命令如下: cat /dev/null > test1 ---- Linux使用/tmp目录来存放不需要一直保留文件,大多数Linux系统会在启动时自动删除/tmp目录中所有的文件。

    2.4K30

    有效python属性管理描述使用

    blog:http://ipytlab.com github:https://github.com/PytLab ❈—— 前言 最近使用描述符对自己催化动力学模拟程序进行了改进,在Python描述帮助下实现了更加灵活而且强大有效属性管理...,使得程序各个组件数据封装更加完善管理也更加有条理。...本文就以自己程序中运用描述符来进行有效python属性管理为例子,介绍python中描述概念以及如何更好使用描述符这个强有力工具帮助我们有效管理python程序中数据访问控制。...描述符触发 当我们进行属性访问时便会触发描述符(如果这个属性具有描述符定义时候),当我们对对象obj属性d进行访问时候,obj.d,描述触发过程大致:先在对象obj字典中寻找d,如果d是个含有...总结 本文总结了Python中描述符相关概念和使用,描述符可以帮助我们实现强大而灵活属性管理,通过结合使用描述符可以实现优雅编程,但是同时也应该保持谨慎态度,避免由于覆盖普通对象行为而产生不必要代码复杂性

    80990

    Linux 终端tty pty pts描述

    在使用Linux过程中,当我们通过ssh或者telnet等方式连接到服务器之后,会有一个相应终端来对应。而在直接登陆到Linux服务器时候也有一个对应终端。...也就是说所有登陆到当前Linux服务器用户都有一个对应终端,那他们有什么差异,终端到底是怎么一回事?本文作简要描述如下。...控制台是一种特殊的人机接口, 是人控制主机第一人机接口。而主机对于控制台信任度高于其他终端。控制台可以类比为我们操作系统超级管理员,可以禁用某个用户权限,禁用用户登陆等等。...二、终端模式 1、Linux X window X window环境,即图形界面终端模式,类似于Windows图形画界面,也就是通过鼠标的点点来完成所有的管理任务。...5、pts/ptmx(pts/ptmx结合使用,进而实现pty): 伪终端(Pseudo Terminal)是终端发展,为满足现在需求(比如网络登陆、xwindow窗口管理)。

    6.9K30

    Linux编程(文件描述符)

    Linux编程世界中,不可能没听过文件描述符这个概念,我们操纵任何设备时候,几乎都要通过它来达成,它究竟是何方神圣呢?随我描述符科学家来一探究竟。...首先,我们在Linux下打开文件用都是如下代码: int fd = open(... ...); 当然有同学可能会说,有时也可以用fopen(),但是fopen()只是标准IO对系统IO封装,归根结底还是使用...很多人就想当然地以为打开嘛,就跟在windows下双击一个文件,或者双击一个文件夹一样,就是一个动作而已,其实不然,常说打开一个文件实际上最重要是获取这个文件描述符,描述符是用来表征这个文件代表物...内核空间中有一堆数据结构表达一个文件属性信息,但是用户空间看不见,只看见一个代表了这些信息整数i,通常我们称之为文件描述符,对文件读写和ioctl操作都是通过这个东东来达到呢!

    1.7K20

    调整进程最大linux文件描述

    1.介绍 ---- ulimit 命令提供了针对 shell和或由该 shell 启动进程占用资源控制。  持久化修改生效是在/etc/security/limits.conf中进行数据写入....写入格式为: domain:用户名/用户组名/其他(查看man limits.conf) type: hard / soft ,分别指实际最大值类型和预警值类型...maxsyslogins/priority/locks/sigpending/msgqueue/nice/rtprio/ value: -1/unlimited/infinity/ 具体值 要修改最大文件描述符重点在于...item和value 2.修改 ---- 2.1 先查看当前用户最大文件描述符数量: 1 ulimit -Hn 2 ulimit -Sn 2.2 修改当前用户进程最大文件描述符数量: 1 vim...在末尾添加 3 user soft nofile 4096  (user为用户名) 4 user hard nofile 10240 5 保存后退出登录再重新登录 6 使用上面的命令查看新limit

    3.1K50

    Linux内核编程--文件描述

    Linux操作系统中,一切皆是文件—— "Everything is a file"。 如果要在Linux系统中编写操作文件代码,需要借助文件描述符。...文件索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开文件所创建索引值。 文件描述符指向内核为每一个进程维护打开文件记录表。当要处理文件时,将文件对应文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间映射关系: Linux中查看文件描述指令:lsof(list open files) lsof可以打开文件: 普通文件 目录 网络文件系统文件 字符或设备文件...标准提供默认文件描述符: 操作系统提供四种常见I/O文件操作函数 (fd表示“文件描述符”): fd = open(pathname, flags, mode) numread = read(

    2.8K10

    Linux Linux下最大文件描述符设置

    系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 65535 说明: 所有进程打开文件描述符数不能超过/proc/sys/fs/file-max...查看当前系统使用打开文件描述符数 # cat /proc/sys/fs/file-nr 1280 0 0 113986 说明:第一个数表示当前系统已分配文件描述符数(文件句柄数),第二个数为分配后已释放文件描述符数...(当前不再使用文件描述符数),第三个数为最大文件描述符数,等于file-max。...如上,表示进程可打开最大文件描述符数soft limit为65535,hard limit为65535 3、需要注销重新登录配置才会生效 4、/proc/sys/fs/nr_open是单个进程可分配最大文件数...单个进程打开文件描述符数不能超过user limit中nofilesoft limit c. nofilesoft limit不能超过其hard limit d.

    6.4K42

    Linux 进程、线程、文件描述底层原理

    Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...内核对于一个进程描述,也可以称为「进程描述符」。...我们常说「文件描述符」就是指这个文件指针数组索引,所以程序文件描述符默认情况下 0 是输入,1 是输出,2 是错误。...因为硬件都是由内核管理,我们进程需要通过「系统调用」让内核进程访问硬件资源。 PS:不要忘了,Linux 中一切都被抽象成文件,设备也是文件,可以进行读和写。...为什么说 Linux 中线程和进程基本没有区别呢,因为从 Linux 内核角度来看,并没有把线程和进程区别对待。

    1.4K10

    Linux 进程、线程、文件描述底层原理

    Linux进程其实就是一个数据结构,顺带可以理解文件描述符、重定向、管道命令底层工作原理,最后我们从操作系统角度看看为什么说线程和进程基本没有区别。...内核对于一个进程描述,也可以称为「进程描述符」。...我们常说「文件描述符」就是指这个文件指针数组索引,所以程序文件描述符默认情况下 0 是输入,1 是输出,2 是错误。 我们可以重新画一幅图: ?...对于一般计算机,输入流是键盘,输出流是显示器,错误流也是显示器,所以现在这个进程和内核连了三根线。因为硬件都是由内核管理,我们进程需要通过「系统调用」让内核进程访问硬件资源。...到这里,你可能也看出「Linux 中一切皆文件」设计思路高明了,不管是设备、另一个进程、socket 套接字还是真正文件,全部都可以读写,统一装进一个简单files数组,进程通过简单文件描述符访问相应资源

    2.5K30

    Django-4 管理页面

    Django 管理页面是查看我们应用程序中当前数据好方法,并且还为我们提供了用于创建或修改该数据良好图形化界面展示。让我们开始吧: ?...当我们运行项目访问http://127.0.0.1:8000/admin后,会出现django管理界面地址: ?...我们需要为创建一个超级管理员账号,首先在django_project文件夹命令行下执行python manage.py makemigrations 创建迁移: ?...然后我们在django_project文件夹下运行python manage.py runserver 启动项目,访问http://127.0.0.1:8000/admin,输入刚才创建用户名密码:...点击Users可以查看已经创建管理员用户: ? 点击用户查看详细信息,用户名、加密密码、邮箱、权限等: ? 还可以添加、编辑用户: ? 今天管理页面学习就到这里

    64420
    领券