Что означает аббревиатура pic в контексте ос
Перейти к содержимому

Что означает аббревиатура pic в контексте ос

  • автор:

К Экзаммену / ОП.07. Операционнысе системы и среды

Спецификация теста УЭ это то что мы будем конкретно контролировать в этой соотнесенности.

Требования к умениям

Результат соотнесенности У З,

использовать средства операционных систем и сред для обеспечения работы вычислительной техники;

работать в конкретной операционной системе;

работать со стандартными программами операционной системы;

устанавливать и сопровождать операционные системы;

поддерживать приложения различных операционных систем;

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

ТЕСТ ОП. 07. Операционные системы и среды Специальности 09.02. 05 Прикладная информатика по отраслям Разработчики: Сахарова Марина Александровна ГБОУ СПО Пильнинский агропромышленный техникум; Грошев Денис Владимирович ГБОУ СПО Бутурлинский сельскохозяйственный техникум. Всего тестовых заданий 60 из них: 42 закрытой формы, 6 открытые, 6 на соответствие, 6 на установление последовательности.

  • выбрать нужный логический диск
  • последовательно раскрывать нужные окна папок
  • открыть окно «Мой компьютер»
  1. открыть окно «Мой компьютер»
  2. выбрать нужный логический диск
  3. последовательно раскрывать нужные окна папок
  • установка Windows в автоматическом режиме
  • установка утилит и программ
  • запуск BIOS
  • установка драйверов оборудования установка утилит и программ
  1. запуск BIOS
  2. установка Windows в автоматическом режиме
  3. установка драйверов оборудования
  4. установка утилит и программ
  • нажать левую кнопку мыши
  • выбрать пункт окна каскадом
  • щелкнуть правой кнопкой мыши
  • навести указатель мыши на панель задач
  1. навести указатель мыши на панель задач
  2. щелкнуть правой кнопкой мыши
  3. выбрать пункт окна каскадом
  4. нажать левую кнопку мыши
  • загрузка ядра ОС
  • включение компьютера/перезагрузка
  • NTLDR
  • пользовательский сеанс
  • Master Boot Record
  • Partition Boot Sector
  • BIOS / BootMonitor
  1. включение компьютера/перезагрузка
  2. BIOS / BootMonitor
  3. Master Boot Record
  4. Partition Boot Sector
  5. NTLDR
  6. загрузка ядра ОС
  7. пользовательский сеанс
  • загрузка и инициализация диспетчера ввода-вывода;
  • загрузка системных сервисов, которые реализуют взаимодействие с пользователем.
  • установка системы безопасности
  • инициализация диспетчера памяти;
  • настройка драйвера файловой системы;
  • инициализация диспетчера объектов;
  1. инициализация диспетчера памяти;
  2. инициализация диспетчера объектов
  3. установка системы безопасности
  4. настройка драйвера файловой системы
  5. загрузка и инициализация диспетчера ввода-вывода
  6. загрузка системных сервисов, которые реализуют взаимодействие с пользователем
  • Windows 8
  • Windows 98
  • Windows Millennium
  • Windows XP
  • Windows 7
  • Windows 95
  • Windows 2000
  1. Windows 95
  2. Windows 98
  3. Windows Millennium
  4. Windows 2000
  5. Windows XP
  6. Windows 7
  7. Windows 8
1. Windows 2.Linux 3.Mac OC 1.командная строка 2.командная строка и окно 3. окно
1. утилита 2.драйвер 3.операционная система 1. системная программа 2. сервисная программа 3. программа для работы с устройствами компьютерами
1. текст 2.картинка 3.звук 4. видео 1. .jpeg 2. .mp4 3. .txt 4. .mp3
1. Windows Millennium 2. Windows XP 3. Windows 7 4. Windows 8 1. 2012г 2. 2009г 3. 2001г 4. 2000г
1. Windows 2. Mac OS 3. Unix 1. General Eleotrics 2. Microsoft 3. Apple
1. управление процессами 2. управление памятью 3. управление вводом\выводом 1. запрос на управление виртуальными устройствами 2. запрос на выделение блока памяти 3. запуск, приостановление и снятие задачи с выполнения

Операционные системы | Вопросы с ответами

1. Выберите из предложенного списка, что может являться критерием эффективности вычислительной системы:
+пропускная способность
-занятость оперативной памяти
-загруженность центрального процессора
-занятость временной памяти

2. Системы пакетной обработки предназначены для решения задач:
+вычислительного характера
-требующих постоянного диалога с пользователем
-занятость оперативной памяти
-требующих решения конкретной задачи за определенный промежуток времени

3. В каких системах гарантируется выполнение задания за определенный промежуток времени:
-пакетной обработки
-разделения времени
-занятость оперативной памяти
+системах реального времени

4. В системах пакетной обработки суммарное время выполнения смеси задач:
+равно сумме времен выполнения всех задач смеси
-меньше или равно суммы времен выполнения всех задач смеси
-больше или равно суммы времен выполнения всех задач смеси
-занятость оперативной памяти

5. В системах реального времени
-набор задач неизвестен заранее
-занятость оперативной памяти
-набор задач известен заранее
+известен или нет набор задач зависит от характера системы

6. Самое неэффективное использование ресурсов вычислительной системы:
+в системах пакетной обработки
-занятость оперативной памяти
-в системах разделения времени
-в системах реального времени

7. В многопоточных системах поток есть –
-заявка на ресурсы
-занятость оперативной памяти
-заявка на ресурс ЦП
+заявка на ресурс ОП

8. Потоки создаются с целью:
+ускорения работы процесса
-защиты областей памяти
-занятость оперативной памяти
-улучшения межпроцессного взаимодействия

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

10. Планирование потоков игнорирует:
-приоритет потока
-занятость оперативной памяти
-время ожидания в очереди
+принадлежность некоторому процессу

11. В каких системах тип планирования статический
-реального времени
-разделения времени
-занятость оперативной памяти
+пакетной обработки

12. Состояние, которое не определено для потока в системе:
-выполнение
-синхронизация
-ожидание
+готовность

13. Каких смен состояний не существует в системе:
+выполнение → готовность
-ожидание →выполнение
-ожидание → готовность
-готовность → ожидание

14. Какой из алгоритмов планирования является централизованным:
-вытесняющий
-памятный
-возможный
+невытесняющий

15. При каком кванте времени в системах, использующих алгоритм квантования, время ожидания потока в очереди не зависит от длительности ее выполнения:
-при маленьком кванте времени
-занятость оперативной памяти
-при длительном кванте времени
+при любом кванте времени

16. Приоритет процесса не зависит от:
-того, является ли процесс системным или прикладным
+статуса пользователя
-требуемых процессом ресурсов
-занятость оперативной памяти

17. В каких пределах может изменяться приоритет потока в системе Windows NT:
-от базового приоритета процесса до нижней границы диапазона приоритета потоков реального времени
-от нуля до базового приоритета процесса
-занятость оперативной памяти
+базовый приоритет процесса ± 2

18. Каких классов прерываний нет?
-аппаратных
-асинхронных
-внутренних
+программных

19. Какие из прерываний можно считать синхронными?
-внешние
+внутренние
-программные
-динамические

20. Память с самой высокой стоимостью единицы хранения:
-дисковая память
-оперативная память
-занятость оперативной памяти
+регистры процессора

21. Какая функция ОС по управления оперативной памятью характерна только для мультизадачных ОС:
-выделение памяти по запросу
-освобождение памяти по завершению процесса
-занятость оперативной памяти
+защита памяти

22. Какая стратегия управления памятью определяет, какие конкретно данные необходимо загружать в память:
+выборки
-размещения
-замещения
-загрузки

23. Виртуальные адреса являются результатом работы:
-пользователя
+транслятора
-компоновщика
-ассемблера

24. Какого типа адреса могут быть одинаковыми в разных процессах:
+виртуальные
-физические
-реальные
-сегментные

25. Недостатки распределения памяти фиксированными разделами:
-сложность реализации
-сложность защиты
+ограничение на число одновременно выполняющихся процессов
-фрагментация памяти

26. Какой процесс обязательно должен выполняться в системе памяти с перемещаемыми разделами:
-сжатие
-перемещение
-занятость оперативной памяти
+свопинг

27. Что из ниже перечисленного верно для свопинга:
-на диск выгружается неиспользуемая в настоящий момент часть процесса
-на диск выгружаются неиспользуемые процессом данные
-занятость оперативной памяти
+на диск выгружается не активный процесс

28. Таблица страниц используется для:
+преобразования виртуального адреса в физический
-для ускорения работы процесса
-для реализации свопинга
-занятость оперативной памяти

29. Объем страницы:
-выбирается по возможности максимальный
-занятость оперативной памяти
-выбирается минимальным
+для процессоров х86 стандартно равен 4 кбайта

30. Кэширование – это:
-способ функционирования дисковых устройств
-способ работы с ОП
-занятость оперативной памяти
+способ взаимного функционирования двух типов запоминающих устройств

31. Что может выступать в качестве кэша для ОП:
+дисковые устройства
-быстродействующая статическая память
-виртуальная память
-занятость оперативной памяти

32. Атаки класса «отказ в обслуживании» направлены на:
+полный или частичный вывод ОС из строя
-вывод из строя аппаратуры ПК
-занятость оперативной памяти
-полное или частичное удаление установленного ПО

33. Какой вид многозадачности не существует?
-Вытесняющая многозадачность
+Кооперативная (не вытесняющая) многозадачность
-занятость оперативной памяти
-Симметричная многозадачность

34. Существуют ли классификация ядер ОС по особенностям выполнения ядра в многопроцессорных системах? (учитывая, что такие системы ядром поддерживаются)
-Да
+Нет
-Возможно
-Нереально

35. Где должен располагаться код для обнаружения оборудования? (учитывая современные устройства)
+В ядре (или обязательных модулях, серверах для немонолитных архитектур)
-Вне ядра, в драйверах
-Не занятость оперативной памяти
-Занятость оперативной памяти

36. Какое ядро современных ОС поддерживает Multiboot Specification?
+Windows
-SunOS 82
-MacOS
-Все ядра BSD

37. Что означает аббревиатура PIC в контексте ОС?
-Programmable Interrupt Controller
-Past Implemented Code
-Position Independent Code
+Portable Incompatible Code

38. Какие основные преимущества микроядерной архитектуры?
-Упрощение переносимости
-Улучшение безопасности
+Повышенные отказоустойчивость и степень структурированности
-Все выше перечисленное

39. Предшественником какого современного семейства ОС была ОС Minix Эндрю Таненбаума?
-BSD
-Windows
-СИЛК
+Linux

40. Нашли ли экзоядерные ОС широкое применение в современной вычислительной технике?
-Да
+Нет
-Возможно
-Нереально

41. В какой из ОС впервые был реализован стек протоколов TCP/IP?
-BSD
+Windows
-Linux
-DOS

42. Выберите не подходящее утверждение об отношении DOS к первым версиям Windows?
+В Windows можно было запускать приложения DOS
-занятость оперативной памяти
-Многие функции Windows делегировались соответствующим функциям DOS (то есть для этого производилось переключение режимов работы ЦПУ)
-Поддержка приложений DOS была ограниченной и неполной (при эмуляции на VDM, в рамках режима V86)

43. В какой ОС поддержка графического интерфейса пользователя (GUI) интегрирована непосредственно в ядро?
-Windows
-Оникс
-BSD
+Linux

44. Укажите типы сообщений, которые могут использоваться в микроядерных ОС
+Синхронные и асинхронные
-Только синхронные
-Паразиторные
-Только асинхронные

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

46. Укажите основное средство межпроцессного взаимодействия в микроядерных архитектурах
-Потоки
+Удалённые вызовы процедур (RPC, Remote Procedure Call)
-Сообщения
-СМС

47. Какая нотация вызовов функций принята в системных вызовах Windows?
-Смесь нотаций языков C и Pascal (обратный порядок аргументов, очистка стека функцией)
-Нотация языка Pascal (прямой порядок аргументов, очистка стека функцией)
-Нотационные знаки
+Нотация языка C (обратный порядок аргументов, очистка стека вызывающим кодом)

48. Достаточно ли установки антивирусного пакета для того, чтобы считать ОС защищенной:
+да
-нет
-Возможно
-зависит от конкретных условий работы

49. Для обеспечения безопасности системы должны использоваться средства, которые при отказе переходят в состояние:
-максимальной защиты
+минимальной защиты
-средняя защита
-нормальная защита

50. При организации защиты в системе необходимо руководствоваться принципом:
+максимальной защиты
-минимальной защиты
-без баланса
-баланса возможного ущерба от угрозы и затрат на ее предотвращение

51. Слабости парольной защиты:
+трудность распознавания
-возможность раскрытия пароля путем подбора
-возможность обхода парольной защиты
-занятость оперативной памяти

52. Процесс авторизации – это процесс
-ввода пользователем учетной информации
-доказательства того, что пользователь тот, за кого себя выдает
-занятость оперативной памяти
+выполнения действий, необходимых для того, чтобы пользователь мог начать работу в системе

53. В асимметричных системах шифрования:
-ключ шифрования совпадает с ключом расшифрования
-занятость оперативной памяти
-ключ шифрования отличается от ключа расшифрования
+ключи генерируются случайным образом

54. Правила разграничения доступа не должны позволять:
-присутствия ничейных объектов в системе
-занятость оперативной памяти
-присутствия объектов, недоступных для администраторов системы
+присутствия всем доступных объектов

55. Файловая система является частью:
-дисковых систем
-драйверов дисков
+ОС
-пользовательских программ

56. Какую структуру образуют файлы в ФС (файловой системе) FAT?
-древовидную
+сетевую
-реляционную
-плоскую

57. Определите, какое это имя файла: USER\DO\FEDYA DOC:
+полное
-простое
-относительное
-конечный

58. Одна ФС в системах Windows занимает, как правило:
-1 физический диск
-1 логический диск
+1 раздел диска
-1 логика

59. В ФС FAT атрибуты файлов хранятся
+вместе с файлом
-в каталогах
-в индексных дескрипторах
-в таблицах FAT

60. Диски – это память:
+с последовательным доступом
-с индексно-последовательным доступом
-с прямым доступом
-с левым

61. Какой разметки нет на диске?
-дорожек
+кластеров
-цилиндров
-секторов

62. Минимальная единица, участвующая в операциях обмена с дисковым устройством:
-байт
-сектор
+дорожка
-цилиндр

63. Размер логического диска:
+меньше или равен размеру раздела
-равен размеру раздела
-больше или равен размеру раздела
-занятость оперативной памяти

64. ОС Windows поддерживают следующие типы разделов:
+основной
-базовый
-подкачки
-дополнительный

65. Раздел, с которого загружается ОС при запуске компьютера называется:
-загрузочным
-основным
-дополнительным
+активным

66. Минимальный фактический размер файла на диске равен:
-1 биту
-1 байту
-1 сектору
+1 кластеру

67. На диске не может быть кластера размером:
+512 байт
-1024 байта
-1536 байт
-2048 байт

68. Числовое значение –12, 16, 32 – в ФС FAT отражает:
-размер кластера на диске
-дополнительный
+разрядность элемента в таблице FAT
-допустимое количество символов в имени файла

