Смекни!
smekni.com

Операционная система, программное обеспечение ПК (стр. 10 из 23)

При загрузке в ОЗУ командный процессор распадается на две области: резидентную, которая располагается вслед за модулями ОС, и нерезидентную, которая располагается на старших адресах ОЗУ. Резидентная часть содержит подпрограммы стандартной обработки прерываний с десятичными номерами 34 - 36 - теми, которые разработчик прикладной системы может переопределить по-своему. Здесь же находится программа подзагрузки нерезидентной части в ОЗУ. Кроме того, в состав резидентной части входит подпрограмма инициализации, которая обрабатывает файл AUTOEXEC.BAT при запуске машины в MS DOS и файл WIN.INI при запуске машины в WINDOWS. Нерезидентная часть включает программу обработки команд ОС, поступающих с терминала или из командных файлов. В нерезидентную часть входит загрузчик внешних программ, задачей которого является чтение очередной программы с диска в оперативную память, настройка адресов и переход на ее исполнение. Поскольку нерезидентная часть командного процессора располагается на старших адресах оперативной памяти, любая прикладная программа, загружаемая на младшие адреса, может частично или полностью занять и "затереть" эту область памяти. По окончании такой программы управление всегда возвращается в резидентную часть командного процессора, который в этом случае пытается восстановить затертую нерезидентную часть, загружая ее с системного диска.

Подпрограмма инициализации располагается в конце резидентной части командного процессора. Поскольку она срабатывает лишь один раз при запуске машины, занимаемая ею память может быть использована прикладными программами; поэтому первая же прикладная программа размещается в ОЗУ на месте этой подпрограммы, что позволяет экономно использовать оперативную память.

Загружаемые модулем COMMAND.COM пользовательские (прикладные) программы и программы-оболочки (типа NORTON COMMANDER, DOS NAVIGATOR или PC TOOLS), обеспечивающие более удобный и наглядный способ общения с ПК, выполняют все необходимые графические, текстовые и расчетные работы, а также реализуют утилиты MS DOS, WINDOWS или Нортона.

Файлы IO.SYS, MSDOS.SYS и COMMAND.COM, программа-загрузчик ОС Boot Record и BIOS, входящие в базовое программное обеспечение (операционную систему) ПК, составляют минимально необходимый набор программ для работы компьютера. Диск, который содержит набор этих программ (за исключением BIOS, которая "вшита" в микросхему на Материнской плате), называется загрузочным или системным. С такого диска можно запустить (загрузить) компьютер в случае выхода из строя жесткого диска с операционной системой.

Билет № 24 История операционных систем. Структура операционной системы MSWindows

История ОС

Первые (1945-1955г.г.) компьютеры работали без операционных систем, как правило, на них работала одна программа.

Когда скорость выполнения программ и их количество стало увеличиваться, простои компьютера между запусками программ стали составлять значительное время. Появились первые системы пакетной обработки (1955-1965г.г.), которые просто автоматизировали запуск одной программ за другой и тем самым увеличивали коэффициент загрузки процессора. Системы пакетной обработки явились прообразом современных операционных систем. Совокупность нескольких заданий, как правило, в виде колоды перфокарт, получила название пакета заданий.

Многозадачность (1965-1980) - это способ организации вычислительного процесса, при котором на одном процессоре попеременно выполняются несколько задач. Пока одна задача выполняет операцию ввода-вывода, процессор не простаивает, как это происходило при последовательном выполнении задач , а выполняет другую задачу. Для этого создали систему распределения памяти, когда каждая задача загружается в свой участок оперативной памяти, называемый разделом.

Спулинг (spooling-подкачка) в то время задания считывались с перфокарт на диск в том темпе, в котором они появлялись в помещении вычислительного центра, а затем, когда очередное задание завершалось, новое задание с диска загружалось в освободившийся раздел.

Системы разделения времени - вариант многозадачности, при котором у каждого пользователя есть свой диалоговый терминал. Это было сделано, чтобы каждый программист мог отлаживать свою программу в реальном времени. Фактически это была многопользовательская система. Естественно стали возникать проблемы защиты задач друг от друга.

В это время была разработана многопользовательская система MULTICS, которая должна была обеспечивать одновременную работу сотни пользователей.

В это время также стали бурно развиваться мини-компьютеры (первый был выпущен в 1961г.), на которые была перенесена система MULTICS. Эта работа в дальнейшем развилась в систему UNIX.

Появилось много разновидностей несовместимых UNIX, основные из них были System V и BSD. Чтобы было возможно писать программы, работающие в любой системе UNIX, был разработан стандарт POSIX. Стандарт POSIX определяет минимальный интерфейс системного вызова, который должны поддерживать системы UNUX.

В 1974г. был выпущен центральный процессор Intel 8080, для него была создана операционная система CP/M. В 1977г. она была переработана для других процессоров, например Zilog Z80.

В начале 80-х была разработана система MS-DOS, и стала основной системой для микрокомпьютеров.

В 80-х годах стало возможным реализовать графический интерфейс пользователя (GUI - Graphical User Interface), теория которого была разработана еще в 60-е годы. Первой реализовала GUI корпорация Macintosh.

С 1985 года стала выпускаться Windows, в то время она была графической оболочкой к MS-DOS вплоть до 1995г., когда вышла Windows 95.

Уже тогда было ясно, что DOS с ее ограничениями по памяти и по возможностям файловой системы не может воспользоваться вычислительной мощностью появляющихся компьютеров. Поэтому IBM и Microsoft начинали совместно разрабатывать операционную систему OS/2. Она должна была поддерживать вытесняющую многозадачность, виртуальную память, графический пользовательский интерфейс, виртуальную машину для выполнения DOS-приложений. Первая версия вышла 1987г.

В дальнейшем Microsoft отошла от разработки OS/2, и стала разрабатывать Windows NT. Первая версия вышла в 1993г.

В середине 80-х стали бурно развиваться сети персональных компьютеров, работающие под управлением сетевых или распределенных операционных систем.

Структура операционной системы MSWindows.

Общая структура приложения Windows

В этой главе будет рассмотрен процесс построения простейшего приложения для Windows, на примере которого покажем основные принципы и приемы построения такой программы. Эту программу можно использовать в дальнейшем как основу для написания своих собственных приложений.

При написании любых программ для Windows необходим включаемый файл windows.h. В нем содержатся прототипы всех функций Windows, определены типы и структуры данных, глобальные переменные и константы.

Как уже отмечалось выше, приложение Windows содержит, по крайней мере, два принципиально важных модуля:

Функция WinMain();

Функция WndProc().

Функция WinMain

Подобно функции main обычной программы на Си, функция WinMain обязана присутствовать в каждом приложении Windows. Функции WinMain передается управление в начальный момент загрузки приложения. Перечислим действия, выполняемые WinMain:

регистрация класса окна приложения и другие инициализации;

создание главного окна приложения и, возможно, других, подчиненных окон;

запуск цикла обработки сообщений, помещаемых в очередь приложения;

завершение работы приложения при извлечении из очереди сообщения WM_QUIT.

Шаблон функции WinMain выглядит так:

int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)

HANDLE hInstance; // дескриптор текущей копии

HANDLE hPrevInstance; // предыдущая копия

LPSTR lpCmdLine; // указатель на командную строку

int nCmdShow; // флаг “окно_открыто/окно_закрыто

{ }

Функция WinMain имеет четыре параметра. Первый параметр – hInstance – является дескриптором копии приложения. Это число однозначно определяет каждую копию приложения, исполняемую под Windows. Можно одновременно выполнять несколько копий одного приложения, при этом каждой копии будет соответствовать уникальный индекс.

Второй параметр – hPrevInstance – является дескриптором, определяющим копию данного приложения, которая была последней активной копией. Если параметр hPrevInstance равен нулю, других копий этого приложения не существует.

Третий параметр – lpCmdLine – это дальний указатель на командную строку, оканчивающуюся нулем. Он позволяет приложению получать данные через командную строку.

Четвертый параметр – nCmdShow – определяет, как приложение первоначально отображается на дисплее: пиктограммой (nCmdShow = SW_SHOWMINNOACTIVE) или в виде открытого окна (nCmdShow = SW_SHOWNORMAL).

Работа с копиями приложения

В Windows можно несколько раз запустить одну и ту же программу. Известно, что в выполняемом модуле программы код и данные разделены (расположены в разных сегментах). В Windows при вторичном запуске той же программы в оперативную память не загружается секция, содержащая код программы, а просто организуется второй сегмент данных, соответствующий второму запуску программы. С этим сегментом работает физически тот же код программы, что и первый.

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

Для того, чтобы отличить одну копию данных от другой той же программы, каждой копии программы Windows ставит в соответствие уникальный дескриптор копии приложения (instance handle). Соответствующую целочисленную переменную hInstance Windows передает функции WinMain при вызове в качестве одного из обязательных параметров. Другим обязательным параметром является также целочисленный параметр hPrevInstance, который позволяет копии программы в процессе работы определить, первая она или нет. При запуске первой копии Windows присваивает hPrevInstance значение нуль.