воскресенье, 20 марта 2011 г.

Об операционных системах. Ч1.

У кошки четыре ноги - Вход, Выход, Земля и Питание.

Все мы пользуемся компьютерами. В том или ином виде. Даже если это калькулятор - это все равно компьютер. ЭВМ. Для нас уже является естественным использование программ без зазрения совести возникновения вопроса - "А что же эта программа делает-то такого особенного, что я ею пользуюсь?". Ведь большинство все программы составлены человеком. А потому как "Ale Noe - Nostra Ales" (Что один человек построил, то другой завсегда разобрать сможет) то и программы какими мы пользуемся мы же и могём составить. Тому примеров много. Приводить я их не буду. Остается вопросом - на какую же программу позариться? Так уж мы - ленивые человеки, устроены, что нам достаточно общего понимания технологического процесса не зависимо от тонкостей его реализации. Это помогает в понимании положения вещей в целом, но никак не в деталях. А ведь не стоит забывать, что деталюшки-то тоже важны.Где-то винтика не хватило и все - нима кораблыка.



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

Если мы спросим себя - "Какой вопрос мы можем задать по устройству ОС?" - наш ленивый ответ будет "А як цэ воно працуе?". Это не ответ на наш вопрос. Этим ответом можно было не отвечать. Что этот ответ, что наш вопрос - суть не меняется.

Ладно. Начнем издалека. Что бы ответить на вопрос "А як же це воно працуе?" мы должны спроектировать такое же устройство (или программу - что у нас там?). При проектировании обязательным действом является дача показаний давание определений. Не зависимо от их очевидности. Даже самую очевидную очевидность нужно сформулировать. Все хором с иронией и сарказмом ответят "Спасибо КЭП", но - не будь КЭПа - мы бы до сих пор не знали опредедения силы (да - это именно те три закона Ньютона).
Как нам известно - определения бывают минимум трех видов -
  • по назначению
  • по структуре
  • по прочим характеристикам.
Именно такие определения мы и дадим для ОС.

Назначение
          Для чего нам нужна ОС?
*ХОРОМ* "Для по-запускать игры, посмотреть фильмец, послушать музыку!"
Лады. Оно так и есть. Теперь берем "простуйшую" ЭВМ - калькулятор и спрашиваем "Для чего нам нужна ОС?"
- Но ведь на калькуляторе нет ОС, пап!
- А почему она там есть?
(Казалось бы - глупый вопрос, но на него все-таки стоит дать вразумительный ответ).

Сравнение
У компьютера есть клавиатура? Есть!
У калькулятора есть клавиатура? Есть!

У компьютера есть экран? Есть!
У калькулятора есть экран? Есть!

У компьютера есть процессор? Есть!
У калькулятора есть прцессор? Нет! 
А кто же тогда тогда считает? Есть!

У компьютера есть памать для данных программ? Есть!
У калькулятора есть память для данных программ? Есть! (Иначе - что бы считалось?)

Этим всем нужно управлять? Да!
Кто управляет памятью, экраном, клавиатурой? Операционная Система! Ой.
И не важно, что ОС жестко впаяна. То, что мы не видим суслика совсем не означает, что суслика нет.

Итак, мы пришли (или не пришли?) к выводу, что ОС должна управлять памятью и внешними устройствами. А поскольку внешние устройства - часть памяти (они занимаю диапазоны адресо адресного пространства), то все сводится к управлению памятью. (Стоит заметить, что здесь под словом память имелась и будет иметься в виду слово Оперативная Память).


Конструкция
      Хотелось бы спросить "А из чего состоит эта Операционная система?"и хотелось бы ответить, что, дескать, из того-то и того-то, но - не судьбец. Мы бы могли ответить на этот вопрос, если бы мы проектировали не только ОС но и железки для нее (например подводу). Но мы рассматриваем используемые нами операционные системы, потому - ОС с Восточного Рынка (СНГ) и железки у них фон-Неймановские, ибо иных систем у нас нет. Принимая во внимание фон-Неймановскую однопроцессорную архитектуру мы начинаем понимать, что любая операционная система станет всего-то - Набором Функций, вызываемых какой-нибудь программой. А самая первая программа будет еще отдельно выражена в названии ядро. Для MS-DOS ядром является не то io.sys, не то command.com, для GNU/Linux - это целый набор мелких программулек. По сути - как только ядро ядро Linux стартануло - все - операционная система запущена. 

Здесь мы опускаем техничиские подробности,связанные с прерываниями и прочей лабудой. Хотя это и окажется полезным - в будущем (то есть сейчас). Но пока это будущее (то есть сейчас) не наступило - давайте зададимся вопросом - "А как мы запустили первую программу?". Нет не "Как мы запустили первую программу из ОС?", но "Как мы запустили ОС?". Ответ простой - кто-то должен ее запустить. Кто? Процессор! Нет. Процессор не может этого делать, поскольку он для этого не предназначен. Его дело простое - переместить оттудова - сюдой. Так, мы уже поняли, что ОС - программа с набором внешних, вызываемых этой же программой функций. Так как ОС - программа, то ее должна запустить другая ОС. Это что же - для запуска ОС нам нужно уже запустить другую ОС. А как мы ее запстили? Этот вопрос мы оставим железнячникам, поскольку эта другая ОС - BIOS. Она ведь так и называется - Basic Input-output Operation System.

А дальше - дело маленькое.

Все, что я здесь наболтал рождалось как текст не менее 3 часов. Но рассказать это можно за 15 минут. Единственный (наверное нет) недостаток - не все вопросы освещены. Зато этот текст все таки рассказан и он подталкивает на разные мысли. Потому - вопросы. А это - самое важное!