69. Максимальный размер диска, поддерживаемого FAT16:
-практически неограничен
-1024 кбит
-512 Мбайт
+2 Гбайта

70. Недостатки ФС FAT:
-сложность реализации
+не поддерживают разграничения доступа к файлам и каталогам
-не поддерживают длинных имен файлов
-не содержат средств поддержки отказоустойчивости

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

72. Где находится BIOS?
-в оперативно-запоминающем устройстве (ОЗУ)
-на винчестере
-на CD-ROM
+в постоянно-запоминающем устройстве (ПЗУ)

73. Папка, в которую временно попадают удалённые объекты, называется
+Корзина
-Оперативная
-Портфель
-Блокнот

74. Текущий диск — это
+диск, с которым пользователь работает в данный момент времени
-CD-ROM
-жесткий диск
-диск, в котором хранится операционная система

75. ОС Windows поддерживает длинные имена файлов Длинным именем файла считается
-любое имя файла без ограничения на количество символов в имени файла
-любое имя файла латинскими буквами, не превыщающее 255 символов
-занятость оперативной памяти
+любое имя файла, не превышающее 255 символов

76. Внутренние команды — это
-команды, предназначенные для создания файлов и каталогов
-занятость оперативной памяти
+команды, встроенные в DOS
-команды, которые имеют расширения sys, exe, com

77. Загрузчик операционной системы MS DOS служит для
-загрузки программ в оперативную память ЭВМ
-обработки команд, введенных пользователем
+считывания в память модулей операционной системы io sys и msdos sys
-подключения устройств ввода-вывода

78. Какие команды DOS называются внешними?
-команды, предназначенные только для работы с периферийными устройствами
-занятость оперативной памяти
+команды, хранящиеся на диске в виде отдельных программа и вызываемые по мере необходимости
-все команды, которые можно реализовать с помощью DOS

79. BIOS — это
-игровая программа
-диалоговая оболочка
+базовая система ввода-вывода
-командный язык операционной системы

80. Операционная система сети включает в себя управляющие и обслуживающие программы К управляющим относятся
-Межпрограммный доступ
-Доступ отдельных прикладных программ к ресурсам сети
-Синхронизация работы прикладных программных средств
+Все выше перечисленные

81. Какой вид многозадачности не существует?
-Вытесняющая многозадачность
-Кооперативная (не вытесняющая) многозадачность
+Симметричная многозадачность
-занятость оперативной памяти

82. Существуют ли классификация ядер ОС по особенностям выполнения ядра в многопроцессорных системах? (учитывая, что такие системы ядром поддерживаются)
+Да
-Нет
-Возможно
-Невозможно

83. Где должен располагаться код для обнаружения оборудования? (учитывая современные устройства)
+В ядре (или обязательных модулях, серверах для немонолитных архитектур)
-Вне ядра, в драйверах
-В памяти
-В дисководе

84. Какое ядро современных ОС поддерживает Multiboot Specification?
-Windows
-MacOS
+Linux
-Все ядра BSD

85. Что означает аббревиатура PIC в контексте ОС?
-Programmable Interrupt Controller
-Past Implemented Code
+Position Independent Code
-Portable Incompatible Code

86. Какие основные преимущества микроядерной архитектуры?
-Упрощение переносимости
-Улучшение безопасности
+Повышенные отказоустойчивость и степень структурированности
-Все выше перечисленное

87. Предшественником какого современного семейства ОС была ОС Minix Эндрю Таненбаума?
-BSD
-Windows
+Linux
-СМС

88. Нашли ли экзоядерные ОС широкое применение в современной вычислительной технике?
-Да
-Возможно
-Нереально
+Нет

89. В какой из ОС впервые был реализован стек протоколов TCP/IP?
+BSD
-Windows
-Linux
-DOS

90. Выберите не подходящее утверждение об отношении DOS к первым версиям Windows?
-В Windows можно было запускать приложения DOS
-занятость оперативной памяти
-Многие функции Windows делегировались соответствующим функциям DOS (то есть для этого производилось переключение режимов работы ЦПУ)
+Поддержка приложений DOS была ограниченной и неполной (при эмуляции на VDM, в рамках режима V86)

91. В какой ОС поддержка графического интерфейса пользователя (GUI) интегрирована непосредственно в ядро?
+Windows
-BSD
-СМС
-Linux

92. Укажите типы сообщений, которые могут использоваться в микроядерных ОС
+Синхронные и асинхронные
-Параллельные
-Только синхронные
-Только асинхронные

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

94. Укажите основное средство межпроцессного взаимодействия в микроядерных архитектурах
-Потоки
-занятость оперативной памяти
-Удалённые вызовы процедур (RPC, Remote Procedure Call)
+Сообщения

95. Какая нотация вызовов функций принята в системных вызовах Windows?
+Смесь нотаций языков C и Pascal (обратный порядок аргументов, очистка стека функцией)
-Нотация языка Pascal (прямой порядок аргументов, очистка стека функцией)
-Нотация языка C (обратный порядок аргументов, очистка стека вызывающим кодом)
-занятость оперативной памяти

96. Для выполнения каких операций оптимизирована серверная операционная система Novell NetWare?
-доступ к файлам
+доступ к файлам и печать
-почтовая служба
-занятость оперативной памяти

97. Какие из этих ОС могут использоваться для построения одноранговых сетей?
-NetWare
+Windows 95/98
-занятость оперативной памяти
-MS-DOS

98. Какие задачи не выполняет ОС при обмене с периферийным устройством?
-решает, может ли быть выполнена требуемая операция обмена
-передает запрос драйверу ПУ
-занятость оперативной памяти
+принимает информацию из сети от устройства управления ПУ

99. Сколько выделенных серверов может одновременно работать в сети?
-нет специальных ограничений
-занятость оперативной памяти
+только один
-по числу требуемых в сети служб — для каждой сетевой службы отдельный выделенный сервер

100. Пусть сеть состоит из идентичных компьютеров, на которых установлены однотипные ОС За одним из компьютеров административно закреплены функции по обслуживанию запросов остальных компьютеров(все пользователи сети хранят свои файлы на диске этого компьютера) К какому типу сети вы отнесете эту сеть?
-сеть с выделенным сервером
-занятость оперативной памяти
+одноранговая сеть
-гибридная сеть

Эволюция дизайна интерфейсов операционных систем с 1981 по 2009 годы

image

Графический пользовательский интерфейс (GUI — Graphical User Interface) это средства позволяющие пользователям взаимодействовать с аппаратными составляющими компьютера достаточно комфортным и удобным для себя образом.
В течении многих лет для большого количества операционных систем, таких как OS/2, Macintosh, Windows, AmigaOS, Linux, Symbian OS, и т. п., было создано еще большее количество графических интерфейсов.
Давайте попробуем взглянуть на эволюцию дизайна интерфейсов этих систем, начиная с 80-х годов.
Должен заметить, этот топик демонстрирует только значительные достижения и этапы в области графического дизайна (а не операционных систем в целом), да и не все системы существуют и по сей день.

Первый GUI был разработан в Xerox Palo Alto Research Center (PARC) в далеких 70-х годах. Эта разработка дала старт новой эре инноваций в компьютерной графике.
Первый персональный компьютер который использовал новый графический интерфейс был Xerox Alto, созданный в 1973 году. Он не был коммерческим продуктом и предназначался в основном для научных исследований в университетах.

1981-1985
Xerox 8010 Star (1981)

Это была первая система представленная в качестве интегрированного настольного компьютера, включающая программные приложения и графический интерфейс. Компьютер был известен как «The Xerox Star», позже переименованный в «ViewPoint» и еще позднее в «GlobalView».

