标签 page 下的文章

  • 📂linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()教程

    原文地址linux内核中的IS\_ERR()、PTR\_ERR()、ERR\_PTR() IS\_ERR宏定义在include/linux/err.h,如下所示:define MAX\_ERRNO 4095// 判断x是不是在(0xfffff000,0xf fffffff)之间,注意这里用unlikely()的用意 #define IS\_ERR\_VALUE(x) unlikely(...

  • 📂内存管理基础(Linux内核涉及与实现)教程

    文章目录1. 页2. 区3. 获得页3.1 获得填充为0的页3.2 释放页4. kmalloc():物理地址和虚拟地址都连续4.1 gfp\_mask标志4.2 kfree()5. vmalloc():虚拟地址连续,物理地址地址无须连续6. slab层6.1 slab层的设计6.2 slab分配器的接口7. 在栈上静态分配8. 高端内存的映射8.1 永久映射8.2 临时映射9. 每个CPU的...

  • 📂linux内存管理(十一)-页回收总览教程

    随着linux系统不断分配内存,当系统内存压力越来越大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文件页进行的。对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页,将它们写入到swap分区中,然后作为空闲页框释放到伙伴系统。而对于文件页,内存回收过程中也会筛选出一些不经常使用的文件页,如果此文件页中保存的内容与磁盘中文件对应内容一致,说明此文件页是一个干...

  • 📂linux kernelcrypto api学习教程

    struct blkcipher_walk { union { struct { struct page *page; unsigned long offset; } phys; struct { u8 *page; u8 *addr; ...

  • 📂linux内存管理(六)-伙伴分配器教程

    linux内存三大分配器:引导内存分配器,伙伴分配器,slab分配器伙伴分配器当系统内核初始化完毕后,使用页分配器管理物理页,当使用的页分配器是伙伴分配器,伙伴分配器的特点是算法简单且高效,支持内存节点和区域,为了预防内存碎片,把物理内存根据可移动性分组,针对分配单页做了性能优化,为了减少处理器的锁竞争,在内存区域增加1个每处理器页集合。 1.伙伴分配器原理 连续的物理页称为页块(p...

  • 📂Linux内核内存管理与漏洞利用教程

    linux服务器开发相关视频解析:90分钟了解Linux内存架构,numa的优势,slab的实现,vmalloc的原理 深度详解Linux内存管理(MM)机制c/c++ linux服务器开发学习地址:c/c++ linux后台服务器高级架构师本文主要介绍Buddy System、Slab Allocator的实现机制以及现实中的一些漏洞利用方法,从攻击者角度加深对Linux内核内存管理机...

  • 📂深入浅出Linux内核内存管理基础,看完醍醐灌顶教程

    -1 背景内存管理是Linux内核通过软硬件协作来管理内存的分配及回收的一种方法。在Linux系统上电自检(POST,Power-On-Self-Test)阶段使用临时内存,而系统启动后正常运行阶段的内存使用又有两大类:(1)固定的内存分配,是永久的不变的,主要给内核代码及数据使用;(2)动态内存分配,主要源于进程的创建和空间的扩张。本文主要针对操作系统正常运行时对动态内存的管理。我们知道,...

  • 📂Linux中的info page教程

    Linux系统中除了使用man来查询命名或者相关文件的用法,还可以使用info命令。与man命令不同的是,info命令将数据拆成一个一个段落,每个段落使用单独的页面编写,同时页面中还有类似超链接的功能,可以实现相互跳转。每个独立的页面成为一个node。下面我们用info命令来查看info命令本身,输出如下:[vbird@www ~]$ <strong>info info</...

  • 📂【内存管理】ION内存管理器浅析(system contig heap)教程

    system contig heap与system heap从代码中我们看到system contig heap与system heap同属一个文件中,ion\_system\_heap.c相同点:它们都是根据用户传递的字节len,转换成order,从buddy中申请内存页不同点:contig heap申请的是连续内存页,最大能到order 10(受限于buddy)。而system heap...

  • 📂nginx自定义错误页教程

    文章目录自定义错误页1.为每种类型的错误设置单独的处理方式2.利用在线资源进行处理错误3.更改晌应状态码4.设置错误页面案例自定义错误页- 在网站访问过程中,经常会遇见各种各样的错误,如找不到访问的页面则会提示 404 Not Found 错误,没有访问权限会提示 403 Forbidden 等,对于普通人而言,这样的提示界面 并不友好。在 Nginx 的主配置文件中,给出了以下的处理方式。...

  • 📂Linux设备驱动程序学习笔记——第八章分配内存教程

    Linux设备驱动程序学习笔记第八章分配内存一、kmalloc函数的内幕 (1)flags参数//kmalloc原型 #include<linux/slab.h> void *kmalloc(size_t size, int flags);//flags分配标志,最常用的是GFP_FERNEL 分配标志:GFP\_ATOMIC用于在中断处理例程或其他运行于进程上下文以外的代码...

  • 📂操作系统--虚拟内存管理知识详解教程

    操作系统--虚拟内存管理Objectives 背景 请求分页 即写即拷**页面替换**帧的分配抖动[](#_292)[](#_294)[](#_296)Objectives 描述虚拟内存的好处  解释请求分页、页面替换算法和页面分配的概念讨论工作集模型的原理 背景背景 虚拟内存 用户逻辑内存与物理内存的分离。  只有部分程序需要在内存中执行  因此,逻辑地...

  • 📂arm64 Linux内核内存伙伴系统3---初始化教程

    文章目录1.初始化与伙伴系统相关的数据结构2.将memblock管理的内存空间释放到伙伴系统中去2.1 reserve\_bootmem\_region函数2.2 \_\_free\_memory\_core函数伙伴系统初始化涉及两个方面:1.初始化与伙伴系统相关的数据结构,2.将memblock管理的内存空间释放到伙伴系统中去.1.初始化与伙伴系统相关的数据结构对于伙伴系统相关数据结构的初...

  • 📂Linux内核简单启动流程以及功能描述教程

    /arch/arm/kernel/head.S svc mode irqs disabled get processor id /arch/arm/kernel/head-common.S \arch\arm\include\asm\procinfo.h \arch\arm\kernel\asm-offsets.c \_\_lookup\_processor\_typ...

  • 📂Android Q app内存压缩优化方案介绍教程

    Android Q app内存压缩优化方案介绍原创文章,谢绝转载!Android Q新增了部分系统性能优化方案,这里简单学习下,本篇文章先分析app compaction。一、愿景:在保证后台进程尽量不被杀的基础上减少它们的内存占用。二、思路:AMS与Kernel层联动对满足一定条件的App进行内存压缩。 google官方样例数据:占用1.8G内存的游戏,压缩后只占700M。该功能在高端...

  • 📂Linux 文件 I/O 进化史(一):Buffered I/O教程

    想找时间复习和总结一下 Linux 的文件 I/O 方式。大概想了,主要内容可以分成 4 个部分:Buffered I/O:传统的基于 page cache 的文件读写。mmap:可以让应用像访问内存一样访问文件。Direct I/O 和 AIO:绕过 page cache 的 I/O 方式,同时支持异步文件 I/O。io\_uring:Linux 5.1 才引进的全新异步 I/O 方式。本...

  • 📂LAB2 内核的内存管理教程

    Physical Page ManagementJOS内核以页为最小粒度管理内存,从而实时记录哪些内存区域空闲,哪些内存区域占用,这个信息被记录在一条结构体PageInfo的链表中,链表的每个结点对应一个物理页。内核开始,会调用mem\_init()函数对整个操作系统的内存管理系统进行一些初始化的设置。mem\_init()首先调用i386\_detect\_memory()子函数, 检测现...

  • 📂Nginx反向代理关键配置教程

    欲通过127.0.0.1:8811(代理服务器)来访问127.0.0.1:8080地址上的(真实)服务器,需要如下配置,非常关键,摘录nginx.conf中的关键配置以供读者参考。不同操作系统上配置都大体相同。 server { listen 8811; server_name 127.0.0.1; #charset koi8...

  • 📂使用 Nginx 容器为 Traefik 配置高性能通用错误页面教程

    使用 Nginx 容器为 Traefik 配置高性能通用错误页面 使用 Traefik 比较久的读者应该会发现,在服务重启的时候,原来的网站会展示 404 not found 的空白页面,虽然多数情况下服务恢复很快,但是这个恢复时间取决于部署启动的应用和监控检查配置策略,如果没有配置流量切换规则,那么有的时候,会看到很久的空白页面,这样的体验显然不好。为了提升体验,我们可以使用 Traef...

  • 📂一步步利用Linux kernel漏洞<1a/4>教程

    上一篇(第一篇)介绍了很多关于Linux内核漏洞CVE-2017-11176一些背景知识,本篇再介绍一点基础知识,不然后面就完全看不懂了,之后再想办法触发利用它。从上一篇了解到,这个漏洞属于use-after-free(以下简称UAF), 接下来首先看看什么是UAF,它是怎样产生的,有什么危害。这个概念虽然很基础,但如果不是彻底了解,后面也没办法玩了。比如我们部门中有一个叫江疏影(长发飘飘,...

  • 📂【随笔】Linux刷脏页教程

    一、脏页的由来前情摘要:1. 在多级存储系统中,上一级高速设备会成为下一级低速设备的缓存。相较之内存,磁盘是一个低速设备,因此Linux中会通过一种叫“磁盘高速缓存”的软件机制来允许将磁盘上的一些数据保留在内存中,以加快访问速度。页高速缓存page cache就是Linux内核所使用的主要磁盘高速缓存。几乎所有的文件读写都依赖磁盘高速缓存,除非你设置了O\_DIRECT标志;2. Linux...

  • 📂25 实战页式内存管理 中教程

    参考https://blog.51cto.com/13475106/category6.html及狄泰软件相关课程实战页式内存管理中课程设计目标 1.处理运行结束的任务 2.实现FIFO页面交换的算法 3.实现LRU页面交换算法目标一1.将任务结构从任务表中移除 2.回收任务所使用的页框 3.释放任务结构所占的内存 目标二-实现FIFO页交换算法 原理:利用队列(Qt)记录页框...

  • 📂Linux 内核学习(4) - 内存管理教程

    内存管理内存初始化内存布局探测:E820图E820介绍在x86的机器上,由bios提供的中断,中断号是0x15,在调用的时候AX寄存器必须为0xE820,每次返回一段内存的空间的起始地址和大小以及它的属性(可用的RAM or 被BIOS保留的)注:以下代码 有的是linux 5.10,有的是linux 2.6.30.4代码1 arch/x86/boot/memory.cstatic void...

  • 📂linux 逆向映射机制浅析教程

    闲话不多说,之前一个问题是想要根据物理页框号得到映射的虚拟地址,一时间不知道如何下手了,在群里和一个朋友讨论了一番,记得之前看swap机制的交换缓存时,记载说系统当要换出一个页面时,可以很容易找到使用该页面的所有进程,然后撤销映射。这一点也就成了我的突破口。经过对源码的一番研究结合相关书籍,便有了今天这篇文章。重点就是逆向映射机制。顾名思义,有一个虚拟地址经过页面转换得到物理地址的过程为正向...

  • 📂linux伙伴系统接口alloc_page分析教程

    在内核中分配内存,最后要通过伙伴系统接口进行实际物理页面的分配,一个重要的接口便是alloc\_page.本文介绍下alloc\_page的主要流程,各个部分的执行。主要包含正常分配流程,当页面不足的时候的处理方式。先定位到核心调用#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)order是分配页面的阶,即2的指数个页面#define...

  • 📂【小白CV】手把手教你用YOLOv5训练自己的数据集(从Windows环境配置到模型部署)教程

    【小白CV】手把手教你用YOLOv5训练自己的数据集(从环境配置到模型部署)前言:1. 安装Anaconda:2. 创建虚拟环境:3. 安装pytorch:4. 下载源码和安装依赖库:5. 数据标注:5. 数据预处理:6. 下载预训练模型:前言:今天有时间,就写一下用yolov5训练自己数据集的博客吧。 1. 安装Anaconda:Anaconda官网:https://www.anaco...

  • 📂进程池+爬虫教程

    \#进程池+爬虫--------------------------------------------------- import re #导包re from urllib.request import urlopen#导包urllib.request.urlopen from multiprocessing import Pool#导包Pool def get\_page(url,...

  • 📂海创软件组-20200614-鸟哥的Linux私房菜第四章笔记教程

    首次登陆X Window与命令行模式的切换1、X Window指的是Linux上的图形界面系统 2、通常也称命令行界面为终端界面、Terminal或者Console。 3、Linux 默认的情况下会提供六个终端来让用户登录,切换的方式为使用:【Ctrl+Alt+F1~F6】的组合键。登陆的环境如下:【Ctrl+Alt+F1】:图形用户界面模型 【Ctrl+Alt+F2~F6】:命令行模...

  • 📂pdf in Ubuntu教程

    pdf pdf-UbuntuTable of Contents1. PDF1.1. PDF viewer1.2. combine pdf1.3. extract a page from a pdf file1.4. pdf2png – pdftoppm1 PDF1.1 PDF viewer====================================================...

  • 📂【LINUX-02】linux内存管理教程

    1 内存划分对于 32位linux,进程:0~3G,内核:3G~4G,所有进程的内核空间(3G~4G)都是共享的。线性区映射的物理内存成为低端内存,剩下的内存被称为高端内存。2 内存管理2.1 物理内存管理Linux内存最小管理单位为页(page),通常一页为4K。初始化时,linux会为每个物理内存也建立一个page的管理结构(切记是linux系统不是uboot,也就是物理内存的管理肯定是...