Читайте также:
|
|
На предыдущей лекции были подробно рассмотрены способы представления информации в приемлемом для компьютера виде. Теперь встаёт вопрос, как именно информация хранится в компьютере. Все запоминающие устройства компьютера можно разделить на следующие группы: устройства долговременного хранения, постоянные запоминающие устройства, оперативная память, регистры процессора.
Устройства долговременного хранения, к которым относятся магнитные и оптические диски, стримеры, флеш-носители, являются основными средствами хранения информации. Однако любая операционная система предоставляет такую абстракцию как файловая система, а потому в большинстве случаев для доступа к таким носителям информации не нужны сведения об их организации.
ПЗУ, такие как BIOS и различные контроллеры, разрешают доступ к хранящийся в них информации с помощью предоставленных интерфейсов, а потому реализация хранения информации в них также скрыта от пользователя.
Серьёзного рассмотрения достойны, прежде всего, регистры процессора. Процессоры x86 и x64 имеют в своём составе 8 ячеек памяти, называемых регистрами. Один регистр может хранить 4 (в архитектуре x86) или 8 (в x64) байт. Первоначально регистры, как и процессоры, были 16-битными и назывались AX, BX, CX, DX, SP, BP, IP, SI. В 32-разрядных процессорах к названию регистра приписывается буква E (EAX, EBX и т.д.), а в 64-разрядных – буква R (RAX, RBX и т.д.). Регистры SP, BP, IP и SI называют специальными регистрами, разговороб их назначении лежит в области низкоуровневого программирования, и в данном курсе не рассматривается. Регистры AX, BX, CX и DX называются регистрами общего назначения, в них можно хранить любую информацию. Регистры общего назначения имеют следующую структуру (на примере AX):
RAX | 64 бита | |||
EAX | 32 бита | |||
AX | 16 бит | |||
AH | AL | 8 бит | ||
Иными словами, AL – это 8 младших, а AH – 8 старших бит AX, AX – 16 младших бит EAX, EAX – 32 младших бита RAX. AL, AH, AX, EAX, RAX – это всё самостоятельные регистры, к которым можно обращаться по отдельности. Аналогичная структура верна для всех регистров общего назначения. Обращение к регистрам может происходить до десяти раз быстрее, чем к оперативной памяти, поэтому регистры целесообразно использовать при осуществлении вычислений, требующих максимальной скорости. Также регистры применяются для обмена данными между программой и прерываниями.
Основным накопителем информации, используемым в программировании, является оперативная память. Оперативная память представляет собой набор однобайтовых ячеек, каждой из которых присвоен свой индивидуальный номер, называемый адресом. Нумерация начинается с 1, поскольку номер ячейки памяти 0 зарезервирован как «пустой» адрес. На самом деле, в реальном адресном пространстве работает только операционная система. Для прикладных программ операционные системы реализуют плоскую (линейную) модель памяти (flat). В этой модели памяти каждая программа «видит», что ей предоставлена вся память, которая только может существовать в рамках данной архитектуры (4 гигабайта в архитектуре x86 и 1048576 терабайт в архитектуре x64). Это достигается за счёт применения двух основных инструментов: файл подкачки и виртуальное адресное пространство.
Файл подкачки (swap) – это место на жёстком диске, выделенное для записи информации, не помещающейся в оперативную память. Операционная система перехватывает все обращения к памяти от прикладных программ и переадресует их таким образом, чтобы запросы от разных программ попадали в непересекающиеся области оперативной памяти или файла подкачки, если оперативная память закончилась. Таким образом, программа даже не может определить, идёт ли обращение в оперативную память, или в файл подкачки. Это называется виртуальным адресным пространством.
Однако нецелесообразно рассчитывать сразу всё адресное пространство для каждой из задач, которых могут быть десятки. Поэтому изначально каждой программе выделяется минимум памяти. Во-первых, это статическая память – область оперативной памяти, в которой хранится сама программа и присутствующие в ней константы. Во-вторых, стековая память – область, в которой выделены места под все переменные, присутствующие в программе.
Если же программе требуется ещё память, то она посылает запрос операционной системе, которая выбирает в оперативной памяти незанятый участок и начинает переадресовать запросы программы на него. При этом участок помечается как занятый, и адресация других программ на него невозможна. Как только программе этот участок памяти становится ненужным, она посылает запрос операционной системе, и он снова помечается как свободный. Такая схема называется динамическим распределением памяти, а память, выделенная таким способом – динамическая память.
Дата добавления: 2015-11-13; просмотров: 57 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Лекция 2: представление данных в компьютере. | | | Часть 2: типы данных языка Си. |