
- •Министерство образования и науки Российской Федерации
- •Цель лекции
- •План лекции
- •1 Происхождение вычислительных машин
- •2 Изучение алгоритмов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Биты и их хранение
- •2 Оперативная память
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Устройства внешней памяти
- •3 Хранение и поиск файлов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление числовых значений
- •2 Хранение целых чисел
- •3 Хранение дробей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Представление текста
- •2 Представление изображений
- •Достоинства пиксельной графики
- •Недостатки пиксельной графики
- •Достоинства векторной графики
- •Недостатки векторной графики
- •3 Представление звука
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Сжатие изображений
- •2 Ошибки передачи данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Архитектура эвм
- •2 Связь процессора с другими устройствами
- •3 Другие архитектуры
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Машинный язык
- •2 Пример машинного языка
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Выполнение программы
- •2 Пример выполнения программы
- •3 Программы и данные
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Логические операции
- •2 Операции сдвига
- •3 Арифметические операции
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция операционных систем
- •2 Архитектура операционных систем
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие процесса
- •2 Управление процессами
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Классификация сетей
- •2 Сетевые протоколы*
- •3 Безопасность сетей
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Понятие алгоритма
- •2 Представление алгоритма
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Теория решения задач
- •2 Общие методы решения задач
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритм последовательного поиска
- •2 Управление циклами
- •3 Алгоритм сортировки методом вставки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Алгоритмы поиска и сортировки
- •2 Управление рекурсией
- •3 Разработка рекурсивных процедур
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эффективность алгоритмов
- •2 Верификация программ
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Эволюция и классификация языков программирования
- •2 Концепции традиционного программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Процедурные единицы
- •2 Реализация языка программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Объектно-ориентированное программирование
- •2 Декларативное программирование
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структуры данных
- •Integer Scores (2.9).
- •2 Статические и динамические структуры
- •3 Указатели
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Массивы
- •2 Списки
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Структура и функции стека
- •2 Реализация стека
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Очереди
- •2 Деревья
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Пользовательские типы данных
- •Int Age;
- •2 Классы
- •Int *StackEntries;
- •3 Стандартная библиотека шаблонов
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Роль операционной системы
- •2 Последовательные файлы
- •3 Вопросы программирования
- •0000000010000110
- •001100010011001100110100
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения индексации
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Основные положения хеширования
- •2 Вопросы программирования
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Общие вопросы
- •2 Система управления базой данных
- •3 Поддержка целостности баз данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Модели баз данных
- •2 Реляционная модель баз данных
- •3 Объектно-ориентированные базы данных
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Интеллект и машины
- •2 Распознавание образов
- •3 Мышление
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Искусственные нейронные сети
- •2 Генетические алгоритмы
- •Контрольные вопросы
- •Невычислимые функции Цель лекции
- •План лекции
- •1 Основы машины Тьюринга
- •2 Невычислимая функция
- •3 Сложность задач
- •Листинг 1. Процедура MergeLists для объединения двух упорядоченных списков
- •Листинг 2. Алгоритм сортировки слиянием, реализованный в процедуре MergeSort
- •Контрольные вопросы
- •Цель лекции
- •План лекции
- •1 Шифрование с открытым ключом
- •2 Модульная арифметика
- •Контрольные вопросы
- •Литература
- •Internet-ресурсы
2 Оперативная память
Для хранения данных в компьютере содержится огромное количество схем, каждая из которых способна хранить 1 бит информации. Это хранилище битов называют оперативной памятью (main memory) машины.
Структура памяти. Запоминающие схемы в оперативной памяти компьютера объединены в управляемые единицы, называемые ячейками памяти (cell), при этом стандартный размер ячейки равен восьми битам. На самом деле совокупность из 8 битов стала настолько популярна, что по отношению к ней широко используется термин «байт» (byte). Небольшие компьютеры, применяемые в такой бытовой технике, как микроволновые печи, могут содержать оперативную память, насчитывающую только несколько сотен ячеек, в то время как большие компьютеры, используемые для хранения и обработки огромных массивов данных, могут содержать миллиарды ячеек в своей оперативной памяти.
Хотя понятия «право» и «лево» не применимы по отношению к внутреннему строению машины, обычно считается, что биты внутри ячейки памяти упорядочены в строке. Левый конец этой строки называют старшим концом, правый конец — младшим. Последний бит старшего конца называется старшим битом, так как если содержимое ячейки представляет собой число, то этот бит будет его старшим разрядом. Также бит, расположенный на правом конце, называют младшим битом. Строение ячейки памяти представлено на рис. 6.
Рисунок 6 – Строение ячейки памяти размером 1 байт
Для того чтобы идентифицировать ячейки в оперативной памяти, каждой из них приписывается уникальное имя, которое называется адресом (address). Система назначения адресов аналогична системе идентификации домов в городе и использует такую же терминологию. Однако в случае с ячейками памяти используются только числовые адреса. Выражаясь более точно, считается, что ячейки памяти расположены в ряд и пронумерованы в этом порядке, начиная с нуля. Такая система адресации не только позволяет единственным образом определить ячейку памяти, но также упорядочивает их (рис. 7), позволяя употреблять по отношению к ним такие выражения, как «следующая ячейка» или «предыдущая ячейка».
Рисунок 7 – Ячейки памяти, упорядоченные по адресу
Важным следствием того, что и ячейки оперативной памяти, и биты в каждой ячейке упорядочены, является тот факт, что все биты в оперативной памяти, по существу, выстроены в длинный ряд. Следовательно, части этого ряда могут использоваться для хранения последовательностей битов, длина которых больше длины одной ячейки памяти. В частности, даже если память разделена на ячейки размером 1 байт, то мы можем хранить цепочку из 16 битов в двух последовательно расположенных ячейках.
Другим следствием представления оперативной памяти в виде упорядоченных ячеек с адресом является возможность индивидуального доступа к каждой ячейке, то есть данные, хранящиеся в оперативной памяти компьютера, могут обрабатываться в случайном порядке. Это объясняет то, что оперативную память часто называют памятью с произвольным доступом (RAM — Random Access Memory). Произвольный доступ к небольшим единицам данных (минимально это один байт) — коренное отличие оперативной памяти от устройств хранения данных, которые мы будем обсуждать в следующем разделе и в которых длинные последовательности байтов должны обрабатываться как блок. Когда оперативная память построена с использованием технологии динамической памяти, ее называют динамической памятью с произвольным порядком выборки (DRAM — Dynamic RAM).
Для заполнения оперативной памяти схема, которая в действительности хранит биты, объединяется со схемой, необходимой для того, чтобы остальные схемы могли хранить и получать данные из ячеек памяти. Таким образом, другие схемы могут получить данные из памяти, запрашивая содержимое ячейки по определенному адресу (операцией чтения), или они могут записывать информацию в память, требуя, чтобы определенная последовательность битов была помещена в ячейку по определенному адресу (операцией записи).
Измерение емкости памяти. Удобно конструировать оперативную память, в которой общее число ячеек является степенью двух. Раньше оперативная память компьютеров насчитывала 1024 (то есть 210) ячейки, так как число 1024 очень близко к 1000, то многие специалисты в области информатики стали употреблять приставку кило по отношению к этой единице. Следовательно, термин килобайт (сокращенно Кбайт) использовался по отношению к 1024 байтам, а про машину, содержащую 4096 ячеек памяти, говорилось, что она имеет 4 Кбайт памяти (4096 = 4 х 1024). По мере увеличения объема памяти у компьютеров в терминологию включались приставки мега для 1 048 576 (то есть 220) байтов и гига для 1 073 741 824 (то есть 230) байтов и такие единицы памяти, как мегабайт (Мбайт) и гигабайт (Гбайт), стали широко распространены.
К сожалению, такое использование терминов и приставок является неправильным, поскольку эти приставки уже использовались в других областях науки по отношению к единицам, которые являются степенью десяти. Например, при измерении расстояний километр означает 1000 метров, и при измерении радиочастот мегагерц означает 1 000 000 герц. Кроме того, известно, что многие производители компьютерного оборудования использовали приставку мега применительно к 1 024 000 байтам (то есть их мегабайт равняется 1000 Кбайт). Не стоит говорить о том, что такие расхождения в употреблении терминов с годами привели к путанице и неверному их пониманию.
Чтобы прояснить ситуацию, было предложено сохранить приставки кило, мега и гига для единиц, которые являются степенью десяти, и ввести новые приставки киби (краткое от килобинарный, сокращенно Ки), меби (краткое от мегабинарный, сокращенно Ми) и гиби (краткое от гигабинарный, сокращенно Ги) применительно к соответствующим единицам, которые являются степенью двух. Согласно этой системе термин кибибайт будет применяться к 1024 байтам, а термин килобайт к 1000 байтам. Станут ли эти приставки общеупотребительными, покажет время. Сейчас традиционное «неправильное» использование этих приставок прочно укоренилось в компьютерных кругах, и поэтому в нашей книге мы будем следовать этой традиции. Однако предложенные приставки являются попыткой разрешения все растущей проблемы, и в будущем следует с осторожностью интерпретировать такие термины, как килобайт и мегабайт.