Однопроцессорные системы

Однопроцессорные машины 40-50-х годов XX века не были ни гибкими, ни эффективными. Выполнение программ требовало трудоемких приготовлений: установление лент, помещение перфокарт в устройство для считывания, настройка переключателей и т. д. Выполнение каждой программы, которая называлась заданием, рассматривалось как отдельное действие. В случае, когда машина требовалась нескольким пользователям, были предусмотрены специальные карты входа, так что пользователь мог бронировать машину на какое-то определенное время. В течение времени, назначенного пользователю, машина была полностью под его контролем. Сеанс работы обычно начинался с установки программы, затем следовал короткий период ее исполнения. Часто выполнение программы происходило в попытке успеть сделать что-нибудь еще («Это займет только минуту»), пока следующий пользователь нетерпеливо начинал установку своей программы.

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

В системах с пакетной обработкой задания, помещенные в запоминающее устройство, ждали выполнения в очереди заданий (job queue) (рис. 3.1). Очередь — это способ организации хранения данных, при котором объекты (в нашем случае задания) упорядочены по принципу FIFO (first-in, first-out — первым вошел — первым обслужен). То есть объекты выбираются из очереди в том же порядке, в котором они помещаются в нее. В действительности большинство очередей заданий не строго следуют структуре FIFO, так как в большинстве операционных систем предусмотрены приоритеты заданий. В результате выполнение задания может быть отложено из-за другого задания, которое имеет более высокий приоритет.

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

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

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

Для удовлетворения этих потребностей были разработаны операционные системы, которые позволяли вести диалог с пользователем во время выполнения программы через отделенный терминал или рабочую станцию. Этот процесс называется интерактивной, или диалоговой, обработкой данных (interactive processing) (рис. 3.2). Интерактивные системы требуют, чтобы время, затрачиваемое машиной на выполнение задач, было совместимо с действиями аппаратных средств. (Использование программы редактирования текста было бы ужасным, если бы машина не успевала за пользователем, набирающим текст.) Для решения таких. задач используется обработка данных в реальном времени (real-time processing).

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

Решением этой проблемы стала разработка новой операционной системы, чередующей выполнение разных заданий с помощью процесса, который называется разделением времени (time sharing). При такой обработке время разделяется на интервалы, или кванты, и на выполнение задания отводится только один квант времени. По истечении каждого интервала времени текущее задание откладывается и начинается выполнение другого. При быстрой смене исполняемых заданий создается эффект выполнения нескольких заданий одновременно. В зависимости от типа заданий ранние системы с разделением времени могли обслуживать в реальном времени одновременно до 30 пользователей.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: