Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая.docx
Скачиваний:
6
Добавлен:
13.02.2015
Размер:
291.82 Кб
Скачать

Внутреннее представление слов в памяти компьютера

Слова

Память

file

01100110

01101001

01101100

01100101

disk

01100100

01101001

01110011

01101011

Иногда бывает так, что текст, состоящий из букв русского алфавита, полученный с другого компьютера, невозможно прочитать - на экране монитора видна какая-то "абракадабра". Это происходит оттого, что на компьютерах применяется разная кодировка символов русского языка.

Например, в кодировке Windows последовательность числовых кодов 221, 194, 204 образует слово "ЭВМ", тогда как в других кодировках это будет бессмысленный набор символов.

К счастью, в большинстве случаев пользователь не должен заботиться о перекодировках текстовых документов, так как это делают специальные программы-конверторы, встроенные в операционную систему и приложения.

В последние годы широкое распространение получил новый международный стандарт кодирования текстовых символов Unicode, который отводит на каждый символ 2 байта (16 битов). По формуле можно определить количество символов, которые можно закодировать согласно этому стандарту:

N = 2i = 216 = 65 536.

Такого количества символов оказалось достаточно, чтобы закодировать не только русский и латинский алфавиты, цифры, знаки и математические символы, но и греческий, арабский, иврит и другие алфавиты.

Необходимо помнить, что в настоящее время для кодировки русских букв используют пять различных кодовых таблиц (КОИ - 8, СР1251, СР866, Мас, ISO), причем тексты, закодированные при помощи одной таблицы не будут правильно отображаться в другой кодировке. Наглядно это можно представить в виде фрагмента объединенной таблицы кодировки символов. Одному и тому же двоичному коду ставится в соответствие различные символы.

Двоичный код

Десятичный код

КОИ8

СР1251

СР866

Мас

ISO

11000010

194

б

В

-

-

Впрочем, в большинстве случаев о перекодировке текстовых документов заботится на пользователь, а специальные программы - конверторы, которые встроены в приложения. Начиная с 1997 г. последние версии Microsoft Windows&Office поддерживают новую кодировку Unicode, которая на каждый символ отводит по 2 байта, а, поэтому, можно закодировать не 256 символов, а 65536 различных символов. Чтобы определить числовой код символа можно или воспользоваться кодовой таблицей, или, работая в текстовом редакторе Word 6.0 / 95. Для этого в меню нужно выбрать пункт "Вставка" - "Символ", после чего на экране появляется диалоговая панель Символ. В диалоговом окне появляется таблица символов для выбранного шрифта. Символы в этой таблице располагаются построчно, последовательно слева направо, начиная с символа Пробел (левый верхний угол) и, кончая, буквой "я" (правый нижний угол). Для определения числового кода символа в кодировке Windows (СР1251) нужно при помощи мыши или клавиш управления курсором выбрать нужный символ, затем щелкнуть по кнопке Клавиша. После этого на экране появляется диалоговая панель Настройка, в которой в нижнем левом углу содержится десятичный числовой код выбранного символа. Примеры 1. Два текста содержат одинаковое количество символов. Первый текст записан на русском языке, а второй на языке племени нагури, алфавит которого состоит из 16 символов. Чей текст несет большее количество информации? Решение I = К * а (информационный объем текста равен произведению числа символов на информационный вес одного символа). Т.к. оба текста имеют одинаковое число символов (К), то разница зависит от информативности одного символа алфавита (а). 2а1 = 32, т.е. а1 = 5 бит, 2а2 = 16, т.е. а2 = 4 бит. I1 = К * 5 бит, I2 = К * 4 бит. Значит, текст, записанный на русском языке в 5/4 раза несет больше информации. 2. Объем сообщения, содержащего 2048 символов, составил 1/512 часть Мбайта. Определить мощность алфавита. Решение I = 1/512 * 1024 * 1024 * 8 = 16384 бит. - перевели в биты информационный объем сообщения. а = I / К = 16384 /1024 =16 бит - приходится на один символ алфавита. 216 = 65536 символов - мощность использованного алфавита. Именно такой алфавит используется в кодировке Unicode, который должен стать международным стандартом для представления символьной информации в компьютере.

Оперативная память персонального компьютера

Оперативная память - это, оперативное запоминающее устройство или ОЗУ или RAM, то есть "Random Access Memory" ("память с произвольным доступом"). ОЗУ представляет собой область временного хранения данных, при помощи которой обеспечивается функционирование программного обеспечения. Память состоит из ячеек, каждая из которых предназначена для хранения определенного объема данных, как правило, одного или четырех бит. Чипы памяти работают синхронно с системной шиной. Компьютерная оперативная память является динамической (отсюда - DRAM или Dynamic RAM) - для хранения данных в такой памяти требуется постоянная подача электрического тока, при отсутствии которого ячейки опустошаются. Пример энергонезависимой или постоянной памяти (ПЗУ или ROM - Read Only Memory) памяти - флэш-память, в которой электричество используется лишь для записи и чтения, в то время как для самого хранения данных источник питания не нужен. Ячейки памяти в микросхемах представляют собой конденсаторы, которые заряжаются в случае необходимости записи логической единицы, и разряжаются при записи нуля. Опустошение памяти в случае отсутствия электроэнергии осуществляется именно за счет утечки токов из конденсаторов.

Развитие DRAM

В последние несколько лет основное сражение за увеличение производительности компьютеров велось в области разработки и производства новых микросхем для скоростной памяти. Причем если до этого все совершенствование оперативной памяти сводилось к увеличению ее объема, то сейчас во главу угла ставится ускорение процесса чтения/записи запоминающих ячеек и передачи данных по системной шине. Таким образом, разработчики наконец-то вынужденно пришли к выводу, что наращивать частоту ядра процессора без ускорения процесса работы с оперативной памятью бессмысленно, т. к. процессор, обработав полученную перед этим порцию данных, надолго, останавливается, ожидая окончания очередного цикла чтения/записи. Совершенствование микросхем памяти, естественно, влечет за собой изменение конструкции чипсета системной платы и правил работы системной шины. В итоге перед пользователями теперь встает не только проблема выбора нового процессора и системной платы, но и подбора оптимального варианта системы "процессор-плата-память". Ведь сегодня предлагаются три типа модулей (DDR, DDR2, DDR3) для работы с современными процессорами, причем выбор между модулями DDR2 и DDR3 не так очевиден. Кроме того, для управления определенным типом памяти необходимо, чтобы чипсет системной платы или блок управления памятью процессора умел работать с ней. До появления процессоров Pentium III у пользователей особого выбора модулей памяти не было, а основная проблема на практике заключалась в том, как различить модули SIMM (Single In-line Memory Module) с микросхемами EDO (Extended Data Output) и FPM (Fast Page Mode). Новые поколения процессоров стимулировали разработку более скоростной памяти SDRAM (Synchronous Dynamic Random Access Memory) с тактовой частотой 66 МГц, а модули памяти с такими микросхемами получили название DIMM (Dual In-line Memory Module). В настоящее время практически завершился процесс отказа от использования модулей памяти DDR в пользу DDR2, а также начат переход на следующее поколение модулей памяти DDR3. Для процессоров Intel этот переход на DDR2 и 3 практически состоялся, а для процессоров AMD начался после выхода сокетов АМ2 и 3. Относительно памяти DDR3 следует отметить, что серийный выпуск модулей начат лишь в 2007 г., поэтому эта память до сих пор дорога, да и, в большинстве случаев, еще просто не нужна, т. к. большинству систем вполне хватает и памяти DDR2. Вообще, это еще вопрос, насколько необходима новейшая память, поскольку в реальной жизни и для большинства приложений результаты практической работы не совпадают с излишне оптимистическими замерами в различных тестах. Кроме перечисленных типов памяти существуют и другие типы памяти и модулей, которые используются в специализированных устройствах, например, в качестве видеопамяти. Следует отметить, что постоянно приходят сообщения о разработке микросхем памяти на новых принципах, 'поэтому, возможно, уже через год-два микросхемы DDR SDRAM будут считаться морально устаревшими.

Конструкция модулей памяти DIMM

64-разрядные модули памяти DIMM (Dual In-line Memory Module) появились в 1997 г. У этого поколения модулей памяти насчитывается 168 контактов, расположенных с двух сторон текстолитовой платы (по 84 контакта с каждой стороны).

Для идентификации типа модуля форм-фактора DIMM по объему памяти и типу используемых микросхем на модуле устанавливается микросхема флэш-памяти с записанной в нее служебной информацией (SPD— Serial Presence Detect), доступ к которой происходит по интерфейсу 1~С. Чтобы нельзя было установить неподходящий тип DIMM-модуля, в текстолитовой плате модуля делается несколько прорезей (ключей) среди контактных площадок, а также справа и слева в зоне элементов фиксации модуля на системной плате. Для механической идентификации различных DIMM-модулей используется сдвиг положения двух ключей в текстолитовой плате модуля, расположенных среди контактных площадок. Основное назначение этих ключей — не дать установить в разъем DIMM-модуль с неподходящим напряжением питания микросхем памяти. Кроме того, расположение ключа или ключей определяет наличие или отсутствие буфера данных и т. д. Для модернизированных модулей DIMM типа DDR SDRAM число контактов увеличено до 184.

На работу с такими модулями рассчитаны различные модификации процессоров Pentium 4 и Celeron, а также Athlon и Semptron. Для идентификации напряжения питания модулей DDR SDRAM служат соответствующие ключи. На модулях типа Registered DIMM (с буферизацией данных) между контактами и микросхемами DRAM устанавливается одна или две микросхемы временного хранения данных. В низкопрофильных модулях микросхемы буферизации устанавливаются в середине модуля (или под основными микросхемами).Так как скоростные микросхемы памяти, как и процессоры, выделяют очень много тепла, то наиболее продвинутые модули оснащаются радиаторами.

В некоторых тяжелых случаях необходимо использование принудительного охлаждения модулей, в частности, если выполняется разгон памяти.В модулях DDR2 SDRAM число контактов увеличено до 240

Для идентификации модулей DDR2 SDRAM служат соответствующие ключи. В модулях DDR3 SDRAM число контактов оставлено 240, как и у модулей DDR2, но изменено положение ключа. По разводке контактов и напряжению питания модули DDR2 и DDR3 несовместимы. Ключ у модулей DDR3 сдвинут относительно ключа DDR2 примерно на десяток контактных площадок.

Внимание! Не увеличивайте напряжение питания модулей памяти DDR3 при работе с процессором Intel Core i7 выше 1,65 В, так как это может вывести из строя входные цепи процессора.

Характеристики модулей

Говоря же о частоте работы памяти, следует помнить, что за один период тактовой частоты читается несколько порций данных с результирующей частотой (FSB), в несколько раз превышающей тактовую: учетверенная тактовая частота 100 МГц— это 400 МГц, а 133 МГц— 533 МГц. Если же используется двухканальная память или поочередное чтение из двух банков данных, то результирующая частота может увеличиться до 800 МГц. Кроме увеличения частоты чтения/записи, в модулях памяти используются и другие способы повышения производительности. Наиболее популярный способ— это буферизация данных, когда на модуле памяти устанавливается микросхема для временного хранения данных, чтобы устранить промежутки времени, в течение которых происходит процесс чтения очередной порции данных из запоминающей матрицы. В какой-то мере на общую производительность компьютера влияет и контроль достоверности данных (в режиме с коррекцией ошибок скорость работы замедляется, но итоговая производительность может оказаться выше). Так, модули с технологией ECC (Error Checking and Correction) содержат на одну микросхему больше, чем обычные. В таких модулях каждый байт данных (8 бит) снабжается еще одним битом для контроля четности в байте (в настоящее время используется групповой метод контроля достоверности данных, когда автоматически исправляется одна ошибка, а при второй ошибке в группе вырабатывается сигнал сбоя). Конечно, цена таких модулей памяти выше, поэтому их чаще всего используют в компьютерах, где требуется высокая надежность, а вот в персональных компьютерах применяют обычные модули памяти, т. к. единичные ошибки памяти мало сказываются на работе современного программного обеспечения. Модули памяти выпускаются в вариантах Registered DIMM (с буферизацией данных) и Unbuffered DIMM (без буферизации данных) с различным числом контактов, предназначенных для настольных и мобильных компьютеров. Ниже приведено сравнение различных типов модулей памяти, которые в настоящее время выпускаются.Тип модуля DDR3 DDR2 DDR

Тип модуля

DDR3

DDR2

DDR

Количество контактов

Напряжение, В

Количество контактов

Напряжение, В

Количество контактов

Напряжение, В

Unbuffered DIMM

240

1,5

240

1.8

184

2,5

Registered DIMM

240

1,5

240

1.8

184

2,5

SO-DIMM

204

1.5

200

1.8

200

2,5

Mini Registered DIMM

244

1,8

Micro DIMM

214

1,8

172

2,5

Примечание SO-DIMM (Small Out-line DIMM) — малогабаритные модули, как правило, предназначенные для ноутбуков.

Тайминги модуля памяти

Для того чтобы прочитать или записать данные в микросхеме динамической памяти, которые используются в оперативной памяти компьютера, нужно выполнить ряд операций. Если говорить в общем, то сначала чипсет или процессор выдает адрес нужной ячейки хранения, далее идет время ожидания, когда в микросхеме завершатся процессы выбора нужной ячейки и передачи информации от нее на выходной буфер или записи в нее единицы или нуля, и приведение запоминающей ячейки и схем управления в состояние ожидания следующего обращения к ней (операций на самом деле больше). Каждая операция требует времени — циклов ожидания, а так как быстродействие микросхем значительно ниже, чем тактовая частота информационных шин, то для микросхем динамической памяти указывается ряд цифр, например, 3-2-3, 3-3-3-20 или 2-3-2-6-1, которые называются таймингом микросхемы или модуля памяти. Каждая цифра в тайминге — это количество тактов шины на выполнение той или иной операции. Различных операций при обращении к ячейкам памяти очень много, но пользователи оперируют ограниченным числом. В частности, для современных модулей памяти может указываться пять операций или таймингов, например, 2-3-2-6-1. Расшифровка данной последовательности указана ниже.

Расшифровка временных задержек (тайминг 2-3-2-6-1)

Тайминг

Определение

Аббревиатура

Описание

2

CAS Latency

CL

Задержка между выбором и чтением ряда

3

RAS to CAS (Row to Column Delay)

TRCD

Выбор ряда

2

Row Precharge Delay (RAS Precharge Delay)

tRP/tRCP

Деактивация ряда

6

Row Active Delay (RAS Active Delay, time to ready)

tRA/tRD/tRAS

Число циклов чтения

1

Command Rate

CMD Rate

Задержка адресации

Наиболее идеальный случай, когда все тайминги равны 1, например, 1-1-1. Но так может быть только для очень низкой тактовой частоты процессора, равной нескольким сотням мегагерц. На практике тайминги редко близки к идеальному случаю, например: Модуль памяти DDR2 KHX4300D2/256 имеет тайминг 3-3-3-10-1 Модуль памяти КНХ11000D3LLV512 имеет тайминг 7-7-7-7-20 Вроде бы, модуль памяти DDR3 более быстр, чем DDR, но значения в тайминге у него хуже. Но это только так кажется, т. к. частота у DDR3 выше, поэтому величины таймингов оказались больше, хотя основные временные задержки у обоих типов микросхем примерно одинаковы. Тайминги памяти DDR3 производства компании Kingston приведены ниже. Заметим, что у других производителей тайминги могут быть чуть-чуть другими вследствие особенностей производства микросхем и разводки модуля памяти.

Скоростные характеристики модулей памяти DDR3 компании Kingston

Частота памяти, МГц

Классификация памяти

Тайминг, такт

1066

DDR3-1066

CAS 7 (7-7-7)

1333

DDR3-1333

CAS 9 (9-9-9)

1600

DDR3-1600

CAS 10 (10-10-10)

Часто в документации на модули памяти указывается только один временной параметр (тайминг) — CL (CAS Latency) — минимальное время между подачей команды на чтение (CAS) и началом передачи данных. Это так называемая задержка чтения или, говоря проще латентность. Например, CL2 или CL3. Оверклокеры, когда разгоняют память, не только увеличивают тактовую частоту и напряжение питания, но пытаются подобрать наиболее оптимальный тайминг. Причем оптимизация задержек позволяет существенно увеличить общую производительность компьютера. Разгон памяти Когда мы смотрим на характеристики процессоров и видеокарт, то теперь везде фигурируют огромные величины частот, например, 500. 800, 1000, 3000 МГц. Но, несмотря на такие значения частот главных узлов современного компьютера, запоминающие ячейки оперативной памяти до сих пор работают на частотах около 200 МГц, и в ближайшее время такое положение дел коренным образом не изменится. А частота, например, в 1600 МГц для модулей памяти справедлива лишь для выходных буферных схем микросхем DRAM. Для ускорения работы оперативной памяти (увеличения производительности приложений) существует несколько технологий: увеличение тактовой частоты, уменьшение таймингов и увеличение напряжения питания. А так как сегодня производители процессоров отказались от жесткой фиксации частотных характеристик своей продукции, и даже поощряют разгон, то в распоряжении пользователей имеется ряд программных инструментов для изменения стандартных характеристик узлов процессора и памяти (обычно это выполняется через пункты меню программы CMOS Setup, предназначенной для настройки параметров BIOS). Наиболее "древняя" методика разгона памяти, но эффективно использующаяся и сегодня — это увеличение опорной тактовой частоты, подающейся на модули памяти, которая, как правило, привязана к тактовой частоте системной шины. Повышая, скажем, на 25 МГц тактовую частоту, мы существенно увеличиваем производительность системы, что даже эффективнее замены процессора на более мощную модель. Заметим, результирующая частота для модулей DDR3 будет в 8 раз выше. Если обратить внимание на маркировку модулей памяти, то можно увидеть, что в настоящее время предлагаются модули памяти с частотами, не соответствующие обычным кратностям SDRAM, например, варианты 1375, 1625, 1800 МГц для модулей DDR3. В данном случае, отражается принцип оптимизации тактовой частоты модулей памяти и частоты процессора. Хотя и считается, что цепи модулей памяти и процессора работают в синхронном режиме, но при стандартных частотах, например, 1333 и 1600 МГц происходит сбой синхронизации, что вынуждает процессор останавливать прием/передачу данных на некоторое время. Если подобрать оптимальную тактовую частоту для модулей памяти, то можно увеличить общую производительность системы. Другим эффективным методом разгона памяти является принцип уменьшения таймингов (задержек). Например, если вместо варианта 4-4-4 использовать 3-3-3, то мы существенно увеличим производительность памяти. Но производители записывают в микросхему для хранения информации SPD (Serial Presence Detect) (находится на каждом модуле памяти) характеристики, которые они гарантируют для всех случаев применения. Пользователь может самостоятельно подобрать тайминги для конкретных экземпляров модулей памяти и системной платы, правда, это кропотливая и нудная работа, требующая аккуратности и внимательности (обязательное тестирование системы на всех этапах разгона!). Увеличение тактовой частоты и уменьшение таймингов почти всегда сопровождается увеличением уровня напряжения питания модулей памяти. К сожалению, просто так увеличить напряжение для современных модулей памяти нельзя, т. к. это сопровождается довольно вредными и неприятными эффектами. Первый — это увеличение тепловыделения, поэтому при разгоне модулей памяти приходится использовать конструкции модулей с теплоотводами и принудительным охлаждением. Как правило, увеличивают напряжение питания ступеньки по 0,025 или 0,050 В, проверяя стабильность работы системы и температурный режим модулей памяти. Ряд производителей выпускает специальные модули памяти, которые как раз и показывают рекордные результаты при увеличенном напряжении питания, например, для DDR3 вместо законных 1,5 В предлагается использовать 1,9 В. Но следует указать, что это недопустимо для процессоров Intel Core i7, т. к. цепи процессора непосредственно работают с микросхемами на модулях памяти. По техническим характеристикам для цепей контроллера памяти процессоров Intel Core i7 допустимо изменение напряжения всего на ±0,065 В. При покупке системной платы для процессора Intel Core i7 можно увидеть на слотах для модулей памяти этикетку с предупреждением, что не допускается увеличение напряжения питания для модулей памяти выше 1,65 В. Нарушение этого условия может привести к выходу процессора из строя.

История создания Linux 25 августа 1991 г. финский студент Линус Торвальдс разместил в Internet скромное сообщение о том, что он разработал собственную ОС.

Эта операционная система, получившая впоследствии название Linux, дала огромный импульс развитию Сети и стала флагманом движения открытых текстов (open source). Попробуем разобраться, что же такого особенного явила миру Linux и почему именно эта операционная система стала столь популярной в наши дни, о какой новой философии программирования идет речь? Зигзаги истории Присмотревшись повнимательней к прошлому, мы увидим, что место доминирующей ОС на рынке вполне могла бы занять и UNIX, причем в исполнении все той же корпорации Microsoft. Однако в силу целого ряда обстоятельств события развивались по иному сценарию: CP/M —> QDOS —> 86-DOS —> MS-DOS —> Windows. «Генеалогическая» линия Linux выглядит иначе: Multics —> UNIX —> Minix —> Linux. Вряд ли многим известно, что в нынешнем господстве Windows в немалой степени «виноват» секретный проект IBM под кодовым названием Chess — проект создания на базе процессора Intel 8086 персонального компьютера IBM PC с рабочим названием Acorn. Исторический контракт между IBM и Microsoft был подписан 6 ноября 1980 г. В соответствии с ним для первого промышленного 16-разрядного ПК компания Microsoft должна была в кратчайший срок подготовить операционную систему и четыре системы программирования (Бейсик, Фортран, Кобол и Паскаль). Почему была выбрана именно Microsoft? Главным побудительным мотивом для руководства IBM послужил впечатляющий объем сбыта компанией Microsoft систем программирования, притом рассчитанных на очень широкий круг платформ. К 1979 г. было продано около 1 млн. копий одного только Бейсика разработки Microsoft. Как ни странно, но и IBM, и Microsoft рассматривали операционную систему для нового компьютера как нечто второстепенное, отводя ей вспомогательную роль. Все делалось в жуткой спешке. Чтобы понять, как блефовала Microsoft осенью 1980 г., обещая IBM к январю 1981 г. (!) подготовить первую версию своей DOS с работающим интерпретатором Бейсика, достаточно сказать, что никакого опыта написания ОС у Microsoft тогда не было. В феврале 1980 г. компания Microsoft в рамках борьбы с Digital Research за рынок языков программирования на всякий случай приобрела лицензию на UNIX у корпорации AT&T (впоследствии созданный Microsoft диалект ОС UNIX получил название Xenix). Но и для UNIX не было практически никаких наработок — базовой платформой продуктов Microsoft была тогда ОС CP/M. Если бы не Тим Паттерсон из Seattle Computer Products, написавший весной 1980 г. свой диалект CP/M — QDOS (Quick and Dirty Operating System), да не ряд других случайностей, микрокомпьютерная революция могла бы пойти совсем по иному пути. Купив за 100 тыс. долл. разработку Паттерсона (а чуть позже переманив и его самого), Microsoft сумела выйти сухой из воды и положила начало созданию невиданной в истории империи программного обеспечения. Паттерсон построил свою ОС максимально близко к оригиналу, чтобы все ПО, написанное для CP/M, можно было легко переносить на QDOS. Именно это преимущество и было использовано Microsoft, сумевшей не только добиться самого главного для себя контракта, но и опередить почти на год саму Digital Research. В 1991 г. Линус Торвальдс, устав ждать бесплатную UNIX для процессора Intel 80386, занялся собственной разработкой ядра, из которого затем и выросла Linux. Если сравнивать Windows и UNIX с точки зрения развития, то Windows строилась как коммерческий продукт, создаваемый в условиях жесткого цейтнота и рыночного блефа, UNIX же росла в спокойной обстановке, в тиши университетских и исследовательских центров. Коммерциализация проекта оказала далеко не столь благоприятное воздействие на UNIX, тогда как Microsoft не теряла времени и весь потенциал своих специалистов направила на повышение качества реализации Windows. Как бы то ни было, развитие обеих ОС пошло по разным дорожкам. Рождение Linux Линус Бенедикт Торвальдс родился в Хельсинки в 1970 г. Еще в возрасте 10 лет он начал увлекаться программированием, активно работая на своем домашнем компьютере Commodore VIC-20. В 1989 г., когда Линус готовился поступить в университет, на конференции ассоциации Usenix в Торонто представители корпорации AT&T объявили о новой системе цен на UNIX System V: около 40 тыс. долл. в расчете на один процессор (7,5 тыс. долл. для учебных заведений). Это были очень большие деньги. Профессор Амстердамского университета Эндрю Таненбаум в ответ на это занялся написанием Minix — усеченной версии UNIX, способной работать на ПК. Весной 1991 г., уже будучи студентом университета в Хельсинки, Линус Торвальдс взялся за переделку Minix, переписав ядро и адаптировав для работы на i386. Он решил разобраться в том, как работает ОС, просто переписав ее. Вот заголовок того исторического сообщения, с которого начала отсчет эра Linux. ——- Begin post from Linus ——— From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds) Newsgroups: comp.os.minix Subject: What would you like to see most in minix? Summary: small poll for my new operating system Message-ID: <1991Aug25.205708.9541@klaava. Helsinki.FI> Date: 25 Aug 91 20:57:08 GMT Organization: University of Helsinki Сообщение начиналось словами: «Привет всем, кто использует Minix! Я делаю (бесплатную) операционную систему для клонов AT на базе процессоров 386 (486). Это просто хобби, а не что-то большое и профессиональное вроде GNU». Далее Линус призывал откликнуться на его работу всех, кому она нравится или нет. (Полный текст см. http://theory.ms.ornl.gov/~xgz/linus_announce.) В январе-феврале 1992 г. в телеконференции comp.os.minix развернулась открытая дискуссия о недостатках Linux между Таненбаумом и Торвальдсом. Профессор Таненбаум считал Linux устаревшим подходом прежде всего из-за отказа Линуса от микроядра в пользу моноядра. «Это огромный шаг назад, — писал Таненбаум. — Это все равно, что взять работающую программу на Си и переписать ее на Бейсике». Линус согласился с тем, что микроядро — хорошее решение, но настаивал на своем: моноядро, обладая большей эффективностью, не наносит серьезного ущерба переносимости. Более жестко высказался в 1998 г. прародитель UNIX — легендарный Кен Томпсон: «Я рассматриваю Linux как то, что не принадлежит Microsoft. Это ответный удар команде Microsoft — ни больше ни меньше. Не думаю, что его ожидает большой успех. Я видел исходные тексты, там есть как вполне приличные компоненты, так и никуда не годные. Поскольку в создании этих текстов принимали участие самые разные, случайные люди, то и качество отдельных его частей значительно отличается. По своему опыту и опыту некоторых моих друзей могу сказать, что Linux — довольно ненадежная система. Microsoft выпускает не слишком надежные программные продукты, но Linux — худшая из подобных систем. Это среда долго не продержится. Если вы используете ее на одном компьютере — одно дело. ПО для применения Linux в брандмауэрах, шлюзах, встроенных системах и так далее требуется еще очень серьезная доработка». Так что не технологическое совершенство проекта, а сама атмосфера работы энтузиастов над полезным проектом да свободное распространение и использование исходных текстов стали основой феномена Linux. В 1998 г. авторитетный американский журнал Forbes под заголовком «Icons of the Net» («Легенды Сети») опубликовал имена самых влиятельных людей, внесших огромный вклад в развитие сети Internet: Линус Торвальдс (28 лет) — создатель Linux. Ричард Столлман (45 лет) — основатель Фонда свободного ПО (Free Software Foundation).

Тим Бернерс-Ли (43 года) — разработчик World Wide Web. Роб Глейзер (36 лет) — основатель компании RealNetworks. Джерри Янг (29 лет) — основатель портала Yahoo! Первое место отвели Торвальдсу не случайно. Изъяны не помешали Linux радикально изменить положение дел в индустрии ПО. Благодаря доступности в паре с сервером Apache эта ОС оккупировала весь Internet. Статистика говорит сама за себя. В соответствии с отчетом Netcraft (www.netcraft.com/survey/) в ноябре 2000 г. доля Apache среди всех Web-серверов составляет 59,69%. Далее идут Microsoft Internet Information Server — 20,08% и Netscape Enterprise — 6,74%. Ныне Торвальдс работает в компании Transmeta над амбициозным проектом, до недавнего времени засекреченным. Важными его элементами являются выпуск ОС и VLIW-процессора под кодовым названием Crusoe, способного исполнять команды x86 и предназначенного для встроенных систем. Забавно, что одним из владельцев Transmeta является не кто иной, как Пол Аллен, который вместе с Биллом Гейтсом основал Microsoft. Стандартизация и дистрибутивы Linux Линус Торвальдс разработал не саму ОС, а только ее ядро, подключив уже имеющиеся компоненты, созданные в рамках проекта GNU, и прежде всего редактор emacs и компилятор gcc. Сторонние компании, увидев хорошие перспективы для развития своего бизнеса, довольно скоро стали насыщать ОС утилитами и прикладным ПО. Среди них следует назвать Red Hat Linux 6.2, GNU/Linux 2.2 компании Debian, Linux-Mandrake 7.0, SuSE Linux 6.4, TurboLinux 6.0, OpenLinux 2.4 компании Caldera, Conectiva Linux 5.1, Corel Linux OS Second Edition. Недостаток таких «комплексных обедов» — отсутствие унифицированной и продуманной процедуры установки системы, и это до сих пор является одним из главных сдерживающих факторов для более широкого распространения Linux. К тому же разработчикам прикладного «коробочного» ПО приходится тестировать свои программы сразу для нескольких популярных дистрибутивов, что заметно осложняет жизнь. Стандартизация — всегда болезненный процесс, а если он ведется в сообществе «свободных художников», это тем более непросто. Но первые шаги уже сделаны. В октябре 2000 г. опубликована Linux Development Platform Specification, подготовленная группой Free Standards Group, и она сразу же вызвала полярные оценки. Кстати, руководитель группы стандартизации Дэвид Квинлан, как и Торвальдс, работает в компании Transmeta. Отношение к Linux крупных корпораций Такие гиганты, как IBM, Hewlett-Packard, Sun Microsystems, Oracle и ряд других крупнейших игроков компьютерного рынка, в последние два года заметно активизировали свою поддержку Linux. В 2001 г. IBM планирует вложить в развитие Linux 1 млрд. долл. С чем же связана столь необычная щедрость корпораций, решивших выпускать преимущественно на бесплатной основе серьезные коммерческие продукты для «любительской» Linux? Почему они готовы тратить силы и средства для развития альтернативной и далеко не самой технологически совершенной ветви UNIX в ущерб своим диалектам: AIX, HP-UX, Solaris и др.? Первое, что приходит в голову, — желание использовать Linux в качестве стенобитного орудия, способного пробить брешь в воротах основательно укрепленного царства Microsoft. Это очевидно, но только ли в этом все дело? Другой причиной может служить наметившаяся тенденция развития весьма прибыльной сферы обучения и консалтинга. Сложность технологий все возрастает, а с ней растет и разрыв между качеством предлагаемых продуктов и уровнем запросов потребителя. Клиенты должны быть подготовлены к тому, чтобы платить немалые деньги за интеллектуальный сервис. Еще одна возможная причина — в экономически выгодном выполнении крупномасштабных проектов, в которых неизбежные затраты на закупку оборудования и прикладных программ могли бы компенсироваться низкой стоимостью системного ПО. В недавнем интервью журналу VARBusiness (ноябрь 2000 г.) президент IBM Сэм Палмизано особо подчеркнул позицию IBM по отношению к развитию Linux: «Я надеюсь, что наше участие по введению Linux в мир надежного и безопасного компьютинга, для которого характерны интенсивные потоки транзакций, а также сотрудничество с сообществом, поддерживающим идею открытых текстов, будет плодотворным как для IBM, так и для всей индустрии в целом. Особенно это заметно для компаний, предоставляющих готовые решения, которые увидят, какой потенциал таит в себе Linux». Одним из последних крупных шагов IBM стал проект Lawson — установка к марту 2001 г. в сети японских торговых центров 15 200 Linux- серверов (дистрибутив RedHat), обеспечивающих работу IBM eServer xSeries. В конце 2000 г. к IBM присоединилась и компания Hewlett-Packard. Оба гиганта намерены поддержать исполнение Linux-приложений в среде своих диалектов UNIX (речь идет прежде всего об IBM AIX и HP-UX, а также об IBM Dynix/ptx). Вот еще один ответ на вопрос, зачем ведущим корпорациям надо поддерживать чужой бесплатный диалект UNIX, имея свой коммерческий. Убиваются сразу два зайца — сначала оттягивается часть клиентов от Windows в Linux, а затем им наглядно демонстрируют, насколько последний уступает диалектам UNIX, разработанным этим гигантом. Этот прием можно назвать эффектом отвлечения- завлечения. Linux не одинока Говоря о Linux, не стоит забывать, что эта ОС не такая уж единственная и неповторимая. Есть не менее интересные и продуманные некоммерческие ОС, даже если говорить только о платформе Intel и диалектах UNIX. Назовем лишь некоторые: FreeBSD (FreeBSD Core Team на базе BSD4.4-Lite), NetBSD (NetBSD Foundation, BSD4.4-Lite + ядро Mach), OpenBSD (Theo de Raadt, BSD4.4-Lite), 386BSD (BSD4.3 Reno), Hurd (Free Software Foundation, BSD4.4 + Mach 4.0). Новая философия программирования Феномен Linux вызвал к жизни разговоры о том, что родилась новая философия программирования, принципиально отличающаяся от того, что было раньше. В самом деле, продукт может быть коммерческим или бесплатным, а процесс его производства — кустарным или промышленным. В нем могут быть заняты как одиночки, так и коллективы, любители и профессионалы. Но в любом случае сознательно или неосознанно все они следуют традиционным стадиям жизненного цикла программного продукта: анализ требований, разработка спецификаций, проектирование, макетирование, написание исходного текста, отладка, документирование, тестирование и сопровождение. Главное, что отличает этот подход, — централизация управления разными стадиями и преимущественно «нисходящая» разработка (постоянная детализация). Однако Linux создавалась по-иному. Готовый работающий макет постоянно совершенствовался и развивался децентрализованной группой энтузиастов, действия которых лишь слегка координировались. Налицо анархичный характер и «восходящая» разработка: сборка все более крупных блоков из ранее созданных мелких. Здесь можно отметить и другое. При традиционной разработке в основу кладется проектирование и написание текстов, при разработке а-ля Linux — макетирование, отладка и тестирование. Первые два этапа распараллелить сложно, а с отладкой и тестированием дело обстоит полегче. Два года назад в своем интервью журналу Computer создатель UNIX Кен Томпсон заявил, что он сторонник «восходящего» программирования: «Я не могу, рассматривая здание, представить себе детали конструктора, из которых оно построено. Когда мне попадается «нисходящее» описание системы или языка, которое содержит бесконечные библиотеки, описывающие один уровень за другим, у меня возникает ощущение какой-то трясины». Томпсон даже предложил интересный термин: «компьютерный дарвинизм». Иными словами, разработка а-ля Linux — это метод проб и ошибок, построенный на интенсивном тестировании. На любом этапе система должна работать, даже если это мини-версия того, к чему стремится разработчик. Естественный отбор оставляет только жизнеспособное. О том, что такое программирование — наука, искусство или ремесло, — спорят уже давно. И если в основе традиционной разработки ПО лежит прежде всего ремесло, то при разработке методом компьютерного дарвинизма — несомненно искусство. Нетрудно заметить, что «восходящая» разработка характеризует так называемое исследовательское программирование, когда система строится вокруг ключевых компонентов и программ, которые создаются на ранних стадиях проекта, а затем постоянно модифицируются. В конце 1999 г. в издательстве O’Reilly & Associates вышла нашумевшая книга Эрика Рэймонда «Собор и базар» (The Cathedral and the Bazaar). Ее автор — главный идеолог движения открытых текстов. В книге он излагает идею самоорганизующегося анархичного программирования, названного им «базаром», противопоставляя его традиционному централизованному, получившему название «собор». На примере Linux и других подобных разработок изначально некоммерческого ПО, берущих свое начало в проекте GNU, Рэймонд пытается вместе с читателем осмыслить природу нового явления, получившего название движения открытых текстов. Отсутствие четкого плана, минимальное управление проектом, большое число сторонних территориально удаленных разработчиков, свободный обмен идеями и кодами — все это атрибуты нового программирования. Нередко «новое» оказывается хорошо забытым старым. Все это (пусть не в таких масштабах) давно уже применялось в программировании. Однако феномен Linux дал повод провозгласить новую веру, помогая набирать в свои ряды все большее число приверженцев. Об особенностях исследовательского программирования написано немало статей. Так, швейцарские профессора А.Киральф, К.Чен и Й.Нивергельт выделили следующие важные моменты: * разработчик ясно представляет направление поиска, но не знает заранее, как далеко он сможет продвинуться к цели; * нет возможности предвидеть объем ресурсов для достижения того или иного результата; * разработка не поддается детальному планированию, она ведется методом проб и ошибок; * такие работы связаны с конкретными исполнителями и отражают их личностные качества. Главное достоинство новой философии — организация удаленной совместной работы больших коллективов сторонних программистов над важными проектами, где ключевую роль играют Internet и право свободно распоряжаться совместным продуктом. Нельзя не сказать в этой связи о бурно растущей компании VA Linux. Она ведет онлайн-репозитарий открытого ПО под названием SourceForge (http://sourceforge.net). В нем насчитывается уже несколько сотен проектов, касающихся прежде всего развития Linux. И среди них Berlin Project (графическая система) и новое поколение системы программирования языка Perl. Помимо Linux репозитарий SourceForge отслеживает проекты для Windows, Mac OS, BeOS, PalmOS. Одним из собственных проектов VA Linux является СУБД MySQL, получившая статус свободного ПО, распространяемого по лицензии GPL (General Public License, www.fsf.org/copyleft/gpl.html). В плане продвижения идеи совместного программирования VA Linux не одинока. Ее конкурентами здесь являются компании OpenAvenue и Asynchrony. Возвращаясь к книге Рэймонда, можно сказать, что метафоры «собора» и «базара», быть может, выбраны не вполне удачно. Но разве дело в метафорах? Вне зависимости от скептицизма критиков Linux и безудержной эйфории его почитателей эта операционная система стала заметной вехой конца 1990-х годов, определив пути развития индустрии в начале нового столетия. Можно ли повторить успех Linux и где таится новый технологический скачок подобного масштаба? Вот что говорит об этом Кен Томпсон: «Любое новшество станет реальностью только путем революций такого типа, которую совершила UNIX. Корпорации IBM ничто не угрожало до тех пор, пока не появилось то, что сделало ее системы непригодными. Они полностью оккупировали рынок мэйнфреймов, но я уверен — это как раз оказалось ненужным. То же самое происходит и с Microsoft: до тех пор, пока не появится нечто, способное сделать ее продукты ненужными, преодолеть ценовой порог выхода на рынок будет крайне сложно и вытеснить их невозможно».

Операционная система UNIX

В предыдущем разделе приведен взгляд на операционную систему вообще. Настоящий раздел рассматривает конкретную операционную систему - UNIX. UNIX представляет собой операционную систему, популярность которой растет. Традиционно использовавшаяся на миникомпьютерах и рабочих станциях в академическом сообществе, сейчас UNIX доступна на персональных компьютерах и деловое сообщество также стало выбирать UNIX благодаря ее открытости. Бывшие пользователи PC и мэйнфреймов теперь смотрят на UNIX как на свою операционную систему. Данный раздел описывает, как UNIX вписывается в модель операционной системы.

UNIX, как и другие операционные системы, является слоем между аппаратурой и приложениями, которые выполняются на компьютере. В ней есть функции, которые управляют аппаратным обеспечением, и функции, которые управляют выполняющимися приложениями. Тогда в чем же разница между UNIX и другими операционными системами? В основном отличие в двух вещах: внутренней реализации и интерфейсе, который видит и эксплуатирует пользователь. Внутренняя реализация в книге по большей части игнорируется. Если вы хотите знать такие детали, то существует множество текстов, которые их освещают. А вот интерфейс описывается подробно. Большинство пользователей UNIX должно знать интерфейс, хотя может и не понимать внутренней работы UNIX.

На самом деле система UNIX р нечто большее, чем просто операционная система. UNIX включает традиционные компоненты операционной системы. Кроме того, стандарт системы UNIX определяет набор библиотек и набор приложений. Рисунок 1.2 показывает компоненты и слои UNIX. Над аппаратным обеспечением находятся два компонента: файловая система и управление процессами. Далее идет набор библиотек. Вверху находятся приложения. Пользователь имеет доступ к библиотекам и к приложениям. Именно эти компоненты и представляют то, о чем многие пользователи думают как о UNIX, потому что вместе они и составляют интерфейс системы.

Та часть операционной системы UNIX, которая управляет аппаратурой и выполняет процессы, называется ядром. При управлении всеми аппаратными устройствами система UNIX рассматривает каждое устройство как файл (называемый файлом устройства). Такой подход позволяет использовать такие простые методы, как чтение и запись файлов, при доступе к любому аппаратному устройству. Файловая система управляет доступом пользователей на чтение и запись к данным и устройствам, например к принтерам, присоединенным к системе. В файловой системе реализовано управление безопасностью для защиты целостности и неприкосновенности информации. В исполняемых процессах система UNIX распределяет ресурсы (включая использование ЦПУ) и осуществляет посреднические услуги при доступе к оборудованию.

Одним из важных достоинств, проистекающим из стандартного интерфейса UNIX, является переносимость приложений. Переносимость приложений - это способность отдельного приложения выполняться на различных типах компьютерного аппаратного обеспечения без какой-либо модификации. Переносимость легко достижима в случае, когда приложение использует интерфейс UNIX для доступа к аппаратному обеспечению. Слоистая конструкция UNIX изолирует приложение от разных типов аппаратуры. Такая изоляция предоставляет разработчику возможность поддерживать отдельное приложение на множестве типов аппаратного обеспечения с минимальными усилиями. Разработчик приложений обходится меньшими затратами и потенциально получает доступ к большей потребительской базе. Пользователям не только доступно большее число приложений, но они смогут работать с одними и теми же приложениями на разных типах компьютеров.

UNIX выходит за рамки традиционной операционной системы, поскольку предлагает стандартный набор библиотек и приложений для разработчиков и пользователей. Такой стандартный интерфейс обеспечивает переносимость приложений и поддерживает знания пользователя об интерфейсе.

История UNIX

Откуда вообще берутся системы, подобные UNIX? История UNIX довольно необычна и оказывает влияние и на ее сегодняшнюю форму,

Начало

В середине 1960-х годов AT&T Bell Laboratories (в числе других) приложила немало усилий для разработки новой операционной системы под названием Multics. Multics предназначалась для поставки крупномасштабных вычислительных услуг, вроде продажи электрической энергии. Многие люди, которые работали в Bell Labs над Multics, позднее работали над UNIX.

В 1969 году Bell Labs вышла из проекта Multics, и члены Computing Science Research Center остались без вычислительной среды. Кен Томпсон, Деннис Ритчи и другие разработали базовую структуру файловой системы, которая впоследствии превратилась в файловую систему UNIX. Ранняя версия системы была разработана под компьютер PDP-7, имевшийся у группы.

Ранний проект, который помог успеху UNIX, - это использование ее в патентном департаменте AT&T для обработки текстов. Данный проект переместил UNIX на PDP-11 и вылился в систему, известную своими малыми размерами. Вскоре для UNIX был разработан знаменитый теперь язык программирования С, и сама операционная система UNIX была переписана на С. Это было одно из тех радикальных решений, превративших UNIX в ту открытую систему, каковой она сегодня является.

AT&T запретили продавать компьютерные системы, поэтому она не могла предложить на рынке продукт Bell Labs. Тем не менее популярность UNIX росла в результате внутреннего использования ее в AT&T и лицензирования в университетах для целей образования. К 1977 году были разрешены коммерческие продажи UNIX, и первый поставщик системы, Interactive System Corporation, начал продажу UNIX-систем для автоматизации офисов.

Более поздние версии разрабатывались в AT&T (или ее последователе, UNIX System Laboratories, впоследствии принадлежавшей Novell) и включали System III и несколько релизов System V. Два релиза System V, Release 3 (SVR3.2) и Release 4 (SVR4, самая поздняя версия SVR4 р SVR4.2) остаются популярными для самых разнообразных компьютеров, от PC до мэйнфреймов. В 1997 году SCO выпустила свою систему UnixWare 7.0, в основе которой лежит последний релиз System V р SVR5.

Все версии UNIX, базирующиеся на работе AT&T, требуют лицензии от текущего владельца, ныне это компания Santa Cruz Operation.

Berkley Software Distributions

В 1978 году исследовательская группа превратилась из группы распространения UNIX в UNIX Support Group (USG - Группа поддержки UNIX), которая распространила внутреннюю версию под названием Programmer's Workbench. В 1982 году USG представила System III, которая реализовывала идеи из нескольких разных внутренних версий и модификаций UNIX, разработанных многими группами. В 1983 году USG выпустила оригинал UNIX System V и благодаря разделению AT&T получила возможность активно предлагать ее на рынке. Серия последующих релизов продолжала впитывать в себя новые механизмы из других версий UNIX, включая внутренние варианты от исследовательских групп и Berkeley Software Distribution.

В то время как AT&T (через свои исследовательские группы и USG) разрабатывала UNIX, университеты, получившие образовательные лицензии, также не стояли на месте. Наиболее примечательная Computer Science Research Group из Калифорнийского университета, Беркли (USB), создала серию релизов, известных как Berkley Software Distribution, или BSD. Исходные модификации для PDP-11 были названы 1BSD и 2BSD. Поддержка компьютеров VAX Digital Equipment Corporation появилась в 3 BSD. Разработка ОС для компьютеров VAX продолжалась в 4.0BSD, 4.1BSD, 4.2BSD, 4.3BSD, в которых (особенно в версиях 4.2 и 4.3) имелись многие особенности (и базовый исходный код), принятые в коммерческих продуктах.

UNIX и стандарты

Благодаря множеству версий UNIX и частому взаимному влиянию вариантов друг на друга, многие возможности проникали в различные варианты UNIX. С возрастанием популярности UNIX в коммерческих и правительственных структурах возникла необходимость стандартизовать ее особенности так, чтобы пользователь или разработчик, применяя UNIX, мог положиться на данные особенности.

Institute of Electrical and Electronic Engineers (IEEE) создал несколько комиссий для выработки стандартов "Industry-Recognized Operating System Interface Standard based on the UNIX Operating System" (Индустриально-признанный стандарт интерфейса операционной системы, базирующийся на операционной системе UNIX). Результаты работы двух комиссий важны для обычных пользователей и разработчиков. Комиссия POSIX.1 стандартизовала интерфейс библиотеки С, используемой для написания программ для UNIX. (См. "UNIX для Internet, Энциклопедия пользователя", глава 6, "Языки программирования С и C++".) Комиссия POSIX.2 стандартизовала команды, которые доступны обычному пользователю.

В Европе консорциум Х/Ореn свел вместе различные стандарты, связанные с UNIX, включая текущую попытку создания спецификации Common Open System Environment (COSE). X/Open публикует серию спецификаций под названием X/Open Portability. Интерфейс пользователя MOTIF, распространенный стандарт, является результатом усилий консорциума X/Open.

Правительство Соединенных Штатов определило серию стандартов, базирующихся на XPG и POSIX. В настоящее время FIPS 151-2 специфицирует требования к открытым системам для федеральных закупок.

Различные коммерческие консорциумы также пытались участвовать в разработке стандартов. Однако им еще предстоит выработать приемлемые стабильные результаты.

UNIX для мэйнфреймов и рабочих станций

Многие поставщики мэйнфреймов и рабочих станций создали версии UNIX для своих машин. Мы обсудим некоторые из этих вариантов (включая Solaris от SunSoft, AIX от IBM и HP-UX от Hewlett-Packard).

UNIX для платформ Intel

Благодаря огромной популярности персональных компьютеров существует много версий UNIX, доступных для платформ Intel. Выбор версии и поиск программного обеспечения для выбранной версии может оказаться непростым делом, поскольку индустрия UNIX не установила полного двоичного стандарта для платформы Intel. Существует две базовых категории систем UNIX на аппаратном обеспечении Intel: системы на базе SVR4 и старые, более устоявшиеся системы SVR3.2.

Среди поставщиков SVR4 такие компании, как NCR, IBM, Sequent, SunSoft (которая продает Solaris для Intel) и SCO (которая продает UnixWare 2.x). Последняя же, кроме того, является главным поставщиком SVR3.2. (системы SCO Open Server).

Исходные версии "UNIX"

Несколько версий UNIX и UNIX-подобных систем являются бесплатными или очень дешевыми и включают исходный код. Данные версии особенно привлекательны для современных программистов-любителей, которые теперь могут запускать систему UNIX дома, затратив совсем немного денег и получив прекрасную возможность для экспериментов с операционной системой или для адаптации системы "под себя".

Ранней UNIX-подобной системой была MINIX, написанная Эндрю Таненбаумом (Andrew Tanenbaum). Его книга "Операционные системы: Проектирование и реализации" описывает MINIX и включает распечатку исходного кода первоначальной версии MINIX. MINIX в двоичной форме имеется для нескольких машин (PC, Amiga, Macintosh и SPARCStation).

Самым популярным вариантом исходного кода UNIX является Linux (произносится "лин накс"). Linux была разработана группой программистов во главе с Линусом Торвалдсом для бесплатной замены UNIX и имела целью совместимость с POSIX. Сама Linux распалась на несколько вариантов, в основном версий, которые предлагают дополнительную поддержку или инструменты в обмен на лицензионную плату. Linux стала основной серверной платформой для малых или средних Internet Service Providers (Поставщики услуг Internet) и для серверов Web.

Внесение изменений в UNIX

Многие люди, рассматривающие возможность перехода к UNIX, привязаны к значительному числу приложений для MS-DOS и Microsoft Windows. Затрачены колоссальные усилия, чтобы в UNIX создать программы или пакеты, которые облегчили бы миграцию и предоставили пользователям возможность выполнять существующие приложения DOS и Windows на той же самой машине, на которой выполняется UNIX. По мере эволюционирования операционных систем Windows и Windows NT, этот сектор рынка также быстро меняется.

Введение в философию UNIX

Как было описано в разделе "История UNIX", UNIX корнями уходит в систему, которая задумывалась компактной и предоставляла бы простые общие фрагменты. Хотя большинство систем UNIX выросли в довольно большие системы, и монолитные приложения теперь не редкость, исходная философия по-прежнему живет в основных командах, доступных на всех системах UNIX. В UNIX существует несколько общих ключевых элементов:

Простые команды

Команды, соединенные каналами (pipe)

Преимущественно общий стиль интерфейса

Отсутствие типов файлов

Простые прямолинейные команды

Исходные системы UNIX были очень малы, и конструкторы пытались извлечь все преимущества из маленьких машин, создавая маленькие команды. Каждая команда пыталась сделать хорошо что-то одно. Инструменты можно было объединять (как с помощью сценариев оболочки, так и программами на С) для решения более сложных задач. Так, команда под названием we была написана исключительно для подсчета строк, слов и символов в файле. Для подсчета всех слов во всех файлах необходимо было ввести wc * и получить вывод, подобный тому, что представлен в листинге 1.1.

Листинг 1.1. Использование простой команды.

$ WC *

351 2514 17021 minix-faq

1011 5982 42139 minix-info

1362 8496 59160 total

$

Для того чтобы превратить простые команды в мощный комплект инструментов, UNIX предоставляет пользователям возможность использовать вывод одной команды в качестве ввода для другой команды. Такое соединение называется каналом (pipe), а серия команд, соединенных каналами, - конвейером (pipeline), Например, для подсчета количества строк, в которые входит подстрока MINIX во всех файлах, следует ввести grep MINIX * | wc и получится вывод, подобный тому, что представлен в листинге 1.2.

Листинг 1.2. Использование конвейера.

$ grep MINIX * | wc

  1. 982 6895

$

Преимущественно общий стиль интерфейса

Действиями каждой команды можно управлять с помощью опций, которые указываются символом переноса с последующей одиночной буквой опции (например, -1). Некоторые опции принимают аргументы, которые указываются символом переноса с последующим одиночным символом и с последующим аргументом (например, -h Header). Так, для вывода всех строк с именем Таненбаума из файла minix-info, в страницах по 16 строк в каждой, следует ввести grep Tanenbaum minix-info | рг -l 16 и получится вывод, подобный тому, что представлен в листинге 1.3.

Листинг 1.3. Использование опций в конвейере.

$ grep Tanenbaum minix-info | рг -l 16

Feb 14 16:02 1994 Page 1

[From Andy Tanenbaum <ast@cs.vu.nl> 28 August 1993]

The author of MINIX, Andrew S. Tanenbaum, has written a book describing

Author: Andrew S. Tanenbaum

subjects.ast (list of Andy Tanenbaum's

Andy Tanenbaum since 1987 (on tape)

Version 1.0 is the version in Tanenbaum's book, "Operating Systems: Design

$

А плохая новость состоит в том, что некоторые команды UNIX по-разному обрабатывают опции. Однако, по мере того как все большее количество систем будет придерживаться стандартов, упомянутых в разделе "История UNIX", число нестандартных команд будет уменьшаться.

Отсутствие типов файлов

UNIX не обращает никакого внимания на содержимое файла (за исключением того случая, когда вы пытаетесь выполнить файл как команду). Система не знает разницы между файлом электронной таблицы и файлом текстового процессора. Значение символов в файле - полностью определяется командами, которые работают с файлом. Данная концепция сейчас знакома большинству пользователей PC, но когда-то она серьезно выделяла UNIX среди более ранних операционных систем. Сила данной концепции заключается в том, что для работы с любым файлом может использоваться любая программа. Недостаток же в том, что только программа, которая понимает формат файла, может полностью декодировать информацию в файле.

Резюме

UNIX, как открытая среда разработки, имеет длинную историю. С недавних пор она стала системой, которую выбирают как для коммерческого, так и для персонального использования. UNIX выполняет типичные задачи операционной системы, и, кроме того, включает стандартный набор команд и библиотечных интерфейсов. Подход UNIX, предоставляющий пользователю и разработчику основные строительные блоки, делает эту систему идеальной для создания новых приложений.

Правила перевода чисел из одной системы счисления в другую

Перевод чисел из одной системы счисления в другую составляет важную часть машинной арифметики. Рассмотрим основные правила перевода.

1. Для перевода двоичного числа в десятичное необходимо его записать в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 2, и вычислить по правилам десятичной арифметики:

При переводе удобно пользоваться таблицей степеней двойки:

Таблица 4. Степени числа 2

n (степень)

0

1

2

3

4

5

6

7

8

9

10

1

2

4

8

16

32

64

128

256

512

1024

Пример . Число перевести в десятичную систему счисления.

2. Для перевода восьмеричного числа в десятичное необходимо его записать в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 8, и вычислить по правилам десятичной арифметики:

При переводе удобно пользоваться таблицей степеней восьмерки:

Таблица 5. Степени числа 8

n (степень)

0

1

2

3

4

5

6

1

8

64

512

4096

32768

262144

Пример . Число перевести в десятичную систему счисления.

3. Для перевода шестнадцатеричного числа в десятичное необходимо его записать в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 16, и вычислить по правилам десятичной арифметики:

При переводе удобно пользоваться таблицей степеней числа 16:

Таблица 6. Степени числа 16

n (степень)

0

1

2

3

4

5

6

1

16

256

4096

65536

1048576

16777216

Пример . Число перевести в десятичную систему счисления.

Перевод чисел в десятичную систему осуществляется путем составления степенного ряда с основанием той системы, из которой число переводится. Затем подсчитывается значение суммы.

Пример

10101101.1012 = 127+ 026+ 125+ 024+ 123+ 122+ 021+ 120+ 12-1+ 02-2+ 12-3 = 173.62510

б) Перевести 703.048"10" с.с.

703.048 = 782+ 081+ 380+ 08-1+ 48-2 = 451.062510

в) Перевести B2E.416"10" с.с.

B2E.416 = 11162+ 2161+ 14160+ 416-1 = 2862.2510

4. Для перевода десятичного числа в двоичную систему его необходимо последовательно делить на 2 до тех пор, пока не останется остаток, меньший или равный 1. Число в двоичной системе записывается как последовательность последнего результата деления и остатков от деления в обратном порядке.

Пример. Число перевести в двоичную систему счисления.

5. Для перевода десятичного числа в восьмеричную систему его необходимо последовательно делить на 8 до тех пор, пока не останется остаток, меньший или равный 7. Число в восьмеричной системе записывается как последовательность цифр последнего результата деления и остатков от деления в обратном порядке.

Пример. Число перевести в восьмеричную систему счисления.

6. Для перевода десятичного числа в шестнадцатеричную систему его необходимо последовательно делить на 16 до тех пор, пока не останется остаток, меньший или равный 15. Число в шестнадцатеричной системе записывается как последовательность цифр последнего результата деления и остатков от деления в обратном порядке.

Пример. Число перевести в шестнадцатеричную систему счисления.

7. Перевод правильных дробей из десятичной системы счисления в недесятичную. Для перевода правильной десятичной дроби в другую систему эту дробь надо последовательно умножать на основание той системы, в которую она переводится. При этом умножаются только дробные части. Дробь в новой системе записывается в виде целых частей произведений, начиная с первого.

Пример.

Перевести 0.312510"8" с.с.

Результат: 0.312510 = 0.248

Замечание. Конечной десятичной дроби в другой системе счисления может соответствовать бесконечная (иногда периодическая) дробь. В этом случае количество знаков в представлении дроби в новой системе берется в зависимости от требуемой точности.

Пример.

Перевести 0.6510"2" с.с. Точность 6 знаков.

Результат: 0.6510 0.10(1001)2

8. Для перевода неправильной десятичной дроби в систему счисления с недесятичным основанием необходимо отдельно перевести целую часть и отдельно дробную.

Пример.

Перевести 23.12510"2" с.с.

1) Переведем целую часть:

2) Переведем дробную часть:




Таким образом: 2310 = 101112; 0.12510 = 0.0012. Результат: 23.12510 = 10111.0012.

Необходимо отметить, что целые числа остаются целыми, а правильные дроби - дробями в любой системе счисления.

9. Для перевода восьмеричного или шестнадцатеричного числа в двоичную форму достаточно заменить каждую цифру этого числа соответствующим трехразрядным двоичным числом (триадой) (Таб. 1) или четырехразрядным двоичным числом (тетрадой) (Таб. 1), при этом отбрасывают ненужные нули в старших и младших разрядах.

Пример.

а) Перевести 305.48"2" с.с.

б) Перевести 7B2.E16"2" с.с.

10. Перевод правильных дробей из десятичной системы счисления в недесятичную. Для перевода правильной десятичной дроби в другую систему эту дробь надо последовательно умножать на основание той системы, в которую она переводится. При этом умножаются только дробные части. Дробь в новой системе записывается в виде целых частей произведений, начиная с первого.

Пример.

Перевести 0.312510"8" с.с.

Результат: 0.312510 = 0.248

Замечание. Конечной десятичной дроби в другой системе счисления может соответствовать бесконечная (иногда периодическая) дробь. В этом случае количество знаков в представлении дроби в новой системе берется в зависимости от требуемой точности.