Apple Lisa Office System 1 (п1983)

Также известна как Lisa OS, правда в данном случае аббревиатура слишком неоднозначна для ее названия Office System (Офисная Система). Она была создана компанией Apple с намерением сделать компьтер для работы с документами.
Но, к сожалению, эта система была «убита» операционной системой Apple Macintosh которая была на тот момент более доступна.
Так же были апгрейды системы Lisa OS до Lisa OS 2 в 1983 году и Lisa OS 7/7 3.1 в 1984, но это изменения затрагивали только саму систему а не ее интерфейс.

image

VisiCorp Visi On (1984)

Visi On был первыйм интерфейсом разработанным для IBM PC. Эта система была ориентирована на большие корпорации и стоила достаточно дорого. Интерфейс использовал мышь, имел встроенный инсталятор и справочную систему, но не использовал иконки.

image

Mac OS System 1.0 (представлена в 1984)

System 1.0 была первой операционной системой созданной для Macintosh. У нее уже имелось несколько деталей современной операционной системы — она была основана на оконном принципе и содержала иконки. окна могли перетаскиваться с помощью мыши а файлы и папки могли копироваться перетаскиванием на место назначения.

Amiga Workbench 1.0 (1985)

После своего релиза Amiga казалось обгоняет свое время. GUI включал в себя например: цветную графику (4 цвета: черный, белый, синий и оранжевый), большей частью поддерживала многозадачность, стерео звук и иконки с несколькими состояниями (выделенная и не выделенная).

Windows 1.0x (1985)

В этом году Microsoft наконец-то подхватила всеобщую интерфейсоманию и выпустила Windows 1.0 — свою первую операционную систему основанную на GUI. Система имела 32×32 пиксельные иконки цветную графику. Однако самое интересное нововведение (правда позже исчезнувшее) была иконка анимированных аналоговых часов (со стрелками :)).

GEM (1985)

GEM (Graphical Environment Manager — Менеджер Графической Среды) созданный компанией Digital Research, Inc. (DRI) был оконного типа. Первоначально он создавался для использования с операционной системой CP/M на базе микропроцессоров Intel 8088 и Motorola 68000, но позднее был доработан для использования в DOS. Большинство людей будут помнить GEM как GUI для компьютеров Atari ST, еще он использовался для серии IBM совместимых компьютеров от Amstrad. Так же он послужил движком для Ventura Publisher и нескольких других DOS программ. Также он был портирован на другие компьютеры но не снискал на них популярности.

image

1986 — 1990
IRIX 3 (выпущена в 1986, первый релиз в 1984 году)

64-битная операционная система IRIX была создана для UNIX. Интересной особенностью ее GUI является поддержка векторных иконок. Эта функция была встроена в эту систему еще задолго до начала существования Mac OS X.

image

GEOS (1986)

GEOS (Graphic Environment Operating System — Операционная Система с Графическим Средой) была разработана в компании Berkeley Softworks (позднее GeoWorks). Первоначально она разрабатывалась для Commodore 64 и включала в себя графический текстовый процессор, называемый geoWrite и программа для рисования под названием geoPaint.

Windows 2.0x (1987)

В этой версии было значительно улучшено управление окнами. Теперь стало возможным перекрывать, изменять размеры, разворачивать, увеличивать и уменьшать окна.

OS/2 1.x (1988)

Первоначально OS/2 была детищем IBM и Microsoft, но в 1991 году две компании разделились на Microsoft с технологией собственной GUI для OC Windows и IBM продолжающую разработку OS/2. Интерфейс использованный в OS/2 был назван «Presentation Manager». Данная версия GUI поддерживала только монохромные иконки.

NeXTSTEP / OPENSTEP 1.0 (1989)

Стива Джобса заинтересовала идея создать идеальный компьютер для исследовательских лабораторий и университетов. Впоследствии эта идея вылилась в стартап называемый NeXT Computer Inc.
Первый компьютер NeXT был представлен в 1988 году, однако значительный прогресс был достигнут в 1989 с выпуском GUI NeXTSTEP 1.0, превратившийся позже в OPENSTEP.
Иконки интерфейса стали больше (48×48) и использовали большее количество цветов. Первоначально GUI был монохромным, однако начиная с версии 1.0, появилась поддержка цветных мониторов. Этот скриншот показывает, как выглядел его поздний интерфейс.

image

OS/2 1.20 (1989)

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

Windows 3.0 (1990)

К этой версии разработчики из Microsoft поняли все реальные преимущества GUI и стали значительно его улучшать.
Сама операционная система стала поддерживать стандарты, и расширенный режим для 386 архитектуры, который стал требовать памяти больше чем, 640 килобайт, и больше пространства жесткого диска, в результате стали возможными разрешения, такие как Super VGA 800×600 и XGA 1024×768.
В тоже время, Microsoft пригласили художника и графического дизайнера Сьюзан Каре для разработки дизайна иконок Windows 3.0 и создания уникального образа своего GUI.

1991 — 1995
Amiga Workbench 2.04 (1991)

Для этой версии GUI было сделано большое количество улучшений. Была изменена цветовая схема и были введены объемные элементы дизайна. Рабочий стол мог быть разделен по вертикали на два экрана с собственными разрешениями и глубиной цветопередачи, хотя сегодня это кажется немного странным. Стандартное разрешение было 640×256, но аппаратно поддерживались и большие разрешения.

Mac OS System 7 (1991)

Mac OS version 7.0 была первой Mac системой поддерживающей цвета. К иконкам были добавлены оттенки серого, синего и желтого цветов.

image

Windows 3.1 (1992)

Эта версия Windows включала в себя предустановленные TrueType шрифты. На тот момент это фактически определило использование Windows в качестве издательской платформы.
Такая функциональность была доступна ранее только в Windows 3.0 с использованием Adobe Type Manager (ATM) — системы работы со шрифтами от компании Adobe. Так же эта версия содержала цветовую схему под названием «Hotdog Stand», содержащую яркие оттенки красного, желтого и черного цветов.
Эта схема была создана для облегчения восприятия текстовой и графической информации людьми с нарушениями цветового зрения.

image

OS/2 2.0 (1992)

Это был первый GUI который был нацелен на поддержку мультиязычных интерфейсов, также он был первый с которым были проведены тесты на юзабилити и аксессабилити. Интерфейс был создан с использование объектно-ориентированного дизайна. Каждые файл и папка представлялись объектами которые могли быть ассоциированы с другими файлами, папками и программами. Также поддерживались технология «drag and drop» и возможность изменения темы.

Windows 95 (1995)

В Windows 95 был полностью переработан пользовательский интерфейс. Это была первая версия Windows в которой в углу каждого окошка появилась кнопка с крестиком закрывающая его.
Были добавлены различные состояния иконок и элементов управления (такие как: доступно, недоступно, выбрано, отмечено и т. д.). Так же впервые появилась знаменитая кнопка «Пуск».
Для Microsoft это был огромный шаг вперед и для операционной системы, и для унификации GUI.

1996 — 2000
OS/2 Warp 4 (1996)

В 1996 году IBM представила OS/2 Warp 4, которая привнесла значительные улучшения внешнего вида рабочего стола.
Иконки были расположены на рабочем столе, куда также пользователь мог помещать собственные файлы и папки. Появившийся шредер был аналогом корзины (Recycle Bin) из Windows или мусорки(?) (Trash) из Mac OS, за исключением того, что он сразу удалял помещенные в него документы, вместо хранения их копии с возможностью восстановления.

image

image

Mac OS System 8 (1997)

