10. Обслуживание компьютера
С этой целью современные ОС содержат в своем составе служебные приложения:
11. Дополнительные функции
12. Идентификация всех программ и данных.
13.Прием и исполнение различных запросов от выполняющихся приложений. Операционная система умеет выполнять очень большое количество системных функций (сервисов), которые могут быть запрошены из выполняющейся программы. Обращение к этим сервисам осуществляется по соответствующим правилам, которые и определяют интерфейс прикладного программирования (ApplicationProgramInterface, API) этой операционной системы.
14. Обслуживание всех операций ввода-вывода.
15.Обеспечение работы систем управлений файлами (СУФ) и/или систем управления базами данных (СУБД), что позволяет резко увеличить эффективность всего программного обеспечения.
16. Обеспечение взаимодействия связанных между собой компьютеров (Для сетевых операционных систем).
17.Аутентификация и авторизация пользователей (для большинства диалоговых операционных систем). Под аутентификациейпонимается процедура проверки имени пользователя и его пароля на соответствие тем значениям, которые хранятся в его учетной записи. Очевидно, что если входное имя (login) пользователя и его пароль совпадают, то, скорее всего, это и будет тот самый пользователь. Термин авторизация означает, что в соответствии с учетной записью пользователя, который прошел аутентификацию, ему (и всем запросам, которые будут идти к операционной системе от его имени) назначаются определенные права (привилегии), определяющие, что он может, а что не может делать на компьютере.
18. Предоставление услуг на случай частичного сбоя системы.
Тема 3. Архитектурные особенности компьютера
На макроуровне компьютер состоит из процессора, памяти и устройств ввода-вывода; при этом каждый компонент представлен одним или несколькими модулями. Чтобы компьютер мог выполнят свое основное предназначение, состоящее в выполнении программ, различные компоненты должны иметь возможность функционировать между собой.
Итак, выделим 4 структурные компоненты компьютера:
1. Процессор. Осуществляет контроль за действиями компьютера и обрабатывает данные. Если в системе есть только один процессор, он называется центральным процессором (CentralProcessingUnit - CPU).
2. Память. Разные виды памяти имеют различное назначение.
3. Устройства ввода-вывода. Служат для передачи данных между компьютером и внешним окружением, состоящим из различных периферийных устройств, в число которых входит вторичная память, коммуникационное оборудование и терминалы.
4. Системная шина. Определенные структуры и механизмы, обеспечивающие взаимодействие между процессором, оперативной памятью и устройствами ввода-вывода.
Рис. 3. Макроструктура компьютера
Процессор
Он выбирает из памяти команды и выполняет их. Обычный цикл работы центрального процессора выглядит так: он читает первую команду из памяти, декодирует ее для определения ее типа и операндов, выполняет команду, затем считывает, декодирует и выполняет последующие команды. Таким образом осуществляется выполнение программ.
Для каждого центрального процессора существует набор команд, который он в состоянии выполнить. Например, процессор Pentium не может обработать программы, написанные для SPARC, а процессор SPARC не может выполнить программы, написанные для Pentium.
Доступ к памяти для получения команд или наборов данных занимает намного больше времени, чем выполнение этих команд. Поэтому все центральные процессоры содержат внутренние регистры для хранения ключевых переменных и временных результатов.
Регистр – область памяти быстрого доступа, но намного меньшей емкости, чем основная память.
Регистры выполняют 2 основные функции:
1. Регистры, доступные пользователю. Позволяют программисту хранить в них некоторые данные, чтобы сократить число обращений к основной памяти.
2. Регистры управления и регистры состояния. Используются в процессоре для контроля над выполняемыми операциями. С их помощью привилегированные программы ОС могут контролировать ход выполнения других программ.
Регистры, доступные пользователю
К ним пользователь может обращаться с помощью машинного языка. Обычно к ним имеют доступ все программы – и приложения, и системные.
1. Регистры данных. Программист может применять их в различных целях. В ряде случаев они имеют общее назначение и могут использоваться любой машинной командой для операций с данными. Однако зачастую при этом накладываются определенные ограничения. Например, некоторые регистры предназначены для операций с числами с десятичной точкой, в то время как остальные – для хранения целых чисел.
2. Адресные регистры – в них заносятся адреса команд и данных в основной памяти.
3. SP (stack pointer) – указатель стека. Он содержит адрес вершины стека в памяти. Стек размещается в основной памяти в виде последовательности ячеек. Он похож на стопку бумаг, в которой листы с данными можно брать и класть только сверху. Верхний элемент стека, которому только и возможен доступ, называется вершиной.
Регистры управления и регистры состояния
В большинстве машин эти регистры в основном не доступны пользователю. Некоторые из них могут быть доступны для машинных команд, исполняемых в так называемом режиме операционной системы (режиме ядра).
PC (programcounter) –счетчик программ, содержит адрес следующей команды, которая стоит в очереди на выполнение.
MAR (memoryaddressregister) – регистр адреса памяти, сюда заносится адрес ячейки памяти, в которой будет производиться операция чтения-записи;
MBR(memorybufferregister) – регистр буфера памяти, сюда заносятся данные, предназначенные для записи в память, или те, которые были прочитаны из нее.
I/OAR (input/outputaddressregister) - регистр адреса ввода-вывода, здесь задается номер устройства ввода-вывода.
I/OBR(input/outputbufferregister) – регистр буфера ввода-вывода, служит для обмена данными между устройствами ввода-вывода и процессором.
PC (programcounter) –счетчик программ, содержит адрес команды, которая должна быть выбрана из памяти.
IR (instructionregister)– регистр команд, содержит последнюю выбранную из памяти команду.
PSW (programstatusword) – регистр слова состояния программы. Отражает состояние АЛУ в составе процессора при выполнении программ.
Операционная система должна знать все обо всех регистрах. При временном мультиплексировании (выполнение нескольких задач) центрального процессора операционная система часто останавливает работающую программу для запуска (или перезапуска) другой. Каждый раз при таком прерывании операционная система должна сохранять все регистры процессора, чтобы позже, когда программа продолжит свою работу, их можно было восстановить.
Как уже упоминалось, большинство центральных процессоров, за исключением самых простых, используемых во встраиваемых системах, имеют два режима работы: режим ядра и пользовательский режим (режим пользователя). Обычно режимом управляет специальный бит в регистре PSW. При работе в режиме ядра процессор может выполнять любые команды из своего набора и использовать любые возможности аппаратуры. Операционная система работает в режиме ядра, что дает ей доступ ко всему оборудованию.
Для получения услуг от операционной системы пользовательская программа должна осуществить системный вызов, который перехватывается внутри ядра и вызывает операционную систему. Инструкция перехвата осуществляет переключение из пользовательского режима в режим ядра и запускает операционную систему. Когда обработка вызова будет завершена, управление возвращается пользовательской программе, и выполняется команда, которая следует за системным вызовом. Подробности механизма системного вызова будут рассмотрены в этой главе чуть позже, а сейчас его следует считать специальной разновидностью инструкции вызова процедуры, у которой есть дополнительное свойство переключения из пользовательского режима в режим ядра.
Многопоточные и многоядерные микропроцессоры
Закон Мура гласит, что количество транзисторов на одном кристалле удваивается каждые 18 месяцев. Этот «закон», в отличие от закона сохранения импульса, не имеет никакого отношения к физике, он появился в результате наблюдений одного из соучредителей корпорации Intel Гордона Мура (Gordon Moore) за темпами, с которыми шло уменьшение размеров транзисторов. Закон Мура соблюдался в течение трех десятилетий, и, как ожидается, будет соблюдаться как минимум еще одно десятилетие.
Высокая плотность размещения транзисторов ведет к проблеме: как распорядиться их возросшим количеством? Ранее мы уже ознакомились с одним из подходов к ее решению — использованием архитектуры, имеющей множество функциональных блоков. Но с ростом числа транзисторов открываются более широкие возможности. Одно из очевидных решений — размещение на кристалле центрального процессора более объемной кэш-памяти — уже воплощено в жизнь. Однако это порог, за которым дальнейшее увеличение объема кэш-памяти только уменьшает отдачу от этого решения.
Следующим очевидным шагом является дублирование не только функциональных блоков, но и части управляющей логики. Такие свойства, присущие процессору Pentium 4 и некоторым другим микропроцессорам, называются многопоточностью, или гиперпоточностью (hyperthreading по версии Intel). В первом приближении эта технология позволяет процессору сохранять состояние двух различных потоков и осуществлять переключения между ними за наносекунды. (Поток является разновидностью выполняющейся программы) Например, если одному из процессов нужно прочитать слово из памяти (что занимает несколько тактов), многопоточный процессор может переключиться на другой поток. Многопоточность не предлагает настоящей параллельной обработки данных. Одновременно работает только один процесс, но время переключения между процессами сведено до наносекунд.