учебная логика. учебник СПО. Практикум по программному обеспечению содержит большое количество примеров и заданий
Скачать 5.66 Mb.
|
2.1.5. Интерфейс пользователяПосредством интерфейса пользователя осуществляется диалог пользователя с компьютером. Пользовательский интерфейс дает возможность при помощи команд, меню, графической оболочки управлять работой программ и аппаратуры и, таким образом, скрывает от пользователя сложные и ненужные подробности взаимодействия с аппаратурой. Изначально диалог пользователя с компьютером осуществлялся на машинном языке (в двоичных кодах). Вести такой диалог могли специалисты высокой квалификации. Неудобство ведения диалога на машинном языке очевидно, поэтому впоследствии был разработан более дружелюбный для человека ин терфейс – командный, или интерфейс командной строки(Command line interface, CLI), в котором диалог ведется при помощи команд, записываемых пользователем в командной строке. Строка, в которой записываются команды, называется строкой-приглашением, так как появление этой строки на экране показывает готовность операционной системы к диалогу с пользователем, приглашает его к диалогу. Вид строки-приглашения может отличаться в разных операционных системах, обычно в ней указывается имя текущего каталога. До сих пор в современных операционных системах остается возможность использования командного интерфейса. Например, в Windows можно запустить командный интерпретатор (Пуск – Программы – Стандартные – Командная строка или Пуск – Выполнить – набрать команду cmd). Введите в строку-приглашение команду help, чтобы вывести справку о командах Windows (рис. 2.3). Рис. 2.3. Командная строка в Windows В Linux в консольном режиме диалог пользователя с компьютером осуществляется при помощи команд. Но и в графическом режиме можно запустить приложение Терминал, которое эмулирует консоль. Командный интерпретатор операционной системы расшифровывает введенную пользователем команду и выполняет ее. Конечно, операционные системы отличаются и набором команд, и синтаксисом записи этих команд. Можно выделить общий формат команды: имя_команды [параметр_1][параметр_2][…] Когда получили распространение персональные компьютеры и его широко стали использовать не только программисты, диалог с операционной системой при помощи команд многим пользователям казался сложным, требовалось разработать для них более дружелюбный интерфейс. В 1973 г. в исследовательском центре компании Xerox была разработана концепция графического интерфейса WIMP (Windows – окна, Icons – пиктограммы, Menus – меню, Point-n-Click – указатель, указывать и щелчок), которой до сих пор следуют разработчики современного графического интерфейса. Графический интерфейс (graphical user interface, GUI) – интерфейс, обеспечивающий диалог пользователя с компьютером при помощи графических объектов (пиктограмм, окон, меню и т. д.), то есть команда дается посредством манипуляций с графическими объектами. Эволюция пользовательского интерфейса связана с появлением более дружелюбного интерфейса, способного выполнять голосовые команды человека, реагировать на жесты и т. п. 2.1.6. Поддержка многозадачностиЗадачей (или процессом) называют программу в стадии выполнения. Конечно, один процессор не может выполнять одновременно несколько действий, эффект многозадачности достигается за счет быстрого переключения с одной задачи на другую. В оперативной памяти компьютера одновременно находятся несколько программ. При этом каждая программа загружается в свой участок оперативной памяти, называемый разделом, и не влияет на выполнение другой программы. В каждый момент времени процессор выполняет только одну из них. Многозадачными ОС являются UNIX, OS/2, Windows 95 и выше, Linux, Mac OS и др. Самые известные однозадачные ОС: MS DOS, первая Mac OS, которая называлась «System 1.0». Многозадачная ОС должна обеспечивать оптимальное разделение ресурсов компьютера между работающими процессами. Ресурсы – это то, в чем нуждается процесс для своей работы (оперативная память, процессор, внешний носитель, программа и др.). Выделение ресурсов процессам и их освобождение осуществляет менеджер ресурсов. Самый главный ресурс – процессорное время между выполняющимися задачами. ОС делит процессорное время на промежутки, кванты, и распределяет их между всеми задачами. Задача распределения квантов процессорного времени в системе называется диспетчеризацией или планированием задач и занимается этим диспетчер задач. Диспетчер задач распределяет про цессорное время между процессами, руководствуясь опреде ленными правилами управления очередью процессов (эти правила иногда называют дисциплиной обслуживания). В зависимости от того, какие правила используются, различают несколько видов многозадачности. Невытесняющаямногозадачность – тип многозадачности, при котором ОС одновременно загружает в память два или более приложений, но процессорное время предоставляется только основному приложению (foreground). Другие приложения должны быть активизированы в фоновом режиме (background). Добровольная, или кооперативная, совместная многозадачность – процесс занимает столько времени, сколько ему необходимо. Освободить процессор процесс может только добровольно. Планировщик может переключать процессы только после того, как текущая задача освободит процессор. Плюсом такой организации является простота реализации. Однако добровольная многозадачность часто приводит к зависанию всей системы, если процесс, занявший процессор, не освобождает его. Вытесняющая многозадачность реализуется с использованием следующих методов: Равномерное квантование – выделение процессам времени по принципу обычной очереди. Каждому процессу выделяется одинаковый квант процессорного времени. Если за отведенное время процесс не завершился, то он переходит в конец очереди и ждет нового кванта процессорного времени. Планирование согласно приоритетам – планировщик присваивает каждому из работающих процессов приоритет и решает, в каком порядке, как долго и какие будут выполняться процессы. Планировщик в любой момент времени может отнять процессор у одной задачи и передать другой. Обычно такой акт происходит в результате реакции на событие. В случае, если происходит событие, относящееся к процессу с большим приоритетом, планировщик вытесняет текущий процесс и начинает выполнять тот, у которого приоритет больше. Например, щелчок мыши – это событие, которое может привести к передаче процессора другому процессу, которому принадлежит окно, где щелкнули мышью. Но планировщик может решить, что текущий процесс более важен. При такой организации планировщик получает систему в свое распоряжение, когда процесс освобождает процессор или истекает отведенное данному процессу время. Таким образом, каждый процесс в ОС имеет момент своего начала и завершения и в течение своего существования может находиться в различных состояниях и переходить и одного состояния в другое. Модели состояний процесса различаются в разных ОС. Например, в Windows NT различают 7 состояний процесса, в Unix – 9 состояний. Основными состояниями процесса являются: запуск, готовность, выполнение, ожидание и завершение работы. При запуске процессу выделяются все необходимые ресурсы и он загружается в оперативную память. Готовность – процесс встает в очередь и может начать выполнение сразу, как только будет предоставлено процессорное время. Выполнение(активное состояние) – процесс занимает процессорное время, выполняется процессором. Ожидание – процесс блокируется, так как ожидает выполнения некоторого события, например, ввода с клавиатуры, освобождения какого-либо необходимого ему ресурса и др., и, как только ожидаемое событие выполняется, процесс переходит в состояние готовности. При завершении работы все ресурсы, которые использовались процессом, освобождаются, в том числе и оперативная память. 2.1.7. Поддержка многопользовательского режимаОперационные системы, которые могут поддерживать работу нескольких пользователей, называются многопользовательскими. Многопользовательская система должна обеспечить разграничение прав доступа и защиту информации каждого пользователя от несанкционированного доступа других пользователей. Наличие средств защиты от несанкционированного доступа – главное отличие от однопользовательских ОС. В многопользовательских ОС каждый пользователь может настраивать для себя графический интерфейс пользователя, то есть может создать собственные наборы ярлыков, группы программ, задать индивидуальную цветовую схему, переместить в удобное место панель задач. Многопользовательские ОС: UNIX, Windows NT и выше, Linux, Mac OS X и др.; однопользовательские ОС: MS DOS, OS/2 ранние версии, операционные системы для мобильных устройств, например, Windows Mobile и др. 2.1.8. Поддержка сетиЕсли операционная система отдельного компьютера позволяет ему работать в сети, то есть предоставлять свои ресурсы в общее пользование и использовать ресурсы других компьютеров сети, то такая операционная система называется сетевой ОС. В сетевых ОС пользователи получают информацию о на личии других компьютеров в сети и могут осуществить логический вход в другой компьютер, чтобы воспользоваться его ресурсами, преимущественно файлами. Сетевая ОС обязательно содержит программную поддержку для сетевых интерфейсных устройств (драйвер сетевого адаптера), а также средства для удаленного входа в другие компьютеры сети и средства доступа к удаленным файлам. Вопросы для самоконтроля 1. Расскажите о назначении операционных систем. Перечислите функции ОС. По каким признакам классифицируются ОС? Какие дополнительные функции должна выполнять многозадачная ОС? Какие дополнительные функции накладываются на многопользовательскую ОС? Расскажите об организации файловой системы. Многозадачность, классификация, способы реализации многозадачности. 2.2. Архитектура операционных систем Большинство современных ОС представляют собой хорошо структурированные модульные системы, способные к развитию, расширению и переносу на другие аппаратные платформы. Какой-либо единой архитектуры ОС не существует, но есть универсальные подходы к структурированию ОС. 2.2.1. Кольца защитыОС должна иметь исключительные права для того, чтобы управлять работой приложений, выделять для них ресурсы компьютера в многозадачном режиме, обеспечивать защиту данных, контролировать доступ приложений к памяти и др. Таким образом, должны быть обеспечены как минимум два уровня привилегий – высокий для ОС (привилегированный режим, или режим ядра) и низкий для остальных приложений (непривилегированный, или пользовательский режим работы). В современных системах чаще всего используется аппаратно реализованное разделение уровней привилегий. В схемах защиты современных процессоров предусмотрены четыре кольца защиты. То есть архитектура современных процессоров позволяет организовать четыре уровня привилегий, однако большинство ОС использует только два. Внутреннее кольцо имеет номер 0, в нем работает сама ОС (режим ядра). Внешнее кольцо – номер 3, в нем работают приложения (режим пользователя). ОС использует кольца защиты для гарантии, что только компоненты ОС могут обращаться к ее внутренним механизмам. Другими словами, приложение не может изменить какие-либо параметры, способные привести к отказу всей системы. Программа, исполняющаяся в привилегированном режиме, имеет все права, поэтому процессор выполняет любую команду этой программы. Напротив, в пользовательском режиме процессор может исполнять только обычные команды обработки данных и не имеет доступа к системному адресному пространству. Поэтому, если приложение, работающее в пользовательском режиме, обратится к системной области памяти, процессор немедленно прервет работу этого приложения и оно будет закрыто. Пользовательские программы имеют доступ только к своим внутренним объектам и тем внешним объектам, доступ к которым им разрешен ОС. Такие модули ОС, как планировщик, менеджер памяти, драйверы внешних устройств, должны работать только в системном режиме. Обычно в системном режиме исполняется все ядро ОС, в том числе и те модули, для которых это необязательно – файловые системы, различные сервисные модули и т. д. Поэтому привилегированный режим часто называют режимом ядра. Переключение из пользовательского режима в режим ядра осуществляется специальной командой. Обычно такая команда сразу же передает управление одному из модулей ядра системы. 2.2.2. Операционные системы с монолитным ядром Монолитное ядро (monolithic kernel) – старейший способ организации операционных систем. В этом случае компоненты операционной системы являются не самостоятельными модулями, а составными частями одной большой программы. Монолитное ядро представляет собой набор процедур (подпрограмм), каждая из которых может вызвать каждую. Все процедуры работают в привилегированном режиме. Таким образом, монолитное ядро – это такая схема операционной системы, при которой все ее компоненты являются составными частями одной программы, используют общие структуры данных и взаимодействуют друг с другом путем непосредственного вызова процедур. Примером систем с монолитным ядром является большин ство Unix-систем, в том числе Linux, MS-DOS и другие ОС. Достоинствами этой архитектуры являются высокая скорость работы ОС. Есть и недостатки у этой архитектуры. Поскольку все ядро работает в одном адресном пространстве, сбой в одном из компонентов может нарушить работоспособность всей системы. 2.2.3. Операционные системы с микроядромСовременная тенденция в разработке операционных систем состоит в перенесении значительной части системного кода на уровень пользователя и одновременной минимизации ядра. Суть микроядерной архитектуры в том, что в привилегированном режиме остается работать только очень небольшая часть ОС, называемая микроядром. Микроядро защищено от остальных частей ОС и приложений. В состав микроядра обычно входят машинно-зависимые модули, а также модули, выполняющие базовые функции ядра по управлению процессами, обработке прерываний, управлению виртуальной памятью, пересылке сообщений и управлению устройствами ввода-вывода. Данные функции очень трудно выполнить в пользовательском пространстве. Все остальные функции ядра оформляются в виде приложений, работающих в пользовательском режиме. Примеры ОС с микроядерной архитектурой: Symbian OS; микроядро Mach, используемое в GNU/Hurd и Mac OS X; Minix и другие ОС. Формально Windows NT и выше часто называют микроядерной операционной системой. Однако микроядро этой ОС слишком велико (более 1 Мбайт), чтобы носить приставку «микро». Кроме того, все компоненты ядра работают в одном адресном пространстве и активно используют общие структуры данных, что свойственно операционным системам с монолитным ядром. Таким образом, в Windows NT и выше сочетаются два подхода, поэтому часто говорят, что эта ОС имеет гибридное ядро. Главное достоинство микроядерной архитектуры – устойчивость к сбоям оборудования, ошибкам в компонентах системы. Микроядерная архитектура более надежна, чем с монолитным ядром, поскольку ошибка на уровне непривилегированной программы менее опасна, чем отказ на уровне режима ядра. Кроме этого, высокая степень модульности ядра операционной системы упрощает добавление в него новых компонентов. В микроядерной ОС можно, не прерывая ее работы, загружать и выгружать новые драйверы, файловые системы и т. д. Компоненты ядра операционной системы ничем принципиально не отличаются от пользовательских программ, поэтому для их отладки можно применять обычные средства. Недостатком этой архитектуры является некоторое снижение производительности, так как передача данных между процессами требует накладных расходов. 2.3. Операционная система Linux Популярная сейчас операционная система Linux является представителем операционных систем семейства UNIX. Поэтому для начала сделаем обзор UNIX и причин популярности операционных систем, входящих в это семейство. 2.3.1. Семейство UNIXОперационная система UNIX была разработана группой сотрудников Bell Labs под руководством Д. Ричи, К. Томпсона и Б. Кернигана в 1969 г. Но в наши дни, когда говорят об этой операционной системе, чаще всего имеют в виду не конкретную ОС, а скорее целое семейство UNIX-подобных операционных систем. Вот некоторые представители семейства UNIX: System V UNIX, BSD UNIX, OSF/1, Solaris, Linux, freeBSD и др. Рассмотрим причины 40-летней популярности ОС семейства UNIX. UNIX – многозадачная многопользовательская система с широким спектром услуг. Один мощный сервер может обслуживать запросы большого количества пользователей. Система может выполнять различные функции – работать как вычислительный сервер, обслуживающий сотни пользователей, как сервер базы данных, как сетевой сервер, поддерживающий важнейшие сервисы сети (telnet, ftp, электронную почту, службу имен DNS и т. д.), как сетевой маршрутизатор. UNIX относится к классу наиболее надежных и безопасных ОС. Переносимость. Код системы написан на языке высокого уровня Си, что сделало ее простой для понимания, изменений и переноса на другие аппаратные платформы. Все части системы, не считая ядра, являются полностью машинно-независимыми. Эти компоненты написаны на языке Си, и для их переноса на новую платформу требуется только перекомпиляция исходных текстов в коды целевого компьютера. Стандартизация. Несмотря на многообразие версий UNIX, основой всего семейства являются принципиально одинаковая архитектура и ряд стандартных интерфейсов. Опытный администратор без большого труда сможет обслуживать другую версию системы. IEEE и POSIX – стандартизация интерфейса прикладного программирования API UNIX, которая обеспечивает переносимость приложений в разные версии ОС семейства UNIX. То есть приложения, написанные, например, для Solaris должны выполняться и под Linux, и под freeBSD. Наличие большого количества приложений, в том числе свободно распространяемых, начиная от простейших текстовых редакторов и заканчивая мощными системами управления базами данных. 2.3.2. Краткая история LinuxОперационные системы типа UNIX изначально разрабатывались для работы на больших многопользовательских компьютерах – мейнфреймах. В начале 90-х гг. студент хельсинкского университета Линус Торвальдс приступил к разработке UNIX-подобной ОС для IBM-совместимых персональных компьютеров. Файлы первого варианта Linux (исходные коды) были опубликованы в Интернете в 1991 г. Л. Торвальдс не стал патентовать или иным образом ограничивать распространение новой ОС. С самого начала Linux распространяется на условиях, определяемых лицензией General Public License (GPL), принятой для программного обеспечения, разрабатываемого в рамках движения Open Source и проекта GNU. Разработка Линуса Торвальдса представляла собой только ядро операционной системы. Ядро – это основная, определяющая часть ОС, которая управляет аппаратными средствами и выполнением программ. Утилиты выполняют служебные функции. К 1991 г. в рамках проекта GNU уже было разработано большое количество разного рода утилит. Но для превращения GNU в полноценную ОС не хватало ядра. Разработка ядра также велась, но по разным причинам задерживалась. Поэтому появление разработки Л. Торвальдса было очень своевременным. Таким образом, более правильным было бы называть операционную систему Linux – GNU/Linux. 2.3.3. Основные характеристики ОС LinuxLinux – самая современная, устойчивая и быстроразвивающаяся система, почти мгновенно вбирающая в себя самые последние технологические новшества. Она обладает всеми возможностями, которые присущи современным полнофункциональным операционным системам. Надежная многозадачная многопользовательская ОС для персональных компьютеров. Осуществляет эффективное управление памятью. Поддерживает различные файловые системы. Предоставляет сетевые возможности. Работает на разных аппаратных платформах (на всех версиях микропроцессоров Intel, на процессорах AMD, разработаны версии ОС и для других типов процессоров. 2.3.4. Дистрибутивы LinuxСамые первые версии Linux помещались на двух дискетах. Первая дискета была загрузочной и содержала ядро, а вторая – корневую файловую систему и основные утилиты, разработанные в рамках проекта GNU. Процесс конфигурирования и настройки системы производился вручную и требовал обширных знаний. Чтобы установка Linux стала доступна не только экспертам, стали разрабатываться дистрибутивы Linux. Дистрибутив Linux – это набор пакетов программного обеспечения, включающий базовые компоненты операционной системы, набор программных приложений, программу инсталляции, которая позволяет установить на компьютер пользователя операционную систему GNU/Linux и набор прикладных программ, необходимых для конкретного применения системы. Поскольку разработкой дистрибутивов занимается большое количество независимых групп программистов, то сейчас в мире существует уже сотни различных дистрибутивов Linux (см. http://distrowatch.com/) и все время появляются новые. Новые дистрибутивы создаются, в основном, не на пустом месте, а на основе одного из уже существующих дистрибутивов. Отличаются дистрибутивы, прежде всего: − программой инсталляции; − используемым средством установки программных пакетов (системой управления пакетами); − составом утилит и прикладных программ, включен ных в дистрибутив; − сценарием начальной загрузки; − требованиями к аппаратуре. Можно выделить три основные группы дистрибутивов: На основе дистрибутива Red Hat, переименованного позднее в Fedora Core. Наиболее известные дистрибутивы этой группы – Mandrake (или Mandriva), в том числе русифицированные – ASPLinux, Linux Ink, AltLinux (на основе Mandrake) и др. На основе дистрибутива Debian. К этой группе относятся наиболее популярный сейчас во всем мире дистрибутив Ubuntu, также Knoppix, Storm и др. На основе дистрибутива Slackware. К этой группе относится openSuSe. В России сложилось три команды разработчиков, создающих и поддерживающих русифицированные дистрибутивы. Одна из команд – «ALTLinux» (http://www.altlinux.ru), которая выпускает собственный дистрибутив ALTLinux. На протяжении последних лет эта команда активно работает в направлении внедрения свободного программного обеспечения в образовательные учреждения России. Они разработали специальный «Пакет свободного программного обеспечения для образования». Вторая команда представлена фирмой «ASPLinux» (http:// www.asplinux.ru), которая тоже выпустила собственный дистрибутив ASPLinux. Третья команда – Санкт-Петербургская фирма «Linux Ink» (http://www.linux-ink.ru), которая выпускает дистрибутив «НауЛинукс», основанный на всемирно известном дистрибутиве Scientific Linux, а также –версии дистрибутивов, специально ориентированных для использования в образовательных учреждениях. 2.3.5. Интерфейс пользователяLinux – многопользовательская система, поэтому чтобы начать работать, пользователь должен «представиться» системе, введя свой логин и пароль. Регистрацию новых пользователей обычно выполняет администратор системы. Пользователь не может изменить свое учетное имя, но может установить и изменить свой пароль. Ядро ОС UNIX идентифицирует каждого пользователя по его идентификатору (UID – User Identifier), уникальному целому значению, присваиваемому пользователю при реги- страции в системе. Кроме того, каждый пользователь относится к некоторой группе пользователей, которая также идентифицируется некоторым целым значением (GID – Group IDentifier). Администратор системы обладает большими возможностями, чем обычные пользователи, он имеет нулевой UID и называется суперпользователем или root. Он имеет неограниченные права на доступ к любому файлу и на выполнение любой программы, возможность полного контроля над системой. Изначально в системах семейства UNIX использовался командный интерфейс. Интересной особенностью является то, что было разработано несколько командных интерпретаторов с похожими, но различающимися своими возможностями командными языками. Общее название для любого командного интерпретатора ОС семейства UNIX – shell (оболочка), так как интерпретатор представляет внешнее окружение ядра системы. Наиболее известными из них являются: sh (Bourne Shell), более мощный bash (Bourne Again Shell), самый мощный zsh (The Z Shell). Пользователь может выбрать любой интерпретатор. Вызванный командный интерпретатор выдает приглашение на ввод пользователем командной строки (символ $ для обычных пользователей, # – для суперпользователя root.) Команды Команды в shell обычно имеют следующий формат: |