概述 可换出页 只有少量几种页可以换出到交换区,对其他页来说,换出到块设备上与之对应的后备存储器即可,如下所述. 类别为 MAP_ANONYMOUS 的页,没有关联到文件,例如,这可能是进程的栈或是使用 mmap 匿名映射的内存区. 进程的私有映射用于映射修改后不向底层块设备回写的文件,通常换出到交换区. 所有属于进程堆以及使用 malloc 分配的页 用于实现某种进程间通信机制的页.例如,用于在进程之间交换数据的共享内存页. 页颠簸 这个问题涉及交换区和物理内存之间密集的数据传输问题归结为页的…
进程优先级 硬实时进程 软实时进程 普通进程 O(1)调度.完全公平调度器 抢占式多任务处理(preemptive multitasking):各个进程都分配到一定的时间段可以执行.时间段到期后,内核会从进程收回控制权,让下一个不同的进程运行,而不考虑前一进程所执行的上一个任务. 进程生命周期 进程状态:运行.等待.睡眠.终止 抢占式多任务处理 从用户态进入核心态的方法: 系统调用:处于核心态时,与当前运行进程相关 硬件中断:处于核心态时,与当前运行进程不相关 普通进程总是可能被抢占,甚至是由其…
如果是新手,建议安装带图形化界面的centos,这里以安装centos7.7的64位为例 一.下载系统镜像 镜像文件下载链接https://wiki.centos.org/Download 阿里云官网:https://mirrors.aliyun.com 现更新为:https://opsx.alibaba.com/mirror 清华软件镜像:https://mirrors.tuna.tsinghua.edu.cn/ 都可以, 下载centos7.7的64位版本镜像文件种子,然后用下载软件下载即可…
一.继续在vmware中安装centos6.9 本次安装是进行最小化安装,即没有图形化界面的安装,如果是新手,建议安装带图形化界面的centos, 具体参考Linux从入门到放弃.零基础入门Linux(第四篇):在虚拟机vmware中安装centos7.7 1.创建空白的虚拟机后界面 2.双击进入设置,点击CD/DVD设置,选择要安装的centos6.9的镜像文件位置 3.打开虚拟机电源,进行安装,进入虚拟机系统安装界面. 界面共有5个选项 Install or upgrade an exist…
概述 内存管理的实现涵盖了许多领域: 内存中的物理内存页管理 分配大块内存的伙伴系统 分配较小内存块的slab.slub和slob分配器 分配非连续内存块的vmalloc机制 进程的地址空间 在IA-32系统上,可以直接管理的物理内存数量不超过896M.超过该值的内存只能通过高端内存寻址. 在64位系统上,由于可用的地址空间非常巨大,因此不需要高端内存模式. (N)UMA模型中的内存组织 有两种类型的计算机,分别以不同的方法管理物理内存: UMA计算机(uniform memory access…
proc文件系统 proc文件系统是一种虚拟的文件系统,其信息不能从块设备读取.只有在读取文件内容时,才动态生成相应的信息. /proc的内容 内存管理 系统进程的特征数据 文件系统 设备驱动程序 系统总线 电源管理 终端 系统控制参数 特定于进程的数据 cmdline:用于启动进程的命令行(用0作为分隔符,而不是空格) environ表示为该程序设置的所有环境变量 maps以文本形式,列出了进程使用的所有库的内存映射. status包含了有关进程状态的一般信息(不仅提供了有关UID/GID及进…
内核为块设备提供了两种通用的缓存方案. 页缓存(page cache) 块缓存(buffer cache) 页缓存的结构 在页缓存中搜索一页所花费的时间必须最小化,以确保缓存失效的代价尽可能低廉,因为在缓存失效时,进行搜索的计算时间实际上被浪费了.因而,页缓存设计的一个关键的方面就是,对缓存的页进行高效的组织. 管理和查找缓存的页 对此用途而言,树数据结构是非常流行的,Linux也采用了这种结构来管理页缓存中包含的页,称为基数树(radix tree) 基数树也是不平衡的,换句话说,在树的不同分…
I/O体系结构 总线系统 PCI(Peripheral Component Interconnect) ISA(Industrial Standard Architecture) SBus IEEE1394 USB(Universal Serial Bus) SCSI(Small computer System Interface) 并口与串口(Parallel and Serial Interface) 与外设的交互 I/O端口:处理器管理了一个独立的虚拟地址空间,可用于管理所有I/O地址.…
进程地址空间的布局 <mm_types.h> <mm_types.h> struct mm_struct { ... unsigned long (*get_unmapped_area) (struct file *filp,unsigned long addr, unsigned long len,unsigned long pgoff, unsigned long flags); ... unsigned long mmap_base; /* mmap区域的基地址 */ uns…
一.计算机操作系统简介 操作系统的定义: 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 操作系统的内核的定义: 操作系统的内核是一个管理和控制程序,负责管理计算机的所有物理资源, 其中包括文件系统.内存管理.设备管理和进程管理. 操作系统.硬件.软件的关系 操作系统=所有驱动+对驱动的管理+为应用软件提供可以使用的接口 内核=所有驱动 驱动组成:字符设备(串口).块设备(u盘).网络设备 内核是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各…
Ch.0 几点Linux常识 Linux严格区分大小写,不像windows中命令是不区分大小写的 Linux中所有内容以文件形式保存,包括硬件 Linux不靠扩展名区分文件类型,所有扩展名只是为了方便用户使用 Linux所有存储设备都必须挂载后才能使用,包括硬盘.u盘和光盘等 Linux没有文件创建时间的概念,只有文件最后修改时间 Linux各目录作用: Ch.1 Linux系统简介 Linux主要发行版本   Ch.2 Linux安装 2.1 分区类型 1.主分区:最多只能有4个 2.扩展分区…
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 看完了内存压缩,最近在看内存回收这块的代码,发现内容有些多,需要分几块去详细说明,首先先说说匿名页的反向映射,匿名页主要用于进程地址空间的堆.栈.还有私有匿名共享内存(用于有亲属关系的进程),这些匿名页所属的线性区叫做匿名线性区,这些线性区只映射内存,不映射具体磁盘上的文件.匿名页的反向映射对匿名页的回收起到了很大的作用.为了进行内存回收,内核为每个zone管理区的内存页维护了5个LRU链表(最近最少使…
中断 中断类型 同步中断和异常.这些由CPU自身产生,针对当前执行的程序 异步中断.这是经典的中断类型,由外部设备产生,可能发生在任意时间. 在退出中断中,内核会检查下列事项. 调度器是否应该选择一个新进程代替旧的进程. 是否有信号必须投递到原进程. 数据结构 IRQ相关信息管理的关键点是一个全局数组,每个数组项对应一个IRQ编号.因为数组位置和中断号是相同的,很容易定位与特定的IRQ相关的数组项:IRQ 0在位置0,IRQ 15在位置15,等等.IRQ最终映射到哪个处理器中断,在这里是不相关的…
网络命名空间 struct net { atomic_t count; /* To decided when the network * namespace should be freed. */ atomic_t use_count; /* To track references we * destroy on demand */ struct list_head list; /* list of network namespaces *///所有命名空间链接到net_namespace_li…
VFS的任务并不简单.一方面,它用来提供了一种操作文件.目录及其他对象的统一方法.另一方面,它必须能够与各种方法给出的具体文件系统的实现达成妥协,这些实现在具体细节.总体设计方面都有一些不同之处. 文件系统类型 基于磁盘的文件系统 虚拟文件系统 网络文件系统 通用文件模型 在处理文件时,内核空间和用户空间使用的主要对象是不同的.对用户程序来说,一个文件由一个文件描述符标识.内核处理文件的关键是inode. inode 目录只是一个特殊的文件. inode的成员可能分为下面两类. 描述文件状态的元…
低分辨率定时器的实现 定时器激活与进程统计 IA-32将timer_interrupt注册为中断处理程序,而AMD64使用的是timer_event_interrupt.这两个函数都通过调用所谓的全局时钟的事件处理程序,来通知内核中通用的.体系结构无关的时间处理层.无论如何,该处理程序都通过调用以下两个函数,使得周期性低分辨率计时设施开始运作. do_timer update_process_time do_time: jiffies_64 += ticks;这意味着 jiffies_64确定了…
Ext2文件系统 物理结构 结构概观 块组是该文件系统的基本成分,容纳了文件系统的其他结构.每个文件系统都由大量块组组成,在硬盘上相继排布: ----------------------------------------------------------------- | | | 数据 | inode | | | |超级块 | 组描述符 | 位图 | 位图 | inode表 | 数据库 | | | | | | | | -------------------------------------…
使用模块 依赖关系 modutils标准工具集中的depmod工具可用于计算系统的各个模块之间的依赖关系.每次系统启动时或新模块安装后,通常都会运行该程序.找到的依赖关系保存在一个列表中.默认情况下,写入文件/lib/modules/version/modules.dep.格式:首先是目标模块的二进制文件名称,接下来是为正确执行目标模块,包含了所需代码的所有模块的文件名. depmod分析所有可用的模块的二进制代码,对每个模块建立一个列表,包含所有已定义符号和未解决的引用,最后将各个模块的列表彼…
内核锁机制 对整数的原子操作 <asm-arch/atomic.h> typedef struct {volatile int counter;} atomic_t; //初始化只能借助于ATOMIC_INIT宏 atomic_t nmi_active = ATOMIC_INIT(0); atomic_read(atomic_t *v); atomic_set(atomic_t *v,int i); ........ 自旋锁 自旋锁用于保护短的代码段,其中只包含少量C语句,因此会很快执行完毕.…
Linux?听说是一个操作系统,好用吗?” “我也不知道呀,和windows有什么区别?我能在Linux上玩LOL吗” “别提了,我用过Linux,就是黑乎乎一个屏幕,鼠标也不能用,不停地的敲键盘,手指头都给我磨破了!” 或许大家都有这么想过,但是IT互联网发展至今,人们几乎很少会问“Linux是什么了”. 在服务器领域,IBM.HP.Novell.Oracle等厂商都全方位支持Linux,Linux已经成为了这个世界上增长最迅速的操作系统.2011年排名前500的超级计算机中,92.4%都是L…
一.Vmware vmware介绍:VMware,Inc. (Virtual Machine ware)是一个“虚拟PC”软件公司,提供服务器.桌面虚拟化的解决方案.其虚拟化平台的产品包括播放器:它能使个人用台式电脑运行虚拟机器,融合器,它是用户基于英特尔结构苹果机的桌面虚拟化产品,工作站的软件开发商和企业的资讯科技专才,能使虚拟分区的服务器,ESX服务器(一种能直接在硬件上运行的企业级的虚拟平台),虚拟的SMP让一个虚拟机同时使用四个物理处理器,和VMFS使多个ESX服务器分享块存储器. vm…
这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码.对于会阻塞线程的操作包含访问文件.数据库或者Web.产生新的进程并需要处理新进程的输出(如运行shell命令).执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法. Scrapy data flow(流程图)…
文章目录 1. 简介 2. LRU 组织 2.1 LRU 链表 2.2 LRU Cache 2.3 LRU 移动操作 2.3.1 page 加入 LRU 2.3.2 其他 LRU 移动操作 3. LRU 回收 3.1 LRU 更新 3.2 Swappiness 3.3 反向映射 3.4 代码实现 3.4.1 struct scan_control 3.4.2 shrink_node() 3.4.3 shrink_list() 3.4.4 shrink_active_list() 3.4.5 sh…
Linux Pwn入门教程系列分享已接近尾声,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/amd64下的Linux Pwn常见的Pwn手法,如栈,堆,整数溢出,格式化字符串,条件竞争等进行介绍,所有环境都会封装在Docker镜像当中,并提供调试用的教学程序,来自历年赛事的原题和带有注释的python脚本. 课程回顾>> Linux Pwn入门教程第一章:环境配置 Linux Pwn入门教…
Linux Pwn入门教程系列分享如约而至,本套课程是作者依据i春秋Pwn入门课程中的技术分类,并结合近几年赛事中出现的题目和文章整理出一份相对完整的Linux Pwn教程. 教程仅针对i386/amd64下的Linux Pwn常见的Pwn手法,如栈,堆,整数溢出,格式化字符串,条件竞争等进行介绍,所有环境都会封装在Docker镜像当中,并提供调试用的教学程序,来自历年赛事的原题和带有注释的python脚本. 课程回顾>> Linux Pwn入门教程第一章:环境配置 Linux Pwn入门教程…
第一章:初识Linux shell Linux内核负责以下4个主要功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 1.系统内存管理 内核不仅管理服务器上的可用物理内存,还可以创建和管理虚拟内存 内核通过硬盘上的存储空间来实现虚拟内存,这块区域称为交换空间(swap space) 内核不断的在交换空间和实际物理内存之间反复交换虚拟内存存储单元的内容 (这使得系统以为它拥有比物理内存更多的可用内存) 下面是书中的图片(实际上和书中有点出入,为了省事),让我有些不解 关…
本文主要介绍了一些page reclaim机制中的基本概念.这份文档其实也可以看成阅读ULK第17章第一小节的一个读书笔记.虽然ULK已经读了很多遍,不过每一遍还是觉得有收获.Linux内核虽然不断在演进,但是页面回收的基本概念是不变的,所以ULK仍然值得内核发烧友仔细品味. 一.什么是page frame reclaiming? 在用户进程的内存使用上,Linux内核并没有严格的限制,其实思路是:当系统负荷小的时候,内存都是位于各种cache中,以便提高性能.当系统负荷重(进程数目非常多)的时…
转自:http://blog.csdn.net/bullbat/article/details/7311205 请求调页机制,只要用户态进程继续执行,他们就能获得页框,然而,请求调页没有办法强制进程释放不再使用的页框.因此,迟早所有空闲内存将被分配给进程和高速缓存,Linux内核的页面回收算法(PFRA)采取从用户进程和内核高速缓存“窃取”页框的办法不从伙伴系统的空闲块列表. 实际上,在用完所有空闲内存之前,就必须执行页框回收算法.否则,内核很可能陷入一种内存请求的僵局中,并导致系统崩溃.也就是…
php从入门到放弃系列-04.php页面间值传递和保持 一.目录结构 二.两次页面间传递值 在两次页面之间传递少量数据,可以使用get提交,也可以使用post提交,二者的区别恕不赘述. 1.get提交 使用get提交来传递数据,在链接地址中修改发送到服务器的 URL 如下所示http://www.cnblogs.com/MarkRao/p/php01.html?gName=mark&gAge=26 ,当然也可以在表单中设置method="get",php中接收get提交过来的数…
Linux下pwn从入门到放弃 0x0 简介 pwn,在安全领域中指的是通过二进制/系统调用等方式获得目标主机的shell. 虽然web系统在互联网中占有比较大的分量,但是随着移动端,ioT的逐渐流行,传统的缓冲区溢出又一次有了用武之处 0x01 工欲善其事,必先利其器 Linux下的pwn常用到的工具有: gdb:Linux调试中必要用到的 gdb-peda:gdb方便调试的工具,类似的工具有gef,gdbinit,这些工具的安装可以参考:http://blog.csdn.net/gatiem…