assembler
Особенности программирования под управлением мультизадачных операционных систем
Практически все современные операционные системы позволяют запускать несколько программ на одновременное исполнение. Такой режим работы вычислительной системы, называемый мультизадачным, порождает некоторые проблемы, требующие решения со стороны аппаратуры (прежде всего - центрального процессора).
Во-первых, необходимо защитить выполняемые программы друг от друга и саму операционну систему от пользвательских программ. Если (пусть даже не по злому умыслу, а по ошибке) одна из выполняемых задач изменит что-то в памяти, принадлежащей другой задаче, скорее всего это приведёт к аварии этой второй задачи, причём найти причину такой аварии окажется принципиально невозможно. Если пользовательская задача (опять-таки по ошибке) внесёт изменения в память операционной системы, это приведёт уже к аварии всей системы, причём, опять-таки, без малейшей возможности разобраться в причинах таковой. Поэтому центральный процессор должен поддерживать механизм защиты памяти: каждой выполняющейся задаче выделяется определённая область памяти, и к ячейкам за пределами такой области задача обращаться не может.
Во-вторых, в мультизадачном режиме пользовательские задачи, как правило не допускаются к прямой работе с внешними устройствами. Если бы это правило не выполнялось, задачи постоянно начинали бы конфликтовать за доступ к устройствам, и такие конфликты, разумеется, приводили бы к авариям. Чтобы ограничить возможности пользовательской задачи, создатели центрального процессора объявили часть имеющихся машинных инструкций привилегированными. Процессор может работать либо в привилегированном режиме, также называемом режимом суперпользователя, либо в ограниченном режиме, который также называется режимом задачи или пользовательским режимом. В ограниченном режиме привилегированные команды недоступны. В привилегированном режиме процессор может выполнять все имеющиеся инструкции, как обычные, так и привилегированные. Операционная система выполняется, естественно, в привилегированном режиме, а при передаче управления пользовательской задаче переключает режим в ограниченный. Вернуться в привилегированный режим процессор может только при условии одновременной передачи управления назад операциооной системе, так что код пользовательской программы выполняться в привилегированном режиме не может. К категории привилегированных относятся инструкции, осуществляющие взаимодействие с внешними устройствами; также в эту категорию попадают инструкции, испоьзуемые для настройи механизмов защиты памяти и некоторые другие команды, влияющие на работу всей системы в целом. Все такие глобальные действия являются прерогативой операционной системы. При работе под управлением многозадачной операционной системы пользовательская задача может лишь преобразовывать информацию в отведённой ей области оперативной памяти. Всё взаимодействие с внешним миром задача производит через обращения к операционной системе. Даже просто вывести на экран строку задача самостоятельно не может, ей нужно попрасить об этом операционную систему. Такое обращение пользовательской задачи к операционной системе за теми или иными услугами называется системным вызовом. Интересно, что завершение задачи тоже может выполнить только операционная система. Таким образом, корректная пользовательская задача обойтись без системных вызовов не может никак, ведь даже просто завершиться она может только с помощью соответствующего системного вызова.
Ещё один важный момент, который необходимо упомянуть перед началом изучения конкретного процессора - это наличие в нашей операционной среде механизма виртуальной памяти.
Комментарии
Пока комментариев нет.