Стандартные иконки для этой версии GUI были 256-и цветными. Так же Mac OS 8 стала одной из первых систем применивших изометрический вид изображения иконок, также называемых псевдо-3D иконками. Платиново-серая тема, впервые используемая здесь, стала визитной карточкой последующих версий этой системы.

image

Windows 98 (1998)

Стиль иконок напоминал Windows 95, но система использовала уже больше 256 цветов для отображения графического интерфейса. Почти полностью изменился Windows Explorer и впервые появился «Active Desktop».

image

KDE 1.0 (1998)

Так в релизе описывала свой проект команда KDE: «KDE современная среда рабочего стола для компьютеров под управлением UNIX. KDE пытается заполнить необходимость в быстром и удобном интерфейсе для Unix систем, напоминающем MacOS и Window95/NT аналоги среды. Полностью свободная и открытая компьютерная платформа бесплатно доступна каждому, включая исходный код для модифицирования».

image

BeOs 4.5 (1999)

Операционная система BeOS была разработана для персональных компьютеров. Изначально она была написана в Be Inс. в 1991 году для запуска на BeBox машинах. В последствии она была создана чтобы собрав преимущества новых технологий и аппаратных средств, таких как симметричная мультизадачность использующая модульную I/O систему, почти полная многопоточность, почти полная мультизадачность и 64-х битная журналируемая файловая система известная как BFS. Графический интерфейс BeOS был основан на принципах ясного, чистого и не аляповатого дизайна.

image

GNOME 1.0 (1999)

Интерфейс GNOME в основном был создан для Linux Red Hat, однако позднее появились версии и для других дистрибутивов Linux.

2001 — 2005
Mac OS X (2001)

В начале 2000-х Apple объявила о своем новом интерфейсе «Aqua» и в 2001 компания представила его со своей новой операционной системой Mac OS X.
Дефолтные 32×32 и 48×48 пиксельные иконки были заменены на большие 128×128 пиксельные иконки, использующие анти-аллиасинг и полупрозрачность.
Однако, после выхода этого GUI появилось большое количество критики. Видимо пользователи не были готовы к столь кардинальным изменениям, но достаточно скоро они приняли новый стиль, и сегодня этот GUI представляет собой основу для всех систем Mac OS X.

image

Windows XP (2001)

Microsoft старалась полностью изменять пользовательский интерфейс с каждой новой платформой, Windows XP не стал исключением. Стало возможным менять стили для GUI, пользователи могли полностью изменить внешний вид и поведение интерфейса. По умолчанию иконки были размером 48×48 пикселей, и использовали миллионы цветовых оттенков.

image

KDE 3 (2002)

Начиная с версии 1.0, среда KDE значительно улучшалась. Были отточены вся графика и иконки и унифицировано исполнение.

image

2007 — 2009 (по настоящий момент)
Windows Vista (2007)

Это стало ответом Microsoft своим конкурентам. Также было добавлено много 3D и анимации. Начиная с Windows 98, Microsoft всегда пыталась улучшить рабочий стол. В Windows Vista появились виджеты и несколько улучшений вместе с отказом от «Active Desktop».

image

Mac OS X Leopard (2007)

Apple в шестом поколении своей системы Mac OS X в очередной раз подняли планку пользовательского интерфейса. Основой GUI по прежнему оставался интерфейс «Aqua» со своим глянцевым скроллбаром и платиново-серыми и синими цветами. Новые детали интерфейса стали выглядеть еще более натуралистичными и объемными, с 3D доком и большим количеством анимации и интерактивностью.

image

GNOME 2.24 (2008)

GNOME приложили немалые усилия для создания тем и обоев в версии 2.2.4 в соответствии своей цели «Заставить ваш компьютер выглядеть хорошо». Был устроен конкурс для собрания самых увлекательных изображений для использования в качестве фона рабочего стола, которые они включили в версию 2.24.

image

KDE (v4.0 — январь 2008, v4.2 — март 2009)

4 версия KDE показала множество новых улучшений среды и интерфейса, таких как анимация, сглаживание, эффективная система управления окнами и поддержка виджетов рабочего стола. Иконки рабочего стола легко меняются и каждый элемент дизайна с легкостью конфигурируется. Наиболее заметные изменения произошли с иконками, темами и звуками, которые были предоставлены командой Oxygen Project. Эти иконки стали наиболее фотореалистичны. И наверное самое великое улучшение за всю историю KDE, то что сейчас среда может свободно запуститься и на Windows, и на Mac OS X платформах.

image

от себя:
Windows 7 (предположительно конец 2009 года)
Операционная система семейства Windows, сейчас в стадии бета-тестирования. Из появившихся изменений стоит отметить поддержку мультитач дисплеев и появления нового таскбара. Подробнее например у турбомилк.

image

Особенно интересным мне показались скриншоты 10-ти летней и более давности, сравнивая как много изменилось за такой относительно малый промежуток времени.

Что такое операционная система и зачем она нужна?

Добро пожаловать в наше увлекательное путешествие в мир операционных систем. В этом уроке мы глубже погрузимся в суть понятия «операционная система» и рассмотрим, почему она является неотъемлемой частью каждого компьютера, ноутбука или смартфона.

Данный урок взят из моего канала в телеграмме, которой я веду в своё свободное время. Цель моего канала провести вас за ручку от начала и до конца, пути изучения программирования и основ Computer Science.

Что такое операционная система?

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

Давайте разберём её основные задачи и функции.

  • Загрузка программ в оперативную память и их выполнение.
  • Управление аппаратными компонентами, такие как: процессор, память, устройства ввода-вывода.
  • Предоставление интерфейса для работы с файловой системы, проще говоря, файлами, папками, с которыми мы привыкли работать.
  • Операционная система контролирует доступ к ресурсам и данным, предотвращая несанкционированный доступ программ к защищенным данным или данным других программ, то есть обеспечение безопасности.

На данный момент у вас должно сложиться примерное понимание, что такое ОС и для чего она нужна, сейчас можно рассмотреть её процесс загрузки, после BIOS или UEFI.

Процесс загрузки ОС

Определение загрузочного устройства: после прохождения POST BIOS определяет, с какого устройства будет производиться загрузка. В зависимости от настроек BIOS это может быть жесткий диск, твердотельный накопитель, USB-память, оптический диск или сетевое устройство.

Поиск загрузчика: загрузчик обычно находится в особом секторе первого физического диска (или другого загрузочного устройства).

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

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

Загрузка в оперативную память (RAM): после получения необходимой информации загрузчик загружает содержимое файла ядра в оперативную память (RAM). Обычно это происходит в выделенную область памяти, из которой ядро сможет начать свое выполнение.

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

Вот мы загрузили наше ядро, но что оно из себя представляет?

Ядро операционной системы — это своего рода «мозг», который управляет ресурсами компьютера и обеспечение взаимодействия между аппаратным и программным обеспечением.

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

Существует разные подходы к разработке ядра ОС, вот самые часто встречающие:

Монолитное ядро:

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

Микроядерная архитектура:

  • Легкая модификация и расширение: благодаря модульной структуре микроядра, добавление новых функций и поддержки нового оборудования более гибко.
  • Изоляция ошибок: Проблемы в одном компоненте могут быть изолированы и не влиять на другие части системы.
  • Производительность: из-за необходимости межпроцессного взаимодействия (inter-process communication) могут возникнуть накладные расходы.

Гибридное ядро:

  • Гибкость: Комбинация монолитных и микроядерных принципов позволяет балансировать производительность и гибкость.
  • Модульность: Возможность выносить некоторые функции за пределы ядра обеспечивает лучшую модульность системы.
  • Сложность проектирования: требует более сложного проектирования и реализации по сравнению с чистым монолитным или микроядерным подходом.
  • Возможные накладные расходы: В зависимости от конкретной реализации, некоторые накладные расходы на межпроцессной коммуникации могут оставаться.

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

Многозадачность ОС

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

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

Вместо того, чтобы ждать, пока одна задача завершится, мы разрешили компьютеру выполнять несколько задач одновременно. Таким образом, если у вас открыты веб-браузер, текстовый редактор и музыкальный плеер, ваш компьютер обрабатывает все эти задачи «параллельно», почему в скобочках? Потому что, они могут выполнять псевдо параллельно, то есть, если у вас одноядерный процессор, то даже теоретически не может выполняться одновременно 2 программы, в дальнейшем это объяснится подробнее.

Как это работает?

Разделение времени: ОС выделяет маленькие отрезки времени каждой программе, позволяя им поочередно выполняться. Этот отрезок времени называется квант времени.

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

Интервальное переключение: когда ваш компьютер многозадачит, он быстро переключается между задачами, создавая иллюзию одновременного выполнения или если ваш процессор многоядерный, то они действительно могут выполняться параллельно. Например, если вы пишете текст в редакторе, планировщик может быстро переключиться на музыкальный плеер, чтобы он продолжил воспроизведение, а затем вернуться к редактору.

Перед тем как перейти к его разбору, следует сначала узнать, что такое процесс.

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

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

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

Поток – наименьшая единица выполнения внутри процесса. Он представляет собой отдельную сущность, у которой есть свои собственные данные. Все потоки работают в одном общем адресном пространстве процесса. И по этой причине появляется проблема синхронизации данных между потоками, но это уже совсем другая история. Один процесс содержит минимум один поток. Потоки в процессе выполняются параллельно. Во время создания процесса, происходит создание главного потока (main thread), он является прародителем всех остальных потоков, которые будут созданы им с помощью системных вызовов (в дальнейшем тоже рассмотрим, что это). У каждого потока есть его собственный контекст выполнения.

Контекст выполнения потока (Thread Control Block, TCB).

Идентификатор (Thread ID, TID): уникальный идентификатор, с помощью которого можно различать потоки.

Стек (Stack): стек используется для хранения локальных данных и других временных данных. Размер стека всегда ограничен ОС, как правило он не превышает более 2 МБ, но это ограничение можно обойти, попросив ОС сделать его больше. Данные в стеке расположен последовательно в памяти, один за другим. Обычно он расширяется от большего адреса к меньшему, то есть от какого-то начала к началу адресного пространства, если провести аналогию со стеком, то можно представить, что ёмкость для тарелок — это стек. Начало стека — это будет дно этой ёмкости, а верхушка стека — это самая верхняя тарелка, которая в ней лежит. Достать данные из стека возможно только из его верхушки, то есть самого последнего элемента, который в него попал.

Стек работает по принципу Last In, First Out (LIFO), что означает, что последний элемент, добавленный в стек, будет первым, который извлекается, как уже было до этого сказано.

Состояние регистров (Register contents): здесь содержится информация о текущем состояние регистров для данного потока.

Счётчик программ (Program counter): адрес следующей команды, которую должен выполнить процессор, в контексте данного потока.

Адрес на PCB: адрес на блок памяти, в котором хранится вся информация родительском процессе.

Всю информацию о процессе содержится PCB (Process Control Block) блоке, он уникален для каждого процесса.

Давайте рассмотрим, что в нём содержится:

1) Идентификатор (Process Id, PID): у каждого процесса существует свой идентификатор (PID), который присваивается ОС, чтобы в будущем она могла к ним обращаться и различать.

2) Текущее состояние: процесс хранит информацию о состоянии, в котором он находится на данный момент.

Разберём самые основные.

Новый (New): процесс создан, но ещё не был принят операционной системой для выполнения.

Готов к выполнению (Ready): процесс находится в ожидании своей очереди на выполнение. Все необходимые ресурсы доступны, и процесс готов начать выполнение, как только операционная система его выберет.

В выполнении (Running): процесс активно выполняется на процессоре.

В ожидании (Waiting или Blocked): процесс ожидает какого-то события, например, завершения операции ввода-вывода.

Завершенный (Terminated): процесс завершил свое выполнение. Это может произойти по окончании выполнения программы или в результате принудительного завершения операционной системой.

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

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

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

Давайте рассмотрим основные секции процесса:

Текстовая секция (Code Section): эта секция содержит исполняемый код программы, инструкции. Текстовая секция обычно доступна только для чтения, чтобы предотвратить случайные изменения программного кода, что может привести к сбоям.

Секция данных (Data Section): в этой секции хранятся глобальные и статические данные, которые не изменяются во время выполнения программы. Она дополнительно делится на 2 сегмента:

  • Инициализированные данные (Initialized data segment), у которых явно задано значение перед запуском программы.
  • Неинициализированные данные (Uninitialized data segment или BSS — Block Started by Symbol), которые не имеют изначально установленного значение, по умолчанию им присвоено значение 0.

Куча (Heap): Куча представляет собой динамическую область памяти, используемую для выделения динамических данных во время выполнения программы. Процесс может запросить дополнительную память из кучи при необходимости с помощью системного вызова (в дальнейшем рассмотрим, что это), который даст вам адрес памяти, но при этом если эта память процессу не нужна в дальнейшим, то ему следует её освободить (вернуть обратно ОС), если память не очистится, и программа потеряет адрес этого участка памяти, то произойдёт утечка памяти.

Утечка памяти (memory leak) — это ситуация, когда программа не освобождает занимаемую ею динамическую память после того, как она становится ненужной. Но не бойтесь, ОС очистит за вас всю динамическую память, которую вы выделил и забыли вернуть, но это произойдёт только когда процесс полностью завершится, то есть во время выполнения процесса на процесс накладывается обязанность на очищение динамической памяти, которую он запросил.

В отличии от стека, в куче хранятся обычно долгосрочные или данные больших размеров и память, которую вы выделили, нужно вручную возвращать ОС. Данные в куче располагаются не последовательно как в стеке, они могут быть разбросаны в куче по разным местам.

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

Планировщик задач

Планировщик задач (job scheduler) — компонент ответственный за управление исполнением потоков и распределение ресурсов между ними. Его основной задачей является переключение потоков и эффективное управление временем процессора.

Вот основные аспекты, связанные с планировщиком задач:

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

Вот так примерно, как всё это выглядит

Политики планирования: она определяет то, в каком порядке будут выполняться потоки. Вот некоторые примеры:

  • First-Come, First-Served (FCFS): потоки выполняются в порядке поступления.
  • Shortest Job Next (SJN): выполняется потоки с наименьшим временем выполнения следующим.
  • Round Robin (RR): Каждому потоки предоставляется фиксированный промежуток времени.
  • Приоритетное планирование: потоки выполняются в порядке убывания приоритета, где каждому потоку/процессу присваивается свой приоритет.

Прерывания и блокировки:

Прерывания: это механизм, который позволяет внешним устройствам или программам «прерывать» выполнение текущей задачи процессором для обработки какого-то события.

Существуют два основных типа прерываний.

  • Программные прерывания: инициируются программой или операционной системой для передачи управления другой программе или обработчику.
  • Аппаратные прерывания: связаны с аппаратными событиями, такими как сигналы от внешних устройств. Например, нажатие кнопки клавиатуры, клик мыши, подключение нового устройства.

Блокировка: Поток может быть приостановлен, до тех пор, пока не произойдёт какое-либо определенное событие, такое как ввод-вывод и т.д. Такой подход позволяет более эффективно управлять ресурсами ЦП, когда поток заблокирован, планировщик не будет ему выделять время, пока не произойдёт какое-либо событие или его разблокировка.

