Организация современного компьютера. Раздел ПМ 1. Разработка программных модулей системного программного обеспечения

Раздел ПМ 1. Разработка программных модулей системного программного обеспечения

Лекция №1

Тема 1.1. Введение

Вопросы для самостоятельного изучения

Организация современного компьютера

1. Внешний вид типичного современного компьютера

2. Структурная схема компьютера

3. Место ассемблера

4. Историческая ретроспектива процессоров Intel

путь: сервер\user\системное программирование\материал для самостоятельного обучения.docx

Системное программирование (или программирование систем) — подраздел программирования, заключающийся в работе над системным программным обеспечением.

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

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

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

  • программист должен учитывать специфику аппаратной части и другие, часто уникальные, свойства системы в которой функционирует программа, использовать эти свойства, например, применяя специально оптимизированный для данной архитектуры алгоритм;
  • часто используется низкоуровневый язык программирования или такой диалект языка программирования, который:
    • позволяет функционирование в окружении с ограниченным набором системных ресурсов;
    • работает максимально эффективно и имеет минимальное запаздывание по времени завершения;
    • имеет маленькую библиотеку времени выполнения (RTL) или не имеет её вообще;
    • позволяет прямое управление (прямой доступ) к памяти и управляющей логике;
    • позволяет делать ассемблерные вставки в код.
  • отладка программы может быть затруднена при невозможности запустить её в отладчике из-за ограничений на ресурсы, поэтому может применяться компьютерное моделирование для решения этой проблемы.

Подводя итог, можно утверждать, что СИСТЕМНЫМ следует называть подраздел программирования как вида инженерной деятельности, в котором программист использует специфические и часто уникальные свойства и возможности ВНУТРЕННИХ УРОВНЕЙ вычислительной системы.

Системное программирование отличается от прикладного, что обычно приводит к специализации программиста в одном из них.

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

Разберемся, в чем заключается его суть. Если обычное прикладное программирование это конструирование программ, которые будут предоставлять пользователям определенные услуги, например, базы данных по сотрудникам, справочники, оболочки для обработки текстов и прочее, то системное программирование – это программирование сервисов непосредственно для аппаратного обеспечения, то есть вы пишите программу напрямую привязанную к аппаратуре. Самые знаменитые программы такого плана известны всем пользователям. Это классическая дефрагментация диска, программы поиска «битых» секторов и т.д.

Спектр знаний, которые требуются от программиста, в данном случае значительно шире, чем при прикладном программировании. Программист-системщик должен четко знать архитектуру ПК, причем не в общем виде, а в принципиальном, на уровне схем. Он должен четко представлять структуру и принцип действия машинных команд. Анализируя имеющиеся данные, программист должен уметь адаптировать и подбирать алгоритмы именно под данное аппаратное обеспечение. Как правило, системное программирование базируется на языках низкого уровня, таких как Ассемблер. Это дает возможность эффективного программирования, обеспечивает прямой доступ к памяти и логическим командам ПК. Следовательно, знание языков низкого уровня для такого программиста обязательно. Кроме того, он должен хорошо знать структуру современных системных оболочек и не только классической Windows, но и Linux, Unix и др.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: