В конце 60-х годов лабораторией Bell Labs и корпорацией General Electrics разрабатывалась ОС MULTICS (Multiplexed Information and Computing Service).
Кен Томпсон решил написать на ассемлере усеченный вариант системы MULTICS и позже к нему присоединился Брайан Керниган и они решили назвать эту систему UNICS (Uniplexed Information and Computing Service). Далее последовал ряд изменений и улучшений, таких как:
1) Система UNIX была перенесена с машины PDP-7 на PDP-11/20, а позднее на PDP-11/45, PDP-11/70. Данные машины по тем временам с большой физической памятьсю: 56 КБ и 2 МБ соответственно. Они обладали аппаратной защитой памяти. Эти машины были 16-разрядными.
2) Возникла необходимость переноса данной системы на другие машины. Было принято решение переписать данную систему на языке более высокого уровня. Томпсоном был придуман язык B, который был усеченной версией языка BCPL, однако перенос системы с помощью данного языка не удался. Был разработан язык C, с помощью которого осуществился перенос системы (1974 год). В 1974 году Ридчи и Томпсон опубликовали статью, посвященную UNIX, за которую получили престижную премию Тьюринга. В середине 80-х годов операционная система UNIX широко применялась на мини-компьютерах и инженерных рабочих станциях самых различных производителей. Многие компании приобрели лицензии на исходные коды, чтобы производить свои версии системы. Одной из таких компаний была небольшая начинающая фирма Microsoft, которая в течение нескольких лет продавала систему XENIX. В 1984 году произошло дробление компании AT&T, что повлекло последующие судебные иски из-за ранее свободного кода системы UNIX. Данная ситуация сохранялась вплоть до 90-х годов. В 1991 году финский студент Линус Торвальдс написал систему Linux (первоначальное название FREAX) на основе UNIX. Операционная система Linux быстро росла в размерах и впоследствии развилась в полноценный клон UNIX с виртуальной памятью, более сложной файловой системой и многими другими дополнительными функциями. Хотя изначально система Linux работала только на процессоре Intel386, она была быстро перенесена на другие платформы.
2*. Задачи ОС Linux.
ОС Linux была разработана программистами для программистов, чтобы использовать ее в такой среде, в которой большинство пользователей являются достаточно опытными и занимаются проектами разработки программного обеспечения, во многих случаях большое количество программистов активно работает над созданием общей системы, поэтому в операционной системе UNIX есть большое количество средств, позволяющих людям работать вместе и управлять совместным использованием информации. Можно выделить следующих два принципа:
1) Принцип наименьшей неожиданности. Данная система реагирует на действия адекватным образом.
2) Мощь и гибкость. Это означает, что в системе должно быть небольшое количество базовых элементов, которые можно комбинировать бесконечным числом способов, чтобы приспособить их для конкретного приложения. Одной из основных правил системы Linux заключается в том, что каждая программа должна выполнять всего одну функцию и делать это хорошо.
3*. Интерфейс системы Linux.
POSIX (Portable Operation System Interface for Unix) – набор стандартов, описывающих интерфейсы между операционной системой и прикладной программой. Данный стандарт создан для обеспечения совместимости различных UNIX-подобных операционных систем и переносимости прикладных программ на уровне исходного кода, но может быть использован и не для UNIX систем.
Схема системы Linux:
Режим пользователя:
Пользователь
Интерфейс пользователя
Стандартные обслуживающие программы
Интерфейс библиотечных функций
Библиотечные функции
Режим ядра:
Интерфейс системных вызовов
ОС Linux
Аппаратура
Функция ОС Unix заключается в управлении аппаратным обеспечением и предоставлении всем программам интерфейса системных вызовов. Эти системные вызовы позволяют программам пользователя создавать процессы, файлы и прочие ресурсы, а так же управлять ими. Рассмотрим следующие 3 интерфейса:
Программы делают системные вызовы, помещая аргументы в регистры и выполняя команду эмулированного прерывания для переключения из пользовательского режима в режим ядра. Поскольку на языке C невозможно написать команду эмулированного прерывания, то этим занимается библиотека, в которой есть по одной процедуре на системный вызов. Эти процедуры написаны на ассемблере, но они могут вызываться из языка C. Каждая такая процедура сначала помещает аргументы в нужное место, а затем выполняет команду эмулированного прерывания. В стандарте POSIX определен именно интерфейс библиотечных функций, а не интерфейс системных вызовов. Иначе говоря, стандарт POSIX определяет, какие библиотечные процедуры должна предоставлять соответствующая его требованиям система, каковы их параметры, что они должны делать и какие результаты возвращать.