Пример.

Перевести 0.6510"2" с.с. Точность 6 знаков.

Результат: 0.6510 0.10(1001)2

11. Для перевода неправильной десятичной дроби в систему счисления с недесятичным основанием необходимо отдельно перевести целую часть и отдельно дробную.

Пример.

Перевести 23.12510"2" с.с.

1) Переведем целую часть:

2) Переведем дробную часть:




Таким образом: 2310 = 101112; 0.12510 = 0.0012. Результат: 23.12510 = 10111.0012.

Необходимо отметить, что целые числа остаются целыми, а правильные дроби - дробями в любой системе счисления.

12. Для перевода восьмеричного или шестнадцатеричного числа в двоичную форму достаточно заменить каждую цифру этого числа соответствующим трехразрядным двоичным числом (триадой) (Таб. 1) или четырехразрядным двоичным числом (тетрадой) (Таб. 1), при этом отбрасывают ненужные нули в старших и младших разрядах.

Пример.

а) Перевести 305.48"2" с.с.

б) Перевести 7B2.E16"2" с.с.

7. Пример 1. Число перевести в восьмеричную систему счисления.

Пример 2. Число перевести в шестнадцатеричную систему счисления.

Перевод чисел из одной системы счисления в другую.

Задача. Пусть известна запись числа Х, в Р – ичной системе счисления. X = anan-1 . . .a1a0,a-1a-2 . . . где ai– цифры Р – ичной системы. Требуется записать это число в Q – ичной системе. X = bsbs-1 . . . b1b0,b-1b-2 . . . где bi – цифры Q – ичной системы счисления .

Можно ограничиться случаем положительного числа, так как перевод любого числа заключается в переводе его модуля и приписывании числу нужного знака. При рассмотрении правил перевода нужно учитывать в какой системе счисления должны быть выполнены все необходимые для перевода действия. Пусть перевод будет осуществляться средствами Р – ичной арифметики.

Перевод из системы с основанием Q в систему счисления с основанием P.

Задача перевода произвольного числа X, заданного в системе с основанием Q, в систему с основанием Р сводится к вычислению полинома вида

Необходимо число Q и цифры bi заменить их P – ичными изображениями и выполнить операции в Р – ичной системе счисления.

Пример 1. Пусть X=3718 требуется перевести X в 10 –ю систему счисления. Для перевода запишем число X в виде в виде полинома и выполним действия в 10 – й системе. X = 3 * 82 + 7 * 81 +1* 80 = 249

Пример 2. Пусть X= af,4 16 требуется перевести X в 10 –ю систему. Для перевода запишем число в виде полинома и выполним действия в 10 – й системе X = 10 *161 + 15*160 + 4 *16-1 = 175,25

Перевод из системы с основанием P в систему счисления с основанием Q.

Для перевода любого числа достаточно уметь переводить его целую и дробную части отдельно а затем соединить их.

Перевод целых чисел.

Пусть целое число N задано в система счисления с основанием Р и требуется его перевести в систему с основанием Q. Запись N в Q – ичной системе имеет вид N = bs *Qs+ bs-1*Qs-1+ . . . + b0*Q0 Для определения b0 разделим обе части на Q, причем в левой части деление выполняется по правилам Р – ичной арифметики, получим N/Q = bsQs-1 + bs-1Qs-2 + . . . + b1 +b0 /Q Левую часть можно представить как сумму целой и дробной части N/Q = [N/Q]+ {N/Q} Приравнивая целые и дробные части получим [N/Q] = bsQs-1 + bs-1Qs-2 + . . . + b1 {N/Q} = b0/Q Ю b0 = Q{b0/Q} Указанные действия на самом деле не выполняются, так как b0 является просто остатком от деления N на Q. Далее положим N1 = [N/Q] = bsQs-1 + bs-1Qs-2 + . . . + b1 N1 будет целым числом и можно применить ту же самую процедуру для определения b1. Таким образом, при условии что N0 = N, перевод чисел с использованием Р – ичной арифметики осуществляется по следующим рекуррентным формулам:

bi = Q{Ni/Q} – остаток от деления Ni на Q; Ni+1 = [Ni/Q] – целая часть от деления Ni на Q, i = 0, 1, 2, … Процесс продолжается до тех пор, пока не будет получено Ni+1 = 0.

Пример 3. Перевести число N = 4710 в двоичную систему с использованием десятичной арифметики. Решение. При делении выделяют целую часть результата и остаток. Остаток записываю в скобках рядом с целой частью. Применим рекуррентные формулы при Q = 2 47: 2 = 23(1); 23: 2 = 11(1); 11: 2 = 5(1); 5: 2 = 2(1); 2: 2 = 1(0); 1: 2 = 0(1) Ответ: 4710 = 1011112.

Пример 4. Перевести число N = 3060 в 16 - ичную систему с использованием десятичной арифметики. Решение. 3060: 16 = 191(4); 191: 16 =11(15); 11: 16 = 0 (11). Ответ. 306010 = bf416

Перевод дробных чисел. Пусть X – правильная дробь, которую нужно перевести в Q – ичную систему. Так как X < 1, то число X в Q – ичной системе можно представить в виде X = b-1Q-1 + b-2Q-2 + . . . + b-m Q-m + . . . , где bi – искомые коэффициенты Q – ичного разложения числа X. Для определения bi умножим левую и правую часть на число Q пользуясь правилами Р – ичной арифметики, тогда XQ = b-1 + b-2Q-1 + . . . + b-m Q-m+1 + . . . Приравнивая полученные целые и дробные части получим [xQ] = b-1 {XQ} = b-2Q-1 + . . . + b-m Q-m+1 + . . . Таким образом коэффициент b-1 в разложении определяется соотношением [xQ] = b-1 Положим X1 = b-2Q-1 + . . . + b-m Q-m+1 + . . . Тогда X1 будет правильной дробью и для определения b-2 можно применить туже самую процедуру.

Если принять, что X0 = X , то перевод дроби с использованием Р – ичной арифметики осуществляется по следующим рекуррентным соотношениям: b-(i+1) = [XiQ], Xi+1 = {XiQ}, i = 0, 1, 2, … Процесс продолжается до тех пор, пока небудет получено Xi+1 = 0 или не будет достигнута требуемая точность изображения числа. Точность определяется количеством цифр учитываемых после запятой.

Пример 5. Перевести число Х = (0,2)10 в двоичную систему с использованием 10 –й арифметики. Решение. Применим формулы 0,2 ´ 2 = 0,4 = 0 + 0,4 Þ b-1 = 0; 0,4 ´ 2 = 0,8 = 0 + 0,8 Þ b-2 = 0 0,8 ´ 2 = 1,6 = 1 + 0,6 Þ b-3 = 1 0,6 ´ 2 = 1,2 = 1 + 0,2 Þ b-4 = 1 и т.д. Ответ 0,210 = 0,(0011)2

Перевод в случае Р = Ql.

Утверждение. В случае если P = Ql , где l – целое положительное число, запись какого либо числа в смешанной (Q – P) – ичной системе счисления, тождественно совпадает с записью этого числа в системе с основанием Q. Так как , то запись 8 – ричного числа в смешанной системе (2 – 8) -й, будет совпадать с записью его в 2 – ичной системе, и запись 16 – ричного числа в смешанной системе (2 – 16) - й, будет совпадать с записью его в 2 – ичной системе. Используя это утверждение можно легко выполнить перевод из системы с основанием Р в систему с основанием Q и обратно.

Пример 6. Перевести число 46,58 в двоичную систему. Решение. Запишем число в смешанной системе (2 – 8). Для записи каждой восьмеричной цифры будем использовать три двоичных разряда ( триаду ), в результате получим. 46,5 = 100 110, 101 – это есть запись числа в двоичной системе.

Пример 7. Перевести число 101110,10 2 в 16 – ричную систему. Решение. Разбиваем число на тетрады вправо и влево от запятой. 0010 1110,1000. Каждой двоичной тетраде ставим в соответствие 16 – ричную цифру. 0010 – 2, 1110 – e, 1000 – 8. Ответ 101110,10 2 = 2e,8 16

Восьмеричная система счисления

Восьмеричная систе́ма счисления — позиционная целочисленная система счисления с основанием 8. Для представления чисел в ней используются цифры от 0 до 7.

Восьмеричная система часто используется в областях, связанных с цифровыми устройствами. Характеризуется лёгким переводом восьмеричных чисел в двоичные и обратно, путём замены восьмеричных чисел на триплеты двоичных. Ранее широко использовалась в программировании и вообще компьютерной документации, однако в настоящее время почти полностью вытеснена шестнадцатеричной.

Таблица перевода восьмеричных чисел в двоичные

08 = 0002

18 = 0012

28 = 0102

38 = 0112

48 = 1002

58 = 1012

68 = 1102

78 = 1112

Для перевода восьмеричного числа в двоичное необходимо заменить каждую цифру восьмеричного числа на триплет двоичных цифр. Например: 25418 = [ 28 | 58 | 48 | 18 ] = [ 0102 | 1012 | 1002 | 0012 ] = 0101011000012

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]