Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 1461

.pdf
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
1.19 Mб
Скачать

1.Процессы, вовлеченные в тупиковую ситуацию, могут не иметь конкретных приоритетов, так что оператору придется принимать произвольное решение.

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

4.Чтобы оптимально определить, какой из процессов следует вывести из системы, могут потребоваться значительные усилия.

2.4. Настройка расписаний в операционной системе

Unix

Cron

Запуском периодичных заданий занимается системный демон cron (может запускать не только системные задания, но и пользовательские). Для этого существуют специальные пользовательские файлы crontab (cron table) , управлять которыми можно с помощью одноименной программы. Она имеет 3 основных опции:

e (edit) – редактировать файл crontab;

l (list) – вывести содержимое этого файла;

r (remove) – удалить файл.

Файл crontab находится в /etc. Редактировать его, как впрочем, и любой текстовый файл, можно с помощью редактора nano. Там, в основном, находятся задания, которые требуют указание имени пользователя, от чьего имени они запускаются.

Дополнительную справку по синтаксису файла crontab можно получить командой man 5 crontab. При первом запуске crontab –e созданный файл будет откомментирован.

51

Каждое задание нужно записывать одной строкой, состоящей из шести полей, разделенных пробелами. В первых пяти полях задается периодичность задания, в шестом – само задание (команда). Первые пять полей имеют следующие значения:

1.Минута.

2.Час.

3.День месяца.

4.Месяц.

5.День недели.

6.Имя пользователя (необязательно)

Учтите, что в каждом из полей может стоять либо звездочка, либо число или перечень чисел. Звездочка означает «любой», то есть если поставить звездочки во всех пяти полях, задача будет выполняться ежеминутно без перерывов. Перечень чисел можно задавать в явном виде, перечислив через запятую отдельные числа или их диапазоны: например, если в пятом поле написать «1,2,4-7», то задание будет выполняться во все дни, кроме среды. Можно задавать и неявно, в виде «*/число». Если * означает «каждый» (день, месяц и т.д.), то, скажем, */2 – каждый второй, а */3 – каждый третий.