Подходы к многозадачности:

Существует два основных типа многозадачности: последовательная и параллельная.

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

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

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

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

Процесс переключение между потоками называется переключение контекста потока.

Переключение контекста потока — это процесс сохранения текущего состояния потока (его контекста) и загрузки состояния другого потока внутри того же процесса

В чём их различие?

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

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

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

Уровни привилегий

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

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

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

Пользовательский режим (User Mode): Программы, выполняющиеся в пользовательском режиме, работают в ограниченном окружении и имеют ограниченные привилегии. В этом режиме программы имеют доступ только к своим собственным данным и ограниченный набор системных возможностей. Обычно, если программа хочет выполнить какую-то привилегированную операцию (например, обращение к аппаратному обеспечению), ей совершить системный вызов.

Режим ядра (Kernel Mode): Режим ядра предоставляет программам полные привилегии и неограниченный доступ ко всем ресурсам системы. Он используется для выполнения ядра операционной системы, которое управляет системными ресурсами, обеспечивает безопасность и обеспечивает выполнение привилегированных операций. Программы, выполняющиеся в режиме ядра, могут выполнять специфические инструкции и имеют полный доступ к аппаратному обеспечению.

Системные вызовы

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

В этом случае программе нужен способ запросить операционную систему о выполнении привилегированных действий. Здесь на помощь приходят системные вызовы.

Системные вызовы (system call) представляют собой интерфейс между пользовательским приложением и ядром операционной системы. Ядро операционной системы предоставляет набор функций, которые программы могут вызывать для выполнения определенных операций, таких как ввод-вывод, создание процессов, управление файлами и т. д.

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

Драйвера

Драйверы – это такая программа, которая обеспечивают связь между операционной системой и аппаратным обеспечением компьютера. Они реализуют удобный интерфейс для правильного использования устройства, служат посредниками между операционной системой и конкретными устройствами, такими как принтеры, клавиатура, мышь, видеокарты, звуковые карты, и другие периферийные устройства.
В ранних операционных системах, драйверы отсутствовали или были встроены в само ядро операционной системы. Эти системы были простыми, и их возможности взаимодействия с аппаратным обеспечением были ограниченными.

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

Виртуальная память

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

Виртуальная память — это технология, предоставляющая программам впечатление о том, что у них есть более доступной оперативной памяти, чем фактически установлено в компьютере. Это достигается за счет комбинирование всей памяти (оперативной памяти и памяти диска), которая доступна, в одно целое. И как раз этот механизм позволяет изолировать процессы друг от друга, представляя им своё собственное адресное пространство, виртуальная память использует механизм адресации. Каждый процесс имеет свою собственную виртуальную адресную область, которая не зависит от физического адресного пространства. Это позволяет программам работать, не зная, где физически расположены их данные в памяти.

Есть несколько методов реализации виртуальной памяти, и их выбор зависит от конкретной архитектуры и требований операционной системы. Вот несколько основных видов реализации виртуальной памяти:

Страничной метод организации:

Одним из наиболее распространенных методов реализации виртуальной памяти является использование страниц. Физическая память и виртуальная память разбиваются на фиксированные блоки, называемые страницами. Размер страницы обычно составляет от нескольких килобайт до нескольких мегабайт, обычно он составляет 4КБ. Фишка этого метода заключается в возможности выгрузки не нужных страниц во вторичную память, а при их надобности снова вернуть обратно.

Для отслеживания соответствия виртуальных страниц физическим страницам используется таблица страниц. Эта таблица содержит записи для каждой виртуальной страницы, указывающие на соответствующую физическую страницу. Физическая страница в этой модели называется, фрейм (Frame). Для каждого процесса в ОС создаётся своя собственная таблица страниц.

Вот из что содержит таблица страниц.

Номер физической страницы (Frame Number): Этот номер указывает на конкретный фрейм, куда отображается соответствующая виртуальная страница. Каждая запись в таблице страниц обычно содержит этот номер.

Информация управления: содержит информацию о разрешения на чтение/запись, доступ, привилегии и другие. Они используются для контроля доступа к данным и управления процессами.

Информация о валидности: содержит информацию, действительна ли запись в таблице. Если страница валидна, то запись считается действительной, и виртуальный адрес может быть преобразован в физический. В противном случае, возникает промах страницы (page fault), и операционная система должна загрузить нужную страницу из вторичной памяти.

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

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

Два этих процесса вышеперечисленных называют свопинг(swapping), процесс перемещения страниц из оперативной памяти во вторичную и обратно.

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

Давайте рассмотрим, как выглядит структура виртуального адреса в страничной модели.

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

Номер страницы (Page Number): эта часть адреса указывает на конкретную страницу в виртуальной памяти, к которой обращается программа. Номер страницы используется для индексации в таблице страниц, где хранится информация о соответствии виртуальных страниц физическим.

Смещение внутри страницы (Offset): это значение указывает на конкретный байт внутри выбранной страницы. Смещение представляет собой смещение от начала страницы и используется для того, чтобы определить, на каком именно месте в странице расположены нужные данные.

Предположим, у нас есть виртуальная память с размером страницы 4 КБ (4096 байт), и виртуальный адрес равен 0x2002, переведём в десятичную форму, для удобства, будет 8194. Разбиваем этот адрес на номер страницы и смещение:

Номер страницы = 8194 / 4096=2 (с округлением)

Смещение внутри страницы = 8194mod4096=2

Таким образом, виртуальный адрес 8194 разбивается на номер страницы 2 и смещение внутри страницы 2. Это указывает на то, что данные находятся во второй странице виртуальной памяти, начиная с адреса 2 внутри этой страницы.

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

Страница является наименьшей единицей выделения памяти для процесса. Когда программа запрашивает блок виртуальной памяти, ей выделяется целая страница, даже если она не будет использовать всю эту память. Если размер запрошенной памяти не является точным кратным размеру страницы, то часть последней страницы может быть не использована, что приводит к проблеме, которая называется внутренней фрагментации. Например, если размер страницы составляет 4 КБ, а программа запрашивает 10 КБ памяти, ей будет выделено 3 страницы (12 КБ), и 2 КБ останутся неиспользованными, создавая проблему внутренней фрагментации.

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

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

Сегментный метод организации:

Сегментная модель памяти – это способ организации виртуальной памяти, в которой адресное пространство делится на несколько логических блоков, называемых сегментами. Каждый сегмент имеет свой собственный размер и базовый адрес в физической памяти. Эта модель была широко использована в ранних компьютерных системах и операционных системах, таких как Intel 8086/8088, и была частично сохранена в более поздних архитектурах x86.

Основные компоненты сегментной модели памяти.

Сегментные регистры: В архитектуре x86, например, существуют сегментные регистры, такие как CS (Code Segment), DS (Data Segment), SS (Stack Segment), и ES (Extra Segment). Каждый из этих регистров хранит базовый адрес соответствующего сегмента.

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

Виртуальный адрес: виртуальный адрес в сегментной модели представляется парой: номер сегмента и смещение внутри сегмента. Таким образом, весь виртуальный адрес формируется путем объединения номера сегмента и смещения.

Права доступа: для каждого сегмента формируется свои права доступа, такие как чтение, запись или выполнение

Эти две модели организации памяти очень похожи, но в чём же их отличие?

Блоки:

  • Страничная модель: виртуальное адресное пространство разбивается на фиксированные блоки одинакового размера.
  • Сегментная модель: виртуальное адресное пространство делится на логически связанные сегменты произвольных размеров.

Фрагментация:

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

