Программные продукты и пакеты
Понятно, что на всякую прикладную область утилит не напасешься. Чем сложнее и дальше от инструментальной области задача, тем меньше смысла включать инструменты ее решения в систему. Тем не менее, раз уж задача есть, значит, кому-то придется ее решать. Такие специализированные наборы программ хотелось бы иметь если не в самой системе, то где-то "рядом", чтобы, как только появится пользователь со своими задачами, предоставить ему средства их решения. И уж конечно метаинструментарий - средства изготовления таких инструментов - в системе должен быть (метаинструментарий - это средства программирования и вообще разработки программ: языки программирования, общие, интерфейсные и предметно-ориентированные библиотеки, RAD - средства быстрой разработки и т. п.). Такой набор программ для решения прикладных задач называется программным продуктом.
Для того чтобы оперативно добавлять программный продукт в систему или удалять его оттуда, необходимо заранее договориться о размещении в файловой системе всех входящих в него файлов. Запомнив каждый файл с полным именем, мы получим архив, целиком определяющий расположение программного продукта в системе. Такой архив в UNIX называется пакетом. Мы можем устанавливать пакет в систему и удалять его, зная, что записываем и удаляем файлы, принадлежащие только ему. В пакете могут храниться не только программные продукты, но и вообще любые "кирпичики", из которых можно складывать систему: утилиты, драйверы, документация, шрифты и все остальное. Если при установке или удалении пакета нужно проделать какие-нибудь действия (например, зарегистрировать устанавливаемый шрифт), к нему прилагаются установочный сценарий и сценарий удаления.
Система, настроенная на решение определенных задач, не обязательно должна содержать все возможные пакеты. Как правило, в дистрибутив UNIX входит несколько тысяч пакетов разного назначения и объема, от утилиты, сообщающей, в какой фазе сегодня находится луна, до издательской системы. В действительности их устанавливают несколько сотен.
Процессы
В роли задач в UNIX выступают процессы. Процесс – это программа, запущенная пользователем, которая находится в памяти и, как полагается задаче, потребляет ресурсы: выполняется, требует памяти, обменивается данными с системой, внешними устройствами и другими процессами. При запуске процесс получает уникальный идентификатор процесса (Process IDentifier, PID), по которому он становится доступен другим процессам и планировщику. Планировщик процессов в UNIX устроен сложнее. Наше описание предельно упрощено, а полностью разобраться в планировании процессов поможет. Главное отличие планировщика UNIX заключается в том, что каждая задача из очереди работает в течение всего отведенного ей промежутка времени, только если ей есть чем заняться. Если задача к этому времени работать не может (например, ожидает завершения операции ввода/вывода, или сигнала, или освобождения какого-либо ресурса), она из начала очереди перемещается в конец "очереди для тех, кто без очереди" или очереди "спящих" задач. Как только какая-нибудь задача из очереди спящих просыпается, ей тут же отводится место в начале обычной очереди. Таким образом максимально сокращается время простоя (idle) системы, если, конечно, выполняемых задач достаточно для того, чтобы полностью ее загрузить. Сверх того процессы в UNIX могут иметь разные приоритеты, сообразно которым идет планирование очередного запуска процесса (например, полностью отработав свой промежуток времени, процесс может помещаться не в конец очереди).
Достарыңызбен бөлісу: |