Задания выполняются cron`ом только в четко заданное время. Если компьютер в это время был выключен, задание не выполниться. Пакет anacron запускает пропущенные задания при первом включении компьютера после запланированного по расписанию времени.

Чтобы запускать задание от имени пользователя достаточно выполнить sudo crontab –e –u user, где user – имя пользователя. Также можно редактировать файл crontab,

располагающийся в etc: nano /etc/crontab.

Самостоятельно разберите, когда будут выполнены следующие задания:

49 */3 * * * uname –a>output.txt

52

( Выполняется в 0:49, 3:49, 6:49 и т. д.)

0 9 * * mon df>1.txt

(Выполняется в 9:00 в понедельник)

0 0 1 1 * command

(В Новый Год)

2.5. Работа с веб-сервером в ОС Unix

Apache – кроссплатформенное программное обеспечение, выполняющее роль веб-сервера. Он принимает запросы (HTTP) от клиента и передает ему HTTP ответы. Клиент – это не человек, а программа, как правило, веб-браузер. Apache распространяется как СПО, это один из лучших веб-серверов - на 2011 год занимает 65% рынка.

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

Веб-сервер, в широком понятии, не только набор ПО, но и аппаратное обеспечение – это компьютер, на котором это ПО установлено. Как правило, одного Apache для полноценной работы бывает мало, предположим, вам надо создать интернетмагазин – в этом случае вам понадобится список всех ваших клиентов, а также их контактные данные, клиентам же нужны будут на вашем сайте аккаунты, чтобы они могли аутентифицироваться и совершать покупки. Для хранения данных о пользователях и иной информации служат базы данных. Они хранятся в файлах с расширением «sql», представляют собой таблицы, которые хранят в себе определенные данные. Чтобы веб-сервер смог «прочесть» и выполнить запросы к базе данных (sql-запросы) нужен SQLсервер. В данной лабораторной работе мы установим MySQLсервер, он также, как и Apache, является СПО.

53

Но чтобы создать качественное веб-приложение одних знаний html будет недостаточно. Для этого был разработан язык программирования PHP - “Hypertext Preprocessor

(Препроцессор Гипертекста)". Синтаксис языка берет начало из C, Java и Perl. PHP достаточно прост для изучения. Заметим, что все php-скрипты выполняются на стороне сервера, то есть весь исходный код веб-приложения останется на сервере, клиенту будет выдана лишь сгенерированная страница – htmlфайл или другой результат выполнения скрипта.

У нас уже установлен LAMP (это комплект Linux, Apache, MySQL, PHP), теперь создадим свои сайты. Для начала, проверим, работает ли Apache. Выполните команду ifconfig, нужный ip будет находиться в eth0, строка inet addr. Введите полученный ip в адресную строку браузера (в ОС

Windows –Internet Explorer), обязательно отключите подключение к прокси-серверам, нажмите Enter. Если Apache работает правильно, то на экране вы увидите «It works».

По умолчанию, директория для файлов сайта находится в /var/www. Чтобы получить доступ к этой директории нужны права root. Для того, чтобы создать свой сайт, например, в /home/user/www/ нужно выполнить следующие действия:

1.Создать копию стандартного конфиг-файл сайта

(/etc/apache2/sites-available/default) и переименовать его в(/etc/apache2/sites-available/mysite).

sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mysite

2.Открыть новый конфиг-файл в текстовом редакторе

nano.

sudo nano /etc/apache2/sites-available/mysite

3.Изменить параметр DocumentRoot на новое месторасположение сайта. (/home/user/www/)

4.Изменить параметр Directory, заменив <Directory /var/www/> на <Directory /home/user/www/>. Сохраните файл.

54

5.Теперь надо деактивировать старый сайт(default) и включить новый(mysite). Ubuntu содержит две утилиты для помощи в этом: a2ensite (включение сайта) и a2dissite (отключение сайта). Обе команды используются с параметрами.

sudo a2dissite default && sudo a2ensite mysite

6.Перезапустим Apache2:

sudo /etc/init.d/apache2 reload

7. Создадим файл /home/user/www/index.html,

содержащий какую-либо строку и проверим доступ к нему из ОС Windows, набрав в адресной строке браузера: “ip/index.html”. ip узнайте с помощью команды ifconfig.

3. ВИРТУАЛЬНАЯ ПАМЯТЬ

3.1. Понятие виртуальной памяти

Разработчикам программного обеспечения часто приходится решать проблему размещения в памяти больших программ, размер которых превышает объем доступной оперативной памяти. Один из вариантов решения данной проблемы – организация структур с перекрытием – рассмотрен в предыдущей лекции. При этом предполагалось активное участие программиста в процессе формирования перекрывающихся частей программы. Развитие архитектуры компьютеров и расширение возможностей операционной системы по управлению памятью позволило переложить решение этой задачи на компьютер. Одним из главных достижений стало появление виртуальной памяти (virtual memory). Впервые она была реализована в 1959 г. на компьютере "Атлас", разработанном в Манчестерском университете.

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

55

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

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

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

1.Программа не ограничена объемом физической памяти. Упрощается разработка программ, поскольку можно задействовать большие виртуальные пространства, не заботясь

оразмере используемой памяти.

2.Поскольку появляется возможность частичного помещения программы (процесса) в память и гибкого перераспределения памяти между программами, можно разместить в памяти больше программ, что увеличивает загрузку процессора и пропускную способность системы.

3.Объем ввода-вывода для выгрузки части программы на диск может быть меньше, чем в варианте классического свопинга, в итоге каждая программа будет работать быстрее.

56

Таким образом, возможность обеспечения (при поддержке операционной системы) для программы "видимости" практически неограниченной (характерный размер для 32-разрядных архитектур 232 = 4 Гбайт) адресуемой пользовательской памяти (логическое адресное пространство) при наличии основной памяти существенно меньших размеров (физическое адресное пространство) – очень важный аспект.

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

Например, 16-разрядный компьютер PDP-11/70 с 64 Кбайт логической памяти мог иметь до 2 Мбайт оперативной памяти. Операционная система этого компьютера тем не менее поддерживала виртуальную память, которая обеспечивала защиту и перераспределение основной памяти между пользовательскими процессами.

Напомним, что в системах с виртуальной памятью те адреса, которые генерирует программа (логические адреса), называются виртуальными, и они формируют виртуальное адресное пространство. Термин " виртуальная память " означает, что программист имеет дело с памятью, отличной от реальной, размер которой потенциально больше, чем размер оперативной памяти.

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

57

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

Любая из трех ранее рассмотренных схем управления памятью – страничной, сегментной и сегментно-страничной – пригодна для организации виртуальной памяти. Чаще всего используется cегментно-страничная модель, которая является синтезом страничной модели и идеи сегментации. Причем для тех архитектур, в которых сегменты не поддерживаются аппаратно, их реализация – задача архитектурно-независимого компонента менеджера памяти.

Сегментная организация в чистом виде встречается редко.

3.2. Функции ОС по управлению памятью

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

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

58

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

Функциями ОС по управлению памятью в мультипрограммной системе являются:

отслеживание свободной и занятой памяти;

выделение памяти процессам и освобождение памяти по завершении процессов;

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

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

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

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

различные таблицы распределения ресурсов, буферы,

59

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

Защита памяти – это еще одна важная задача операционной системы, которая состоит в том, чтобы не позволить выполняемому процессу записывать или читать данные из памяти, назначенной другому процессу. Эта функция, как правило, реализуется программными модулями ОС в тесном взаимодействии с аппаратными средствами.

3.3. Стратегии управления виртуальной памятью

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

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

60