|
Уровни программного обеспечения
- Уровни и управление процессами
- Инкапсуляция и абстрагирование(Encapsulation and Abstraction)
- Уровни программного обеспечения (Layers of Software)
Уровни и управление процессами
Системы программного обеспечения состоят из множества уровней или слоев, и тоже самое можно сказать о многих аспектах повседневной культуры. В американском обществе, например, когда вы подписываете чек при оплате обеда в ресторане кредитной карточкой, компания, обеспечивающая услуги кредитных карт не заботится о том, что вы оплачивается именно еду. Никаких деталей больше не требуется. Но, процесс еды фактически состоял из нескольких уровней. Это уровень, на котором официанту нужно отследить заказ, чтобы знать, какие блюда принести и в каком порядке. Например, первым был салат. Детали приготовления салата были обработаны на другом уровне, — на кухне, где повар смешал вместе салат, помидоры и гренки, пришедшие извне, о чем повар позаботился заранее. 1
Однако откуда же появились гренки? Их купили в булочной, где они были сделаны из муки, дрожжей и специй. Мука прибыла из мукомольни, в которой приобрели пшеницу и измельчили ее. Пшеница поступила от фермера, который посеял семена и, в конечном счете, собрал урожай пшеницы. Когда вы платите за ваш обед, вы оплачиваете (косвенно) около одной тысячной цента (предполагая, что вы оплачиваете в американской валюте) этому фермеру за пшеницу в ваших гренках. И, вы платите тысячам других людей, которые обеспечивали ваш обед различными способами. К счастью, вам не платите всем этим людям непосредственно! Вы платите только «за обед», а детали отсортировываются на нижних уровнях.
При организации сравнительно независимых процессов в виде уровней или слоев, система может сохранять лучший контроль и может достичь большой эффективности. В компьютерной науке принципы, обеспечивающие эти преимущества, называются инкапсуляция (Encapsulation) и абстрагирование (Abstraction).
Инкапсуляция и абстрагирование.
Инкапсуляция (сокрытие или сокрытие реализации)означает, что каждому слою нужны только ограниченные знания для выполнения его работы и ни один из других уровней не имеет доступа к этой информации. Фермер не знает, для чего будет использоваться пшеница. Пекарь не знает как собирают урожай пшеницы. И, вам не нужно знать, что гренки содержат пшеницу! В мире программного обеспечения инкапсуляция означает, что вашей программе обработки текстов не нужно знать, как управлять дисководами для того чтобы открывать и сохранять файлы, — для этого есть соответствующие нижние слои программного обеспечения.
Примечание переводчика. Термин инкапсуляция в программировании означает сокрытие данных и деталей реализации алгоритма от пользователя или прикладного программиста. При этом прикладному программисту предоставляется только спецификация (интерфейс) объекта. В медицине термин инкапсулированный означает – заключенный в капсулу или оболочку, в технических науках инкапсулированный – защищенный от внешних воздействий.
Термин абстракция или абстрагирование означает выделение существенных, важных свойств объекта для их последующей реализации. В контексте данного издания это означает также взаимодействие между слоями программного обеспечения.
Однако если бы слои были полностью скрыты, то невозможно было бы связаться со слоями программного обеспечения, находящимися выше и ниже. Для того, чтобы обмениваться некоторой, не слишком большойинформацией, проектировщик слоя конкретизирует абстракцию (abstraction) ,поддерживаемую им. Пекарня поддерживает абстракцию, называемую "заказ гренок", посредством чего клиент может заказать X фунтов гренок, на что пекарни ответят производством гренок и их поставкой. Заказчик не видит, что происходит внутри пекарни. Например, пекарня может иметь большую и маленькую печи, и менеджер должен решить какую использовать для выполнения заказа. Иногда, возможно, имеет смысл, испечь два маленьких пакета гренок вместо одного большого. Иногда одна или другая печь выключается для текущего ремонта. Эти детали скрыты от клиента, что в терминологии информатики означает, что скрыта (encapsulated) информация. К тому же, даже если клиент, так или иначе, знал, что были две духовки, нельзя определить, какая духовка использовалась при выполнении заказа, так как на бланке заказов не предусмотрена запись этой информации. В терминах вычислительной техники, мы говорим, что абстракция заказа гренок не поддерживает выбор духовки.
Существование четких абстракций на каждом слое означает, что одну реализацию можно заменить другой без влияния на нижние или верхние слои. Гренки продаются множеством пекарен. Если они все принимают один бланк заказов, то можно, по желанию, выбрать другого поставщика. На вашем компьютере может быть множество реализаций программных компонентов и можно переключаться с одного на другой. Например, ваш веб-браузер обращается к вспомогательной программе, когда требуется запустить звуковой файл или видеоклип. Есть несколько программ, которые могут выполнить эту функцию. Все, что нужно, это указать браузеру, какую программу использовать. Эта разделение функциональности означает что, если становится доступной новая программа, то можно переключиться на нее и нет необходимости устанавливать новый браузер.
Слои программного обеспечения (Layers of Software)
Давайте рассмотрим слои программного обеспечения, из которых состоит компьютер:
Скрипты или макросы, написанные пользователем (User-Written Scripts or Macros)
| Интерфейс пользователя (User Interface)
| Приложение (Application)
| Библиотека времени выполнения (Run-time Library)
| Интерфейс программы-приложения (Application Program Interface)
| Операционная система (Operating System)
| Ядро (Kernel)
| Драйверы устройств (Device Drivers)
| BIOS
| Аппаратное обеспечение (Hardware)
| Таблица 1 Слои программного обеспечения
Рассмотрим слои от нижнего к верхнему:
· Аппаратные средства в нашем обзоре - это физические компоненты, из которых сконструирован компьютер, — самый нижний слой или уровень компьютера. Разумеется, существует несколько слоев аппаратного обеспечения, — плата содержит чипы, чипы составлены включают схемы, которые, в свою очередь, формируются из транзисторов. Однако с точки зрения программного обеспечения эти детали не имеют значения.
· BIOS или Базовая система ввода/вывода, — самый основной слой программного обеспечения. Он имеет дело непосредственно с сигналами, которые управляют аппаратными компонентами. Многое из его работы выполняется при включении компьютера.
· Драйверы устройства– вспомогательные программы, которые операционная система использует для связи с периферийными устройствами. Чтобы добавить новое устройство в систему, должны быть установлены соответствующие драйверы устройства. (Периферийные компоненты часто поставляются с диском, содержащим необходимые драйверы.) Драйвер для жесткого диска, например, знает, сколько дорожек на устройстве и распознает команды для перемещения на нужную дорожку с последующим чтением или записью данных. Преимущество этого в том, что продавцу операционных систем не нужно нести ответственность за поддержку каждого уже разработанного или разрабатываемого устройства. Изготовитель устройства поставляет драйвер, который во время эксплуатации устройства, действует согласно правилам, описывающим взаимодействие с операционной системой.
· Ядроявляется основой операционной системы и выполняет самые важные функции. Оно управляет памятью, решает, какую задачу выполнять следующей и обрабатывает различные виды возможных прерываний. Ядро должно всегда находиться в оперативной памяти, и из-за его специфической природы, оно должно работать без защитных механизмов, которые оберегают от ошибочных команд или нелегальных обращений к памяти. Поэтому, оно должно быть как можно меньше.
· Остальная часть операционной системынамного больше, чем ядро. Он выполняет все остальные функции операционной системы. Например, он включает в себя файловую системудля управления папками и файлами на диске. Смотрите 3.4 Файловые системы для более детального ознакомления. Этот уровень связывается с ядром, когда нужно выполнить основные действия, например, инициализировать операции пересылки данных к внешнему устройству.
· Интерфейс прикладной программы, или API(application program interface), — уровень, где пользовательские программы (приложения) связываются с операционной системой. Например, предположим, что приложение веб-навигатор решает, что требуется больше памяти для отображения большого файла с изображением. Операционная система ответственна за хранение информации о программах, использующих части памяти в любое время. Эта информация скрыта в пределах операционной системы; приложение не знает ничего о том, как организована информация в памяти, так как в этом нет необходимости. Операционная система определяет абстракцию для управления памятью, называемую вызов API(API call). Всем разработчикам приложений нужно знать — какой интерфейс использовать для того, чтобы потребовать больше оперативной памяти. Если новая версия операционной системы поддерживает использование различных способов организации памяти, прикладная программа будет продолжать работать также хорошо, пока вызов API остается тем же.
· Библиотека времени выполнения (библиотека программ этапа исполнения)— коллекция подпрограмм, от которых зависят прикладные программы. Например, если вы пишите приложение на языке C для открытия файла и чтения данных из него, вы будете использовать две стандартных функции называемых fopen и fscanf. Эти функции выбираются из библиотеки подпрограмм ввода/вывода (I/O), называемой stdio,которую может использовать любая программа на C. Они выполняют соответствующий вызов API, чтобы операционная система делала то, что вам нужно. Абстракция Stdioозначает, что ваша программа не зависит от набора вызовов API , поэтому вы можете выполнять ее на любой машине, которая имеет компилятор C и реализацию C-библиотеки. Большинство программ используют во время работы подпрограммы из нескольких библиотек.
Прикладнойслой — подпрограммы, которые выполняют фактическую работу, для которой было создано приложение.
· Уровень интерфейса пользователяответственен за коммуникацию между приложением и пользователем. Это обычно GUI (graphical user interface -графический интерфейс пользователя), составленный из кнопок и всплывающих меню. Предположим, пользователь хочет, чтобы приложение открыло файл. Для этого требуется диалог, который обрабатывается GUI. Сначала, в меню Файл, пользователь нажимает Открыть.... Появляется диалоговое окно Открыть и предлагает пользователю выбрать файл. Как только пользователь выбрал файл, GUI передает запрос и имя файла в приложение, которое открывает и обрабатывает его.
· Скрипты (scripts) или макросы (macros) — подпрограммы, которые многие приложения позволяют создавать пользователям из наборы встроенных команд. Скрипты и макросы позволяют пользователям автоматизировать последовательность часто выполняемых действий. Например, макрос Microsoft Excel может открыть файл, копировать группу чисел из файла в электронную таблицу, выполнить вычисления с ними и записать результаты в другой файл. Если эти вычисления требуются каждый день, то, возможно, было бы полезно собрать вычисления в сценарий, который можно выполнить нажатием нескольких клавиш. Таким образом, пользователь может забыть о деталях. Скрипты размещаются выше уровня приложений в иерархии программного обеспечения, потому что они формируются на уровне команд приложений.
Компьютерная промышленность сегодня зависит от специалистов на каждом из вышеописанных уровней. Некоторые люди зарабатывают на создании программного обеспечения BIOS, а другие сосредоточиваются на совершенствовании технологии GUI. Но, самое большое число программистов находится на прикладном уровне, потому что люди хотят использовать компьютеры для множества различных задач.
1 Гренки — слегка поджаренные кусочки хлеба, популярные в салатах в U.S., где салат обычно состоит из листьев салата, кусочков помидоров (или очень маленьких вишнеобразных помидоров), и иногда из кусочков других овощей — огурцов или зеленого перца. Гренки кладутся сверху.
BIOS: Жизнь снизу
- Роль BIOS
- Изменение установок BIOS
Роль BIOS
Большая часть этого курса связана с высшими уровнями иерархии программного обеспечения: файловыми системами, операционными системами и приложениями. Но, в этом разделе, мы рассмотрим самый нижний уровень программного обеспечения — BIOS, или базовую систему ввода/вывода. У BIOS есть три главные функции. Она инициализирует аппаратные средства при включении компьютера, загружает операционную систему и обеспечивает базовую поддержку таких устройств, как клавиатура, мышь и последовательные порты (serial ports). BIOS присутствует всегда, но он виден только при включении компьютера, до того как операционная система перехватит управление.
При включении компьютера в оперативной памяти нет операционной системы. Она пуста. (Напомним, что оперативная память (RAM) - непостояннаяпамять; при выключении она теряет данные, сохраненные в ней). BIOS должен постоянно находиться в памяти другого рода для выполнения своей функции. Поэтому BIOS постоянно находится на чипе ROM (ПЗУ) на материнской плате. ROM — постоянная память; она сохраняет данные, при выключении питания. При включении процессор автоматически запускает выполнение команд из ROM. Так как ROM более медленный тип памяти, чем оперативная память, BIOS в большинстве систем сразу копирует себя из ROM в RAM. Затем BIOS дает команду процессору брать все дальнейшие команды из RAM.
Другой специальный вид памяти, используемой BIOS — память CMOS. CMOS (комплиментарный металло-оксидный полупроводник) — технология чипа, которая требует очень мало энергии. Небольшая память CMOS, часто всего лишь объемом 64 байтов, размещена на материнской (системной) плате для сохранения параметров BIOS, управляющих работой аппаратных средств. Например, существует параметр, управляющий времени операций выборки оперативной памяти. Если вы покупаете более быстрые чипы DRAM для вашей оперативной памяти, вы можете изменить параметры BIOS, чтобы диспетчер шины памяти пользовался наивысшей скоростью DRAM. Память CMOS непостоянна, но ее содержимое после выключения компьютера сохраняет маленькая батарейка на материнской плате. Поскольку батарейку подзаряжает материнская плата, она может служить много лет; однако, если она будет отключена, BIOS вернется к параметрам, используемым по умолчанию. Поэтому, важно, чтобы CMOS имела низкое энергопотребление. Главный недостаток технологии CMOS заключается в том, что она более медленная, чем регулярная DRAM, но это не имеет значения, если память используется только для настройки параметров BIOS, поскольку содержимое нужно только во время запуска системы.
При включении питания системы начинает выполняться BIOS, BIOS инициализирует POST (Power-On Self Test)– последовательность команд самотестирования при включении питания. Для начала, запускается видеокарта (вы будете видеть мелькание экрана) и отображается основная информация о типе установленной видеокарты, имени изготовителя BIOS и версии BIOS. Затем определяется количество DRAM, установленной в системе, и может выполняться тестирование памяти. В любом случае, тестированием еще управляют параметры BIOS. (На системах с большим объемом памяти, отключение тестирования памяти позволяет компьютеру быстрее загрузиться). Конфигурация памяти и результаты теста отображаются на мониторе. Затем, после определения плат расширения и адаптеров, BIOS инициализирует эти платы и адаптеры. В заключении POST-последовательности, BIOS отображает информацию о системной конфигурации, например тип установленного процессора, информация о кэш-памяти, типы каждого из найденных дисководов, адреса всех серийных и параллельных портов и список других найденных плат расширения.
Как только POST-последовательность завершена, следующая задача BIOS – загрузить программу, которая запустит операционную систему. Для этого BIOS должна иметь информацию о дисководах, чтобы прочитать порцию данных, называемых Основной загрузочной записью (Master Boot Record) или MBR. По соглашению, это первый сектор первой дорожки диска. Программа MBR загружает операционную систему и запускает ее.
Возможно, в системе несколько дисководов, с которых возможна загрузка операционной системы. Какие из них нужно использовать? BIOS следует порядку поиска (search order ),чтобы найти операционную систему для загрузки. Начинается поиск с устройства с именем A. Если нет никакого диска в этом устройстве или, если он не содержит основную загрузочную запись, то происходит обращение к B (второй дисковод), если он существует. Если и это неудачно, то перемещается к устройству C, который является обычно основным жестким диском, и ищет основную загрузочную запись там. И так далее.
Первая проверка floppy-дисковода A очень полезна потому что в отличие от жесткого диска, дискета – сменное средство. Так, если вы не хотите загружать операционную систему с жесткого диска, вам нужно вставить загрузочный дискв устройство A и компьютер загрузится оттуда. Загрузочный диск – дискета, которая содержит самозагрузочную копию операционной системы. Если версия операционной системы на жестком диске испорчена, то можно снова запустить систему, используя загрузочный диск. Затем вы можете восстановить поврежденные данные на жестком диске.
Примечание переводчика. В современных компьютерах дискеты практически не используются. Вместо них применяются компакт-диски CD и DVD, а также usb flash drive. В некоторых случаях загрузка производиться с сервера по локальной сети.
Компьютер, загруженный с floppy-диска, CD или DVD не может быть полностью безопасен. Ваши файлы обычно защищены операционной системой, чтобы не позволить доступ к ним других пользователей. Но, если кто-нибудь вставит загрузочный диск в дисковод, он сможет загрузить свою собственную версию операционной системы и проигнорировать запрет доступа ко всему жесткому диску. Гарантированная защита против этого вида нападения – кодировать диск. Другой риск, связанный с загрузочными дисками – вирусы MBR. Эти вирусы живут в основной загрузочной записи диска. Если кто-нибудь вставляет зараженную дискету или диск в устройство чтения дисков, то после загрузки системы вирус может заразить жесткий диск.
Некоторые BIOS позволяют изменить последовательности загрузки. Это полезно, если вы хотите по умолчанию загрузить систему с CD-ROM, DVD-ROM или c сервера локальной сети вместо жесткого диска. Вы можете также отключить загрузку с floppy-диска или c CD, DVD, если заботитесь о защите.
Изменение установок BIOS
Для изменения установок BIOS вам нужно запустить программу BIOS Setup в ходе загрузки, нажимая определенную клавишу или их комбинацию, такие как F2, F8, CTRL/F8 и т.п. Начальное сообщение BIOS укажет, какую клавишу нажимать. Программа загрузки BIOS setup покажет текущие установки BIOS и позволит изменить их. Новые установки сохраняются в CMOS-памяти и будут действовать до следующей загрузки системы. Установки нужно менять внимательно, так как неправильные установки могут привести к неработоспособности компьютера.
Вы можете больше узнать о BIOS из BIOS entry in the PC Guide. Если вы планируете менять установки BIOS, то сначала читайте BIOS Survival Guide.
3.1.3 Управление процессами
Другая функция операционной системы – поддерживать последовательность всех процессов, выполняющихся в настоящий момент, обеспечивая каждому выполнение с разумной частотой. Процесс – частный случай программы. Он включает некоторый набор страниц памяти, набор дескрипторов (описателей) открытых файлов (если это процесс ввода/вывода (I/O)), идентификатор процесса (ID) и другие. Ядро поддерживает список всех процессов в системе. Это программы, запущенные пользователем, различные программы, выполняющие функции операционной системы за пределами ядра, такие как печать и сетевая поддержка. Каждый процесс может быть в одном из состояний: работающий (запущенный), работоспособный, или заблокированный. Только один процесс на ЦП может фактически работать в данный момент времени, хотя любое число может быть работоспособным. Заблокированный процесс – тот, который дожидается некоторого события. Например, программа буферизации печати заблокирована большую часть времени и становится работоспособной, когда пользователь выбирает команду Печать, активизируя процесс.
В операционной системе Windows при вызове менеджера задач (Task Manager) можно увидеть список текущих заданий. (Задание в Windows – это приложение, запущенное пользователем, появляющееся в панели процессов. Задание обеспечивает выполнение одного или более процессов). 3.1.4 Lab: The Task Manager показывает шаги, необходимые для использования Task Manager. В операционной системе UNIX команды ps и topотображают информацию о процессах.
Ядро поддерживает очередь (также называется очередью задач) или очередь процессов на выполнение. Для того, чтобы создать иллюзию что все процессы выполняются одновременно, используется приоритетная многозадачность. По сравнению с другими видами многозадачности, приоритетная многозадачность создает лучшую иллюзию, чем остальные. Трюк заключается в наличии часов реального времени, которые могут регулярно генерировать прерывания. Прерывания по таймеру предоставляют ядру возможность посмотреть на очередь запуска и увидеть, можно ли какой-то процесс запустить прямо сейчас. Если ответ – да, то процесс, выполняемый в данный момент, выгружается. Ранг его состояние понижается от запущенного к работоспособному, этап его выполнения отмечается и содержимое его регистра сохраняется, чтобы процесс можно было возобновить позже. Заблокированные процессы также генерируют эти виды прерываний, но ответ на последний вопрос для них всегда “да”. Затем другой процесс в очереди задач выбирается для работы. Если ядро переключает процессы с достаточной частотой, то человеку кажется, что все процессы выполняются одновременно. Теперь вы знаете секрет иллюзии!
Если приоритетная многозадачность — хорошая идея, то почему бы ни переключать процессы чаще, скажем, после каждой команды? Причина в том, что ядро не переключает от одного процесса к другому, для этого требуется контекстный переключатель, который требует некоторого времени. Для выполнения контекстного переключения процессор должен прервать последовательность команд, сохранить содержимое всех регистров, загрузить новую таблицу страниц и т.п. Это требует определенного количества расходов для каждого приоритетного прерывания. Поэтому, оптимальная стратегия — делать контекстное переключение только тогда, когда нужно гарантировать справедливое обслуживание для всех процессов.
Некоторые приложения для выполнения своих функций требуют многозадачности. Например, для того чтобы веб-навигатор поддерживал многооконность (каждая загрузка — на своей странице или запуск различных Java-апплетов) браузеру нужно создать процесс для каждого окна. Но, наличие множества процессов дорого, потому что каждому требуется собственное адресное пространство, таблицы страниц, файлы дескрипторов и т.п. И многие приложений, использующие многозадачность, не требуют разделения процессов. Поэтому новые версии операционных систем предусматривают облегченные процессы (lightweight processes) называемые потоками (threads), которые находятся в одном адресном пространстве и совместно используют файловые дескрипторы.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|