Лекции (Китаев Илья Владимироваич)

[Операционные системы Китаев Илья Владимироваич (дубль) лектор. лекции]

Как появились первый операционные системы ?

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

в дальнейшем компьютеры мало по мало начинают выходить из рамок чисто вычислительной машины в грубом смысле.

ПОявились сети, а затем и опять же - планирование выполнения процессов. Первый юникс -системы - это пакетные планировщики задач. Ну вот и вся история, вступление, так сказать.

Танненбаум "операционные системы разработка и реализация" и "Операционные системы"

Современные процессоры типы -
1) конвеерные - как задачи поступают так и выполняются .
2) Суперскалярный - конвеер с дополнительной логикой (добиваются ускорения)
существуют ещё и многоядерная логика.

Регистры процессора -
байты в памяти самого процессора ,
1)например - регистор-счётчик команд.
2) указатель на стэк
3) набор флагов состояния процессора.

состояние процессора
1) пользовательский режим - ввод вывод и защита памяти запрещены
2) режим ядра (доступны все программы)

СИСТЕМНЫЙ ВЫЗОВ -обеспечивает переход в режим ядра.

ПАМЯТЬ.
память должна быть максимально быстрой большой и дешёвой - но такой памяти нет......

Память распределена по убыванию цены и скорости:
1) регистры - быстрее и дороже всех.
2) кэш - находится очень близко к процессору
3) основная память - это и есть оперативная память.
4) диск - ещё медленней и ещё дешевле.

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

ОПЕРАЦИИ
1) ввод-вывод
- активное ожидание
- прерывание при окончании работы устройства
и т.д. (и что-то третье.)

Шина - позволяется обмениваться информацией между отдельными устройствами компьютера.

СОЗДАНИЕ ПРОЦЕССА

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

Нити под виндой и линуксом создаются приблизительно одинаково.

Существуют две концеции программирования -
uniprogramming - работает только один процесс.
multiprogramming - многозадачность - поддержка множества процессов - скачивать фильм, смотреть фильм, и говорить по скайпу.

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

для МУЛЬТИЗАДАЧНОСТИ ХАРАКТЕРНО -
1) разделение ресурсов.
2) Переключение между процессами.

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

ВЗАИМОБЛОКИРОВКА -
-----------------------------конец 1-ой лекции---------------------------------------