Права доступа:

  • Страничная модель: позволяет применять права доступа (например, чтение, запись, выполнение) на уровне страницы.
  • Сегментная модель: позволяет применять права доступа на уровне сегментов, что может быть более удобным для организации доступа к разным частям программы или данных.

В современных операционных системах (ОС) широко используется комбинированный подход, странично-сегментный подход в организации виртуальной памяти. Этот метод стал популярным из-за ряда преимуществ, которые он предоставляет.

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

Мы всё говорим о виртуальной памяти, но не заикнулись про компонент, который является связывающим звеном между виртуальной памятью и физической и это Memory Management Unit.

Memory Management Unit (MMU) — это аппаратный компонент, связывающее звено между процессором и оперативной памятью, обычно он встроен в сам процессор, его основная задача — преобразование виртуальных адресов, используемых программами, в физические адреса, связанные с конкретными ячейками оперативной памяти. Операционная система загружает базовый адрес созданной таблицы страниц в регистр MMU. Этот базовый адрес используется MMU для поиска нужной записи в таблице страниц. Если данный компонент выключен, то виртуальный адрес просто приравнивается к физическому, если включен, то производится трансляция. Поскольку таблица страниц может быть большой, поиск соответствия может занимать время. Вместо того, чтобы каждый раз обращаться к таблице страниц, MMU использует буфер, который содержит небольшое количество записей с последними или наиболее часто используемыми соответствиями виртуальных и физических адресов.

Translation Lookaside Buffer (TLB), представляет собой кэш внутри MMU (Memory Management Unit), который используется для ускорения процесса преобразования виртуальных адресов в физические.

Вот так выглядит процесс взаимодействия MMU и TLB

  1. Поиск в TLB: MMU проверяет TLB для определения, есть ли соответствующая запись виртуального и физического адресов. Если такая запись найдена, MMU может использовать физический адрес из TLB без необходимости обращения к полной таблице страниц.
  2. Отсутствие соответствия в TLB: если запись не найдена в TLB, MMU обращается к таблице страниц и, возможно, обновляет TLB с новой записью для будущего использования.
  3. Замена записей в TLB: поскольку TLB имеет ограниченный размер, при появлении новых записей старые могут быть вытеснены.

Вот мы и разобрали основное устройство памяти в ОС. Ещё одну тему, которую я хочу для вас освятить, это как ОС организует пользовательские данные.

Организация пользовательских данных

ОС предоставляет пользователю средства для хранения и организации информации. Основной метод организации данных — использование файлов и файловых систем.

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

Из чего он состоит?

Имя файла (File Name): имя файла — это уникальная метка, по которой файл идентифицируется в файловой системе (дальше рассмотрим, что это). Оно служит для обозначения файла и его различения от других файлов. Имя файла может содержать буквы, цифры и определенные специальные символы в зависимости от правил файловой системы.

Расширение файла (File Extension): расширение файла добавляется к имени файла и представляет тип содержимого файла. Это помогает операционной системе и программам определить, как следует обработать файл. Например, в файле «image.jpg» расширение — «jpg», указывающее, что это файл с изображением в формате JPEG. Расширение файла не гарантирует то, что этот файл именно такого типа, мы можем взять файл audio.mp4 и вручную поменять его расширение в audio.txt.

Размер файла (File Size): размер файла указывает на объем занимаемого им пространства на носителе данных.

Права доступа (File Permissions): права доступа определяют, какие операции пользователи и группы пользователей могут выполнять с файлом. Обычно это права на чтение, запись и выполнение файла.

Время создания, изменения и доступа (File Timestamps): эти временные метки отражают моменты в истории файла. Время создания указывает, когда файл был создан, время изменения — когда последний раз менялось содержимое файла, и время доступа — когда файл был последний раз открывался.

Содержимое файла: фактическое содержимое файла, будь то текст, изображения, исполняемый код или что-то еще.

Файловая система

Файловая система (File System) — это механизм, обеспечивающий организацию и хранение файлов на носителях данных, таких как жесткие диски, SSD-накопители, флеш-диски и др. Она управляет созданием, удалением, чтением и записью файлов, а также предоставляет структуру для организации файлов.

Вот некоторые основные концепции и компоненты файловых систем.

Каталоги (папки): каталоги используются для организации файлов в иерархическую структуру. Они позволяют группировать файлы по определенным критериям, делая управление файлами более структурированным и понятным для нашего восприятия. Каталог тоже может являться файлом, который будет содержать внутри себя другие файлы.

Путевые имена: каждый файл в файловой системе имеет уникальный путь, который указывает на его местоположение в иерархии каталогов. Путь состоит из имен каталогов, разделенных специальным символом.

Разделы и тома: файловая система обычно организуется на уровне разделов или томов. Разделы и тома — это области физического устройства, выделенные для хранения файловой системы.

Форматирование: процесс создания файловой системы на устройстве называется форматированием. В этот момент определяются правила хранения информации, структура каталогов и т. д.

Файловые операции: файловая система предоставляет интерфейс для различных операций с файлами, таких как чтение, запись, удаление, переименование и т. д.

Пример изображение иерархической структуру расположения файлов

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

Ниже представлен обзор нескольких самых популярных файловых систем:

FAT32(File Allocation Table 32):

Ограничения по размеру файла и раздела:

  • Максимальный размер файла: 4 ГБ.
  • Максимальный размер раздела: 2 ТБ.

Поддержка ОС: FAT32 поддерживается практически всеми операционными системами, включая Windows, macOS, Linux и другие.

Преимущества:

  • Простота и совместимость: FAT32 поддерживается множеством устройств и операционных систем.

Недостатки:

  • Ограничение по размеру файла: 4 ГБ может быть недостаточным для современных файлов, таких как видео HD, долгие звуковые файлы и др.
  • Не обеспечивает надежности и безопасности данных, так как не поддерживает механизмы, такие как журналирование.

NTFS(New Technology File System):

Ограничения по размеру файла и раздела:

  • Максимальный размер файла: 16 ЭБ (экзабайт).
  • Максимальный размер раздела: 256 ТБ.

Поддержка ОС: NTFS является стандартной файловой системой для операционных систем Windows, начиная с Windows NT и включая более новые версии.

Преимущества:

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

Недостатки:

  • Ограниченная поддержка на некоторых не-Windows системах.

EXT4(Fourth Extended File System):

Ограничения по размеру файла и раздела:

  • Максимальный размер файла: 16 ТБ.
  • Максимальный размер файловой системы: 1 экзабайт.

Поддержка ОС: Ext4 является стандартной файловой системой для многих дистрибутивов Linux.

Преимущества:

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

Недостатки:

  • Не всегда совместим с другими операционными системами. Требуется дополнительное программное обеспечение для доступа с Windows.
  • В отличие от NTFS, не поддерживает встроенные механизмы шифрования.

Управление ресурсами

Когда вы используете компьютер, ОС играет роль своего рода «хозяина», управляя ресурсами компьютера. Ресурсы могут включать в себя файлы, память, устройства ввода/вывода, и многое другое. Когда программы работают на компьютере, им нужны способы общения с этими ресурсами. Вот где в игру вступает система управления ресурсами в ОС.

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

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

Вся информация о дескрипторах содержится в таблице дескрипторов.

Таблица дескрипторов — это таблица, которая ОС использует для отслеживания всех дескрипторов, которые программы создали. Когда программа запросит у ОС новый ресурс (например, открытие файла), ОС предоставит программе дескриптор для доступа к этому ресурсу. Затем ОС записывает этот дескриптор в таблицу дескрипторов.

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

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

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

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

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

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

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

  • операционные системы
  • виртуальная память
  • планировщик задач
  • ядро
  • windows
  • linux
  • файловая система
  • процесс
  • поток
  • управление ресурсами

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *