Как операционная система считывает размер страницы с аппаратного обеспечения?

Perl спешит на помощь!

#!/usr/bin/perl
use warnings;
use strict;

my $group_size = 3;

my @first = split ' ', <>;

my @groups;
my $start_index = 0;
while ($start_index < @first) {
    my $step = 1;
    while ( $step < $group_size
            && $start_index + $step < @first
            && $first[$start_index] == $first[ $start_index + $step ]
          ) {
        ++$step;
    }
    push @groups, $step;
    print $first[$start_index], ' ';
    $start_index += $step;
}
print "\n";

my @numbers = split ' ', <>;

my $last;
for my $size (@groups) {
    my @group = splice @numbers, 0, $size;
    my $value = $group[-1] - $group[0];
    $value = $group[0] - $last if 1 == $size;
    $last = $group[-1];
    print $value, ' ';
}
print "\n";

Вы не указали, что должно произойти, если в самой первой группе всего один член.

1
22.01.2019, 17:00
1 ответ

Операционные системы жестко определяют размер страницы в зависимости от архитектуры (и, в некоторых случаях, -конфигурации ядра во время сборки ). Например, на x86 базовый размер страницы всегда 4КиБ — это свойство архитектуры процессора; в Linux вы увидите это определение в include/asm/page_types. На 64-битном -ARM размер страницы можно настроить во время сборки -как 4 КБ, 16 КБ или 64 КБ. Некоторые архитектуры имеют несколько размеров страниц во время выполнения (, например. огромные страницы на x86 ), но все размеры известны заранее и базовый размер фиксирован.

В Linux каноническим определением размера страницы является PAGE_SIZE, и вы получаете его, включив asm/page.h, который зависит от архитектуры -(, который может использовать другие заголовки, как это происходит на x86 ). Эликсир предоставляет удобный список всех PAGE_SIZEопределений .

Большинство архитектур, поддерживаемых ядром Linux, поддерживают страницы размером 4 КБ; исключениями являются Alpha, ARC, некоторые системы Motorola 68k, OpenRISC и 64 -бит SPARC, все из которых используют страницы размером 8 КБ. Многие архитектуры можно настроить для использования других размеров страниц.

4
27.01.2020, 23:23

Теги

Похожие вопросы