Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пи_ответы.docx
Скачиваний:
8
Добавлен:
22.01.2023
Размер:
425.73 Кб
Скачать

5. Профессиональные и этические требования к специалистам по программному обеспечению.

С.Н. Карпенко — Введение в программную инженерию

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

  • Конфиденциальность. Она должна соблюдаться в отношении работодателя независимо от того, подписывалось ли ими соответствующее соглашение.

  • Компетентность. Не нужно завышать свой истинный уровень компетентности и браться за работу, которая этому уровню не соответствует.

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

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

В разработке этических обязательств ведущую роль играют профессиональные сообщества. Например, общества ACM (Association for Computing Machinery), IEEE (Institute of Electrical and Electronic Engineers) и BCS (British Computer Society) совместно разработали кодекс этики и профессиональной практики программной инженерии (IEEE-CS/ACM Software Engineering Code of Ethics and Professional Practices). Данный кодекс включает в себя восемь ключевых принципов:

  1. Общество — программные инженеры действуют в соответствии с интересами общества.

  2. Клиент и работодатель — программисты действуют в их интересах, соответственно общественным интересам.

  3. Продукт — стремление к высочайшему профессиональному стандарту разрабатываемых продуктов и их модификаций.

  4. Суждение — честность и независимость в своих профессиональных суждениях.

  5. Менеджмент — менеджеры должны руководствоваться этическим подходом к руководству разработкой и сопровождением ПО.

  6. Профессия — стремление к улучшению целостности и репутации своей профессии в соответствии с интересами общества.

  7. Коллеги — честность по отношению к своим коллегам и всяческая их поддержка.

  8. Личность — постоянное изучение практики своей профессии и продвижение этического подходка к практике своей профессии.

Вычислительные машины, системы и сети

2. Функциональная схема типового процессора.

https://www.redhat.com/sysadmin/cpu-components-functionality

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

АЛУ осуществляет, в сущности, работу компьютера, а именно арифметические и логические операции. Регистры A и B хранят входные данные двух операндов. Accumulator получает результат работы ALU, который затем помещается в кэш, который резервируется программой заранее. Также АЛУ может совершать операцию вычисления адреса в памяти, например для загрузки по этому адресу новых инструкций. Рассчитанный адрес инструкции будет помещён в instruction pointer register. Instruction Register хранит инструкцию для выполнения. Она загружается из области памяти, на которую указывает Instruction Pointer register (он инкрементируется после загрузки каждой новой функции, чтобы быть загрузить по адресу след. инструкцию программы).

Один или несколько слоёв кэша позволяют хранить необходимые для вычислений данные, чтобы не обращаться каждый раз к медленной RAM памяти. L2 и L3 кэш (1МБ, 32МБ) получают данные из RAM, которые могут понадобиться в дальнейших вычислениях, а L1 кэш — самый близкий к АЛУ — держит непосредственно входные данные для операции. L1i – для инструкций, L1d – для данных (64 КБ, 512 КБ).

MMU — блок управления памяти, который управляет потоком данных из ОЗУ в ЦП, а также предоставляет защиту памяти в многозадачных средах (множество процессов) и преобразование виртуальных адресов памяти в реальные физические.

Control Unit (управляющее устройство) использует тактовую частоту процессора, определяемую в CPU Clock для синхронизации работы всех блоков ЦП при помощи сигналов синхронизации (timing signals).

Работа Процессора и АЛУ подробнее:

Работа происходит в цикле, который управляется УУ и синхронизируется CPU clock. Цикл называется CPU instruction cycle (цикл инструкции). Каждая итерация состоит из трёх основных этапов: Fetch  Decode ==> Execute.

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

Несмотря на быструю и логичную работу CPU, его скорость можно увеличить некоторыми стратегиями. Одной из таких является «перегрузка цикла инструкций». Она заключается в Постоянном использовании всех блоков ЦП, чтобы избегать их простоя. Например, производить получение новых данных в кэш сразу после декодирования текущей инструкции. А как только это произошло сразу увеличить значение указателя на инструкцию. Таким образом происходит некое наложение циклов работы друг на друга.

Ещё одна стратегия ускорения — многопоточность (Hyper Threading). Все современные ядра, поддерживающие эту технологию, включают в себя дополнительные указатели на инструкцию и регистры инструкции, которые вводят дополнительные потоки команд, которые занимают АЛУ для обработки своих данных в тот момент, когда другой поток остановился в ожидании ввода или новых данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]