linux 分页 linux 命令结果 分页查看

linux分页显示命令linux分页

Linux最小化安装后,查看上一页内容的命令?

查看文件内容命令建议使用less命令,它可以进行前后查看。

lessfilename

一般查看文件内容有3个命令:

cat:全部显示,如果文件太多不能回看;

more:能分页查看,但是只能向下翻。

less:可以进行前后查看。

linux查看文件内容?

more指令——分页显示文件内容。more指令会以一页一页的形式显示文件内容,按空白键(space)显示下一页内容,按Enter键会显示下一行内容,按b键就会往回(back)一页显示,其基本用法如下:morefile1查看文件file1的文件内容;

less指令——可以向前或向后查看文件内容。

linux为什么主要采用分页机制来实现虚拟存储管理

1分页机制

在虚拟内存中,页表是个映射表的概念,即从进程能理解的线性地址(linear address)映射到存储器上的物理地址(phisical address).

很显然,这个页表是需要常驻内存的东西,以应对频繁的查询映射需要(实际上,现代支持VM的处理器都有一个叫TLB的硬件级页表缓存部件,本文不讨论)。

1.1为什么使用多级页表来完成映射

但是为什么要使用多级页表来完成映射呢?

用来将虚拟地址映射到物理地址的数据结构称为页表,实现两个地址空间的关联最容易的方式是使用数组,对虚拟地址空间中的每一页,都分配一个数组项.该数组指向与之关联的页帧,但这会引发一个问题,例如, IA-32体系结构使用4KB大小的页,在虚拟地址空间为4GB的前提下,则需要包含100万项的页表.这个问题在64位体系结构下,情况会更加糟糕.而每个进程都需要自身的页表,这回导致系统中大量的所有内存都用来保存页表.

设想一个典型的32位的X86系统,它的虚拟内存用户空间(user space)大小为3G,并且典型的一个页表项(page table entry, pte)大小为4 bytes,每一个页(page)大小为4k bytes。那么这3G空间一共有(3G/4k=)786432个页面,每个页面需要一个pte来保存映射信息,这样一共需要786432个pte!

如何存储这些信息呢?一个直观的做法是用数组来存储,这样每个页能存储(4k/4=)1K个,这样一共需要(786432/1k=)768个连续的物理页面(phsical page)。而且,这只是一个进程,如果要存放所有N个进程,这个数目还要乘上N!这是个巨大的数目,哪怕内存能提供这样数量的空间,要找到连续768个连续的物理页面在系统运行一段时间后碎片化的情况下,也是不现实的。

为减少页表的大小并容许忽略不需要的区域,计算机体系结构的涉及会将虚拟地址分成多个部分.同时虚拟地址空间的大部分们区域都没有使用,因而页没有关联到页帧,那么就可以使用功能相同但内存用量少的多的模型:多级页表

但是新的问题来了,到底采用几级页表合适呢?

1.2 32位系统中2级页表

从80386开始, intel处理器的分页单元是4KB的页, 32位的地址空间被分为3部分

单元

描述

页目录表Directory最高10位

页中间表Table中间10位

页内偏移最低12位

即页表被划分为页目录表Directory和页中间表Tabl两个部分

此种情况下,线性地址的转换分为两步完成.

第一步,基于两级转换表(页目录表和页中间表),最终查找到地址所在的页帧

第二步,基于偏移,在所在的页帧中查找到对应偏移的物理地址

使用这种二级页表可以有效的减少每个进程页表所需的RAM的数量.如果使用简单的一级页表,那将需要高达220个页表,假设每项4B,则共需要占用220?4B=4MB的RAM来表示每个进程的页表.当然我们并不需要映射所有的线性地址空间(32位机器上线性地址空间为4GB),内核通常只为进程实际使用的那些虚拟内存区请求页表来减少内存使用量.

1.3 64位系统中的分页

正常来说,对于32位的系统两级页表已经足够了,但是对于64位系统的计算机,这远远不够.

首先假设一个大小为4KB的标准页.因为1KB覆盖210个地址的范围, 4KB覆盖212个地址,所以offset字段需要12位.

这样线性地址空间就剩下64-12=52位分配给页中间表Table和页目录表Directory.如果我们现在决定仅仅使用64位中的48位来寻址(这个限制其实已经足够了, 2^48=256TB,即可达到256TB的寻址空间).剩下的48-12=36位被分配给Table和Directory字段.即使我们现在决定位两个字段各预留18位,那么每个进程的页目录和页表都包含218个项,即超过256000个项.

基于这个原因,所有64位处理器的硬件分页系统都使用了额外的分页级别.使用的级别取决于处理器的类型

平台名称

页大小

寻址所使用的位数

分页级别数

线性地址分级

alpha 8KB 43 3 10+ 10+ 10+ 13

ia64 4KB 39 3 9+ 9+ 9+ 12

ppc64 4KB 41 3 10+ 10+ 9+ 12

sh64 4KB 41 3 10+ 10+ 9+ 12

x86_64 4KB 48 4 9+ 9+ 9+ 9+ 12

文件Linux下快捷查看文件的分页方式linux分页查看

随着Linux操作系统越来越流行,掌握在Linux下快速查看文件的方式变得越来越重要。下面介绍Linux下快捷查看文件的分页方式。

## less

`less`是Linux下一种高效的文件查看方式,该命令可以一次性将文件的内容一次性加载显示出来,然后使用翻页键可以进行上下翻页查看文件内容。接下来使用一个实例来介绍如何使用`less`进行分页查看文件。

假设要查看文件`test.txt `,在终端中输入`less test.txt`,则会显示test.txt文件的内容,如下图所示:

这时可以使用空格键向下翻页查看文件内容,或者使用[Ctrl]+ [f]向下翻一页,[Ctrl]+ [b]向上翻一页,或者使用[Ctrl]+ [d]来向下翻半页,[Ctrl]+ [u]来向上翻半页。此外,可以使用/来搜索文件中的某个字符串,使用[Ctrl]+ [g]跳转到相应的位置查看。

当查看完毕时,可以按下[Ctrl]+ [c]或者[q]来退出查看,操作也很简单。

## more

more是Linux下的一种古老的文件分页查看命令,操作方法和less差不多,也可以使用[空格键]向下翻页,[b]向上翻一页,搜索使用/或者?来搜索,按下[q]来退出。

`more`有一个很大的缺点,就是它较`less`慢,这是因为more不会将全部文件内容一次性加载,而是每次翻页时,都会从文件头开始加载,而且每次翻页都要等待加载,因此性能较less要低很多。

##结语

通过上面介绍的两种分页查看文件的方式,可以发现`less`具有更高的效率和更丰富的操作,因此更加适合快捷查看文件,而`more`虽然操作简单,但性能较低,只适用于文件逐页显示查看。

阅读剩余
THE END