МИНОБРНАУКИ РОССИИ
федеральное государственное бюджетное образовательное учреждение высшего образования
«Алтайский государственный университет»

Системное программное обеспечение

рабочая программа дисциплины
Закреплена за кафедройКафедра вычислительной техники и электроники
Направление подготовки09.03.01. Информатика и вычислительная техника
ПрофильИнформатика и вычислительная техника
Форма обученияОчная
Общая трудоемкость6 ЗЕТ
Учебный план09_03_01_ИиВТ-2020
Часов по учебному плану 216
в том числе:
аудиторные занятия 86
самостоятельная работа 103
контроль 27
Виды контроля по семестрам
экзамены: 7

Распределение часов по семестрам

Курс (семестр) 4 (7) Итого
Недель 18
Вид занятий УПРПДУПРПД
Лекции 22 22 22 22
Лабораторные 64 64 64 64
Сам. работа 103 103 103 103
Часы на контроль 27 27 27 27
Итого 216 216 216 216

Программу составил(и):
к.ф.-м.н., доцент, Грязнов А.С.

Рецензент(ы):
к.ф.-м.н., доцент, Мансуров А.В.

Рабочая программа дисциплины
Системное программное обеспечение

разработана в соответствии с ФГОС:
Федеральный государственный образовательный стандарт высшего образования - бакалавриат по направлению подготовки 09.03.01 Информатика и вычислительная техника (приказ Минобрнауки России от 19.09.2017 г. № 929)

составлена на основании учебного плана:
09.03.01 Информатика и вычислительная техника
утвержденного учёным советом вуза от 30.06.2020 протокол № 6.

Рабочая программа одобрена на заседании кафедры
Кафедра вычислительной техники и электроники

Протокол от 28.06.2023 г. № 110/22-23
Срок действия программы: 20232024 уч. г.

Заведующий кафедрой
к.ф-м.н., Пашнев Владимир Валентинович, доц., зав. кафедрой "Вычислительной техники и электроники"


Визирование РПД для исполнения в очередном учебном году

Рабочая программа пересмотрена, обсуждена и одобрена для
исполнения в 2023-2024 учебном году на заседании кафедры

Кафедра вычислительной техники и электроники

Протокол от 28.06.2023 г. № 110/22-23
Заведующий кафедрой к.ф-м.н., Пашнев Владимир Валентинович, доц., зав. кафедрой "Вычислительной техники и электроники"


1. Цели освоения дисциплины

1.1.Цель изучения дисциплины – формирование у будущих специалистов теоретических знаний и практических навыков по использованию современных компьютеров и программного обеспечения для решения широкого спектра задач в различных областях, а именно:
• ознакомить студентов с основами архитектуры и структуры современных операционных систем и системного программного обеспечения;
• привить навыки работы с языками программирования для создания системных программ;
• изложить основные принципы проектирования и устройства системных программ.

2. Место дисциплины в структуре ООП

Цикл (раздел) ООП: Б1.В.03

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

ПК-4Способен разрабатывать компоненты системных программных продуктов;
ПК-4.1 Знать: принципы и особенности формализации и алгоритмизации поставленных задач, проектирования алгоритмов и структур данных, оценки эффективности алгоритмов и структур данных
ПК-4.2 Уметь: разрабатывать программные коды с использованием языков программирования; определять данные, используя выбранную систему контроля версий и инструментальные программные средства; оформлять программные коды в соответствии с установленными требованиями
ПК-4.3 Владеть: навыками процедуры проверки работоспособности и измерения характеристик программного обеспечения, проверки работоспособности программного обеспечения,оптимизации программного кода
В результате освоения дисциплины обучающийся должен
3.1.Знать:
3.1.1.о науке и ее роли в развитии информационных технологий;
об основах организации современных операционных систем и структуре системных программ;
о технологиях сбора, обработки, передачи и хранения информации;
о современных средах разработки системных программ на различных языках для разнообразных аппаратных платформ.
3.2.Уметь:
3.2.1.• иметь целостное представление о науке и ее роли в развитии информационных технологий;
• знать основы организации современных операционных систем и уметь проектировать системные программы;
• знать технологии сбора, обработки, передачи и хранения информации;
• знать современнымые среды разработки системных программ на различных языках для разнообразных аппаратных платформ и иметь практические навыки работы с ними.
3.3.Иметь навыки и (или) опыт деятельности (владеть):
3.3.1.работы с технологиями сбора, обработки, передачи и хранения информации;
проектирования системных программ;
работы с современнымы средами разработки системных программ на различных языках для разнообразных аппаратных платформ.

4. Структура и содержание дисциплины

Код занятия Наименование разделов и тем Вид занятия Семестр Часов Компетенции Литература
Раздел 1. Введение. Предмет системное программное обеспечение.
1.1. Введение. История создания ОС ЭВМ. Структура системного программного обеспечения. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
1.2. История создания распространенных ОС. Структура СПО современных ОС. Сам. работа 7 4 ПК-4.1 Л2.1, Л1.1
Раздел 2. Распределенные системы. Процессы, потоки, коммуникация и координация.
2.1. Процессы. Структуры действий как процессы. Структурирование процессов. Трассы. Разложение процессов на подпроцессы. Действия в процессах как переходы между состояниями. Представление системы через множество процессов. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
2.2. Сети Петри – графический метод описания. Формальный метод описания через агентов. Описание через формулы логики предикатов. Синхронизация и координация в системах. Языки программирования для описания взаимодействующих систем. Коммуникации и обмен сообщениями. Структуры данных и параллельные алгоритмы. Потоки ввода-вывода. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
2.3. Различные способы описаний системных процессов. Примеры представлений системных процессов. ЯП для описания взаимодействия процессов в системе. Сам. работа 7 19 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
Раздел 3. Ресурсы современных операционных систем. Системные вызовы
3.1. Программирование с использованием системных вызовов. Организация адресного пространства процессов в различных ОС. Объекты ядра. Управление процессами. Многопоточные программы. Управление потоками средствами системных вызовов. Работа с файлами средствами системных вызовов. Лабораторные 7 64 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
3.2. Структура системных вызовов распространенных ОС. Методы работы с системными ресурсами распространенных ОС. Работа с системными объектами в распространенных ОС. Сам. работа 7 20 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
Раздел 4. Формальные языки и грамматики. Трансляция и интерпретация программ
4.1. Формальные языки и способы их задания. Грамматики и их классификация. Цепочки вывода. Однозначность и эквивалентность грамматик. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
4.2. Основные принципы построения трансляторов. Транслятора, компиляторы и интерпретаторы – общая схема работы. Многопроходные и однопроходные системы. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
4.3. Современные компиляторы и интерпретаторы. Компиляторы с языков высокого уровня. Интерпретаторы и их особенности. Макроязыки и макрогенерация. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
4.4. Примеры задания формальных языков и грамматик. Примеры и работа распространенных компиляторов. Примеры и работа распространенных интерпретаторов. Примеры работа известных вам макроязыков. Сам. работа 7 20 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
Раздел 5. Основные принципы построения трансляторов и интерпретаторов
5.1. Лексические анализаторы. Их назначение и принципы построения. Построение лексических анализаторов на основе регулярных языков и грамматик. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
5.2. Синтаксические анализаторы. Их назначение и принципы работы. Построение синтаксических анализаторов. Синтаксический анализ для различных типов грамматик. Синтаксически управляемая трансляция. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
5.3. Генерация и оптимизация кода. Семантический анализ его принципы, назначение и этапы. Распределение памяти. Методы генерации и оптимизации кода. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
5.4. Примеры построения лексических анализаторов. Программное обеспечение для построения лексических анализаторов. Примеры построения синтаксических анализаторов. Примеры генераторов кода. Сам. работа 7 20 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
Раздел 6. Инструментальные среды для создания системных программ
6.1. Современные системы программирования. Структура системы программирования. Интегрированные среды разработки программ. Функционирование системы программирования. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
6.2. Текстовые редакторы, компиляторы, компоновщики программ. Загрузчики и отладчики программ. Библиотеки подпрограмм. Архитектура современных системных приложений. Архитектура «клиент-сервер». Языки запросов. Серверы. Приложения с многоуровневой архитектурой. Лекции 7 2 ПК-4.1 Л2.1, Л1.1
6.3. Проанализировать работу известных вам систем программирования. Привести примеры и описать известные вам интегрированные среды разработки. Привести примеры построения систем с архитектурой «клиент-сервер». Привести примеры языков запросов. Сам. работа 7 20 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1
Раздел 7. Аттестация
7.1. Экзамен 7 27 ПК-4.1, ПК-4.2, ПК-4.3 Л2.1, Л1.1

5. Фонд оценочных средств

5.1. Контрольные вопросы и задания для проведения текущего контроля и промежуточной аттестации по итогам освоения дисциплины
Оценочные материалы для текущего контроля по разделам и темам дисциплины в полном объеме размещены в онлайн-курсе на образовательном портале «Цифровой университет АлтГУ» – https://portal.edu.asu.ru/course/view.php?id=6822

ОЦЕНКА СФОРМИРОВАННОСТИ КОМПЕТЕНЦИИ ПК-4: Способен разрабатывать компоненты системных программных продуктов;

ПРИМЕРЫ ЗАДАНИЙ ЗАКРЫТОГО ТИПА

1. Что определяет системный интерфейс Linux?
a) Бинарный интерфейс приложений
b) Интерфейс программирования приложений
c) Оба варианта верны
d) Ни один из вариантов не верен
Ответ: a)

2. Какие сущности взаимодействуют для предоставления системного интерфейса Linux?
a) Ядро Linux, библиотека GNU С, компилятор GNU С
b) Ядро Linux, ядро Windows, ядро macOS
c) Библиотека GNU С, компилятор GNU С, библиотека Visual C++
d) Ядро Linux, библиотека C++, компилятор Java
Ответ: a)

3. Какой набор компиляторов используется для работы с системным интерфейсом Linux?
a) GCC
b) Visual Studio
c) Clang
d) Intel C++ Compiler
Ответ: a)

4. Что представляют собой системные вызовы в системном программировании для Linux?
a) Вызовы функций из ядра к пользовательскому пространству
b) Вызовы функций из пользовательского пространства к ядру
c) Вызовы функций между различными приложениями
d) Вызовы функций для работы с графическим интерфейсом
Ответ: a)

5. Какой основной смысл у системного вызова в системном программировании для Linux?
a) Запросить у операционной системы определенную службу или ресурс
b) Выполнить математические операции в пользовательском пространстве
c) Использовать системные библиотеки для работы с графическим интерфейсом
d) Управлять сетевым соединением и передачей данных
Ответ: a)

2. В сравнении с Linux, сколько предположительно задействуются системных вызовов в операционной системе Microsoft Windows?
a) Около 100
b) Около 300
c) Около 500
d) Около 1000
Ответ: b)


7. Почему приложениям пользовательского пространства нельзя разрешать непосредственно исполнять код ядра?
a) Для обеспечения безопасности и надежности
b) Для повышения производительности
c) Для улучшения пользовательского интерфейса
d) Для сокращения объема кода
Ответ: a)

8. Как пользовательские приложения "сигнализируют" ядру о требовании активировать системный вызов?
a) Отправляют специальный сигнал ядру
b) Вызывают системное прерывание (trap)
c) Отправляют запрос на сервер ядра
d) Используют специальный интерфейс ядра
Ответ: d)

9. Что происходит после активации системного вызова ядром?
a) Пользовательское приложение получает полный доступ к коду ядра
b) Пользовательское приложение может выполнить любой код
c) Пользовательское приложение может выполнить только код, разрешенный ядром
d) Пользовательское приложение будет автоматически завершено
Ответ: c)

10. Какое расшифровывание имеет акроним gcc?
a) GNU Compiler Collection
b) GNU C Compiler
c) GNU Collection of Compilers
d) GNU Compiler for C
Ответ: c)

11. Какой язык программирования изначально поддерживался компилятором gcc?
a) C
b) C++
c) Java
d) Python
Ответ: a)

12. Что означает акроним GNU в названии gcc?
a) General Naming Unit
b) GNU's Not Unix
c) General Name for Unix
d) GNU Named Utility
Ответ: b)

13. Что представляют собой два отдельных множества определений и описаний на системном уровне, влияющих на переносимость?
a) API и ABI
b) GUI и CLI
c) SDK и IDE
d) TCP и UDP
Ответ: a)

14. Какая абстракция является базовой в Linux?
a) Файл
b) Дескриптор
c) Системный вызов
d) Процесс
Ответ: a)

15. Как управляется дескриптор открытого файла в ядре Linux?
a) Строкой
b) Булевым значением
c) Целым числом
d) Символом
Ответ: c)

КРИТЕРИИ ОЦЕНИВАНИЯ ВОПРОСОВ ЗАКРЫТОГО ТИПА
Каждое задание оценивается 1 баллом. Оценивание КИМ теоретического характера в целом:
"зачтено" - верно выполнено не менее 50% заданий; "не зачтено" - верно выполнено не более 50% заданий
"отлично" - верно выполнено 85..100% заданий; "хорошо" - верно выполнено 70..84% заданий; "удовлетворительно" - верно выполнены 50..69% заданий; "неудовлетворительно" - верно выполнены менее 50% заданий

ПРИМЕРЫ ЗАДАНИЙ ОТКРЫТОГО ТИПА
1. Какие основные краеугольные камни можно выделить в системном программировании для Linux?
Ответ: В системном программировании для Linux можно выделить три основных краеугольных камня: системные вызовы, библиотеку C и компилятор C

2 . Какой смысл в операционной системе Linux имеют системные вызовы?
Ответ: Смысл системного вызова — запросить у операционной системы определенную службу или ресурс.

3. От чего зависит максимальное количечтво системных вызовов операционных систем?
Ответ: Максимальное количество системных вызовов зависит от вида операционной системы. Например в Linux реализуется наименшее количество системных вызовов — около 300, тогда как в ОС Windows из больше 1000. Также максимальное количество системных вызовов зависит и от архитектуры.

4. Как пользовательское приложение имполняет код ядра?
Ответ: Чтобы выполнить код на стороне ядра пользовательское приложение использует специальный механизм, с помощью которого пользовательское приложение сигнализирует ядру о требовании активировать системный вызов. После этого ядро может разрешить выполнить код путём вызова системного прерывания.

5. Кокому из стандартов соответвует ОС Linux?
Ответ: Считается, что Linux также соответствует POSIX.1 и SUSv3,
но, поскольку никакой официальной сертификации POSIX или SUS не проводилось, нельзя сказать, что Linux официально соответствует POSIX или SUS. В различных дистрибутивах Linux многие компоненты операционной системы определяются в LSB (Linux Standard Base). LSB дополняет POSIX и SUS, а также добавляет собственные стандарты.. Большинство производителей Linux в той или иной степени придерживаются LSB.

6. Как правильно расшифровывается GCC?
Ответ: Изначально gcc представляла собой версию cc (компилятора C) для GNU. Соответственно gcc расшифровывалась как GNU C Compiler. Однако впоследствии добавилась поддержка других языков, поэтому сегодня gcc служит общим названием всего семей­ства компиляторов GNU - GNU Compiler Collection.

7. Как связан компилятор GCC и UNIX-подобные операционные системы?
Ответ: Компилятор, используемый в UNIX-подобных системах, в частности в Linux, имеет огромное значение для системного программирования, поскольку помогаетвнедрять стандарт языка C

8. В чем различие между API и ABI?
Ответ: Задача API — просто гарантировать, что, если оба компонента ПО воспользуются этим API, они будут совместимы на уровне исходного кода.
ABI отвечает за совместимость на двоичном уровне, т.е .фрагмент объектного кода будет функционировать в любой системе с таким же ABI без необходимости перекомпиляции.

9. Перечислте наиболее важные абстрацкии Linux?
Ответ: Файл — это самая простая и базовая абстракция в Linux. Linux придерживается философии «все есть файл». Чтобы получить доступ к файлу, его сначала нужно открыть.

10. Для чего нужен дескриптор файла?
Ответ: Файлы можно открывать для чтения, записи или того и другого сразу. На открытый файл указывает уникальный дескриптор, отображающий метаданные, ассоциированные с открытым файлом, обратно на сам этот файл. К метаданным относятся, в частности, файловая позиция и режимы доступа.

11. Какое количество файловых дескрипторов существует а ОС Linux?
Ответ: Для каждого процемма ядро поддерживает список открытых файлов, называемый файловой таблицей. По умолчанию максимальное значение таблицы равно 1024 , но при необходимости его можно повысить до 1 048 576. Файловые дескрипторы не могут иметь отрица­ тельных значений, поэтому значение –1 часто применяется для индикации ошибки, полученной от функции.

12. Какое минимальное количество файловых дескрипротов присуще процессу?
Ответ: Каждый процесс традиционно имеет не менее трех открытых файловых дескрипторов: 0, 1 и 2, если, конечно, процесс явно не закрывает один из них. Файловый дескриптор 0 соответствует стандартному вводу (stdin), дескриптор 1 — стандарт- ному выводу (stdout), дескриптор 2 — стандартной ошибке (stderr).

13. Что такое процесс в ОС Linux?
Ответ: Процессы — это объектный код, находящийся в процессе исполнения: активные, работающие программы, а так же данные, ресурсы, состояния и витуализованный процессор. Процесс ассоциирован с различными системными ресурсами, которые выделяются и управляются ядром.

14. Как процессы осуществляют доступ к персурсам?
Ответ: Как правило, процессы запрашивают ресурсы и манипулируют ими только посредством системных вызовов.

15. Что относится к ресурсам, входящим в состав процесса?
Ответ: К ресурсам относятся таймеры, ожидающие сигналы, открытые файлы, сетевые соединения,аппаратное обеспечение и механизмы межпроцессного взаимодействия.

16. Какая информация о процессе сохраняется в дескрипторе процесса в ядре?
Ответ: Ресурсы процесса, а также относящиеся к нему данные и статистика сохраняются внутри ядра в дескрипторе процесса.

17. Как выглядят ресурсы ЭВМ внутри каждого процесса?
Ответ: Процесс — это абстракция виртуализации. Каждый процесс получает отдельное линейное адресное про­странство, как если бы он один контролировал всю память, доступную в системе.

18. Что включает в себя понятие поток в сисмемном программировании?
Ответ: Поток — это абстракция Linux, как единица активности в процессе, отвечающая за выполнение кода и под­держку процесса в рабочем состоянии.

19. Из скольки потоков могут состоять процессы?
Ответ: Большинство процессов состоят только из одного потока и именуются однопоточными. Если процесс содержит несколько потоков, его принято называть многопоточным.

20. Что включает в себя понятие сигнал в сисмемном программировании?
Ответ: Сигналы — это механизм, обеспечивающий односторонние асинхронные уведом­ ления. Сигнал может быть отправлен от ядра к процессу, от процесса к другому процессу либо от процесса к самому себе. Обычно сигнал сообщает процессу, что произошло какое-либо событие, например возникла ошибка сегментации или пользователь нажал Ctrl+C.


КРИТЕРИИ ОЦЕНИВАНИЯ ВОПРОСОВ ОТКРЫТОГО ТИПА
"Отлично"/зачтено. Ответ полный, развернутый. Суть передана исчерпывающе и точно, принятая терминология полностью сохранена. Ошибок нет.
"Хорошо"/зачтено. Ответ полный, но краток. Суть передана точно, но имеются неточности в использовании терминологии. Ошибки незначительны.
"Удовлетворительно"/зачтено. Ответ неполный. Значительные неточности в применении терминологии. Студент владеет частью материала.
"Неудовлетворительно"/не зачтено. Ответа нет, либо он не раскрывает сути требуемого. Студент не владеет материалом.
5.2. Темы письменных работ для проведения текущего контроля (эссе, рефераты, курсовые работы и др.)
Не предусмотрены
5.3. Фонд оценочных средств для проведения промежуточной аттестации
Промежуточная аттестация заключается в проведении в конце семестра экзамена по всему курсу. Экзамен проводится в устной форме по билетам. В билет входит 2 вопроса: 1 вопрос теоретического характера и 1 вопрос практико-ориентированного характера.

ВОПРОСЫ ТЕОРЕТИЧЕСКОГО ХАРАКТЕРА
1 Перечислите и охарактеризуйте средства аппаратной поддержки функций ОС.
2 Механизм виртуальной памяти и его реализация в процессорах фирмы Интел.
3 Реализация механизма системного вызова в ОС. Таблица системных вызовов и методы ее
модификации в ОС LINUX.
4 Понятие процесса и потока: раскройте и охарактеризуйте.
5 Многослойная структура ядра: принципы построения современных ОС.
6 Перечислите и охарактеризуйте основные подсистемы ядра ОС LINUX.
7 Перечислите и охарактеризуйте основные классы устройств и модулей ядра ОС LINUX.
8 Программная структура модулей ядра. Загрузка и выгрузка модулей. Функции init_module и
cleanup_module.
9 Реализация пользовательского режима и режима ядра в системе LINUX.
10 Сравните модуль ядра и модуль приложения пользовательского режима: что общего и в чем разница
11 Опишите процесс динамической компоновки модулей ядра с действующим ядром. Утилиты insmod,
modprobe и rmmod.
12 Охарактеризуйте механизм проверки версии модулей ядра.
13 Подсчет ссылок на модули ядра. Использование макросов MOD_INC_USE_COUNT,
MOD_DEC_USE_COUNT и MOD_IN_USE
14 Драйверы символьных устройств. Старший (major) и младший (minor) номера устройств.
15 Динамическое выделение старших номеров устройств.
16 Регистрация драйвера символьного устройства и удаление драйвера из системы.
17 Перечислите основные виды файлов в ОС LINUX и охарактеризуйте их.
18 Структура file_operations: основные члены и назначение. Использование расширенного синтаксиса
для ее инициализации
19 Структура file: члены и назначение
20 Методы open и release структуры file_operations
21 Методы read и write структуры file_operations
22 Работа с пользовательским адресным пространством. Функции copy_to_user, copy_from_user,
access_ok, get_user, put_user и др
23 Функции ввода-вывода пользовательского режима и их связь с обработчиками драйвера устройства
24 Состояние гонки в режиме ядра. Использование семафоров в режиме ядра
25 Функция управления ioctl: ее описание в структуре file_operations и прототип в режиме ядра
26 Генерирование номера команды функции ioctl. Макросы _IOW, _IO, _IOR
27 Операции блокируемого ввода-вывода. Использование очередей
28 Реализация разграничения доступа на уровне драйвера устройства
29 Отладка модулей ядра с помощью функции printk. Управление кольцевым буфером сообщений ядра
30 Выделение и освобождение памяти в режиме ядра. Особенности и отличие от пользовательского
режима
31 Файловая система /proc. Создание файлов для чтения и файлов чтения/записи
32 Таймеры ядра. Инициализация таймера, его использование и удаление
33 Использование средств tasklet. Особенности и отличие от таймеров ядра
34 Механизм очередей Workqueue
35 Обработка прерываний. Установка и удаление обработчика прерываний
36 Назначение линии IRQ обработчику прерывания
37 Механизм обработки прерываний в ОС LINUX
38 Верхняя и нижняя половины обработчика прерываний.
39. В чем различия системных вызовов wait() и waitpid()?«Национальный исследовательский Томский политехнический университет»
40. Как реализованы операции P (post) и V (wait) для работы с семафорами в UNIX-системах?
41. В чем состоят основные различия бинарных семафоров и семафоров-счетчиков?
42. Почему необходимо использовать средства синхронизации процессов при использовании общей памяти?
43. Чем отличаются неименованные каналы от именованных? Как процесс может записать и прочитать данные из канала?
44. Что такое сокет и коммуникационный домен? Какие существуютмодели передачи данных при организации межпроцессного взаимодействия и в чем их различия?
45. В чем разница между потоком и процессом? Сколько потоков существует при старте процесса?
46. Чем отличаются наследуемые дескрипторы объектов от ненаследуемых? Почему при работе с каналами следует попеременно отключать и затем включать наследование дескрипторов канала?
47. Чем отличаются автоматически сбрасываемые события от событий, сбрасываемых вручную?
48. В чем состоят основные различия семафоров и мьютексов?
49. Как с помощью почтовых ящиков организовать взаимодействие процессов, находящихся на разных машинах? Какие ограничения при этом существуют?


ВОПРОСЫ ПРАКТИКО-ОРИЕНТИРОВАННОГО ХАРАКТЕРА
1. Напишите программу, которая порождает 10 процессов-потомков, каждый из которых завершает свое выполнение с кодом возврата, равным номеру своего процесса. После завершения всех потомков программа должна выводить сумму кодов возврата всех потомков.
2. Напишите программу, которая последовательно порождает 10 процессов-потомков (т. е. каждый порожденный потомок порождает следующего потомка). При этом завершение выполнения потомков должно производиться в обратном порядке.
3. Напишите программу, которая запускает процесс qprocess * и перенаправляет выводимые данные в файл.
4. Напишите две программы, одна из которых является сервером, а другая — клиентом. Программа-сервер получает в командной строке список строк и организует их в динамический список в общей памяти. Процесс-клиент считывает этот список из общей памяти и последовательно выводит его элементы на консоль.
5. Напишите программу, которая после своего запуска порождает пять процессов: процесс-родитель, время порождения которого совпадает с временем запуска программы, и четыре процесса-потомка. Процесс-родитель должен запустить ALARM-таймер на 20 с, по получению от него сигнала SIGALRM завершить выполнение потомков сигналом SIGKILL и завершить свое выполнение. Родитель должен посылать потомкам сигнал SIGALRM в цикле каждую секунду, а они — выводить в ответ на экран свой PID и количество полученных сигналов SIGALRM.
6. Посчитать общее количество символов, являющихся буквами во всех входных файлах. Полученный результат вывести в файл. Посчитать количество букв в нижнем регистре (строчных) во всех входных файлах, вывести полученные результаты в айл. Посчитать количество букв в верхнем регистре (заглавных), вывести полученныерезультаты в файл.Посчитать количество пробельных символов (пробелов и табуляций) во всех входныхфайлах. Результат вывести в файл.Посчитать количество символов, являющихся цифрами во всех входных файлах.Результат вывести в файл
7. Посчитать количество знаков препинания во всех входных файлах. Результат вывести в файл.
8. Найти среди входных файлов файл, содержащий максимальное количество символовявляющихся буквами, записать в выходной файл это количество и название этого файла. Еслитаких файлов несколько, записать все их имена.
9. Напишите программу, в которой два процесса общаются через pipe, выполняясовместно обработку данных из лабораторной работы No1. Родительский процесс сначалачитает информацию из входных файлов, производит необходимые вычисления, потом создаётпроцесс потомок, передаёт ему через pipe результаты и ждёт окончания процесса-потомка. Апроцесс-потомок записывает результат в выходной файл.
10. Откомпилируйте и запустите приведённую выше программу для двух нитей.Объясните отличие результатов относительно значения переменной a по сравнению срезультатами программы с двумя процессами из лабораторной работы No2.4. Напишите программу, которая выполняет обработку данных согласно варианту излабораторной работы No2, но делает это, используя две нити – одна читает информацию извходных файлов и обрабатывает её, а другая записывает результат в файл
11. Написать программу, которая должна для регулярных файлов в указанной директорииопределять номер их inode и выводить эти номера без дублирования, по одному на строку,отсортированные по возрастанию. Если на один и тот же inode ссылаются несколько файловэтой директории, их количество должно быть выведено на той же строке, что исоответствующий номер inode во второй колонке.
12. Написать программу, которая должна для файлов в указанной директории определятьномер их inode, и если на один и тот же inode ссылаются несколько файлов, удалить всежёсткие ссылки, кроме одной в данной директории. Жёсткие ссылки из другой директории имягкие ссылки не трогать.
13. Написать программу, которая должна выполнить один из вариантов из лабораторнойработы No1 (на выбор), но при этом, каждый входной регулярный файл она должна прочитатьтолько 1 раз. Если среди файлов в директории попадётся ссылка на уже прочитанный файл (тоесть, файл с тем же inode), то этот файл надо игнорировать, но вывести об этом сообщение на экран.
14. Написать программу, определяющую номер inode, на который в заданной директориибольше всего жёстких ссылок и вывести на экран номер этого inode и имена всех файлов,которые на него ссылаются. Если таких inode несколько, вывести их все.
15. Написать программу, определяющую номер inode, на который в заданной директориибольше всего мягких ссылок и вывести на экран номер этого inode и имена всех файлов,которые на него ссылаются. Если таких inode несколько, вывести их все.
16. Написать программу, которая принимала бы на входе программу на C, а на выходезаменяла бы на названия типов лексем сами лексемы языка для следующих объектов:- символьные константы на CHAR_CONST,- строковые константы на STRING_CONST.- вещественные константы на FLOAT_CONST.Остальной текст программы оставить без изменений.
17. Написать программу, которая заменяла бы в тексте целые числа на INTEGER ивещественные числа на FLOAT (и те и другие – в формате C). Остальной текст оставить безизменений.
18. Написать программу, которая заменяла бы в тексте каждое предложение (то есть,последовательность слов, у первого из которых первая буква заглавная, а заканчиваетсяпоследовательность точкой), на SENTENCE (N characters), где N число символов впредложении (всех, включая пробельные).
19. Изучите программу LEX сканера для калькулятора, объясните назначение и смыслразличных её элементов.Во время отчёта по лабораторной работе будет проверяться знание опций gcc, знаниеоснов работы c Lex, правильность работы написанных программ и понимание их исходногокода.
20. (Простой) Добавьте в список доступных в калькуляторе функций другие функцииодного аргумента (например, sin и cos).
21. (Средней сложности) Добавьте в список доступных в калькуляторе операцийвозведение в степень (знак операции выберите по своему усмотрению).
22. (Cложный) Добавьте в список доступных в калькуляторе функций функции двухаргументов (например, max и min).Во время отчёта по лабораторной работе будет проверяться знание основ работы c YACCи LEX, правильность работы написанных программ и понимание их исходного кода.


КРИТЕРИИ ОЦЕНИВАНИЯ:
«Отлично» (зачтено): студентом дан полный, в логической последовательности развернутый ответ на поставленные вопросы, где он продемонстрировал знания предмета в полном объеме учебной программы, достаточно глубоко осмысливает дисциплину, самостоятельно, и исчерпывающе отвечает на дополнительные вопросы, приводит собственные примеры по проблематике поставленного вопроса, решил предложенные практические задания без ошибок.
«Хорошо» (зачтено): студентом дан развернутый ответ на поставленный вопрос, где студент демонстрирует знания, приобретенные на лекционных и семинарских занятиях, а также полученные посредством изучения обязательных учебных материалов по курсу, дает аргументированные ответы, приводит примеры, в ответе присутствует свободное владение монологической речью, логичность и последовательность ответа. Однако допускаются неточности в ответе. Решил предложенные практические задания с небольшими неточностями.
«Удовлетворительно» (зачтено): студентом дан ответ, свидетельствующий в основном о знании процессов изучаемой дисциплины, отличающийся недостаточной глубиной и полнотой раскрытия темы, знанием основных вопросов теории, слабо сформированными навыками анализа явлений, процессов, недостаточным умением давать аргументированные ответы и приводить примеры, недостаточно свободным владением монологической речью, логичностью и последовательностью ответа. Допускается несколько ошибок в содержании ответа и решении практических заданий.
«Неудовлетворительно» (не зачтено): студентом дан ответ, который содержит ряд серьезных неточностей, обнаруживающий незнание процессов изучаемой предметной области, отличающийся неглубоким раскрытием темы, незнанием основных вопросов теории, неумением давать аргументированные ответы. Выводы поверхностны. Решение практических заданий не выполнено. Студент не способен ответить на вопросы даже при дополнительных наводящих вопросах преподавателя.
Приложения
Приложение 1.   ФОС_СПО_ПК4.docx

6. Учебно-методическое и информационное обеспечение дисциплины

6.1. Рекомендуемая литература
6.1.1. Основная литература
Авторы Заглавие Издательство, год Эл. адрес
Л1.1 Гунько А. В. Системное программное обеспечение: Учебники и учебные пособия для ВУЗов НГТУ, 2011 biblioclub.ru
6.1.2. Дополнительная литература
Авторы Заглавие Издательство, год Эл. адрес
Л2.1 Малявко А.А. Системное программное обеспечение. Формальные языки и методы трансляции: учебное пособие Издательство НГТУ, 2012 www.studentlibrary.ru
6.2. Перечень ресурсов информационно-телекоммуникационной сети "Интернет"
Название Эл. адрес
Э1 СисПО portal.edu.asu.ru
6.3. Перечень программного обеспечения
Microsoft Windows
Microsoft Office
Acrobat Reader
Условия использования: http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf
7-zip
Условия использования: https://www.7-zip.org/license.txt
Visual Studio
Условия использования: https://code.visualstudio.com/license
Lazarus
Условия использования: http://wiki.lazarus.freepascal.org/Lazarus_Faq#Licensing
Microsoft Office 2010 (Office 2010 Professional, № 4065231 от 08.12.2010), (бессрочно);
Microsoft Windows 7 (Windows 7 Professional, № 61834699 от 22.04.2013), (бессрочно);
Chrome (http://www.chromium.org/chromium-os/licenses), (бессрочно); 7-Zip (http://www.7-zip.org/license.txt), (бессрочно);
AcrobatReader (http://wwwimages.adobe.com/content/dam/Adobe/en/legal/servicetou/Acrobat_com_Additional_TOU-en_US-20140618_1200.pdf), (бессрочно);
ASTRA LINUX SPECIAL EDITION (https://astralinux.ru/products/astra-linux-special-edition/), (бессрочно);
LibreOffice (https://ru.libreoffice.org/), (бессрочно);
Веб-браузер Chromium (https://www.chromium.org/Home/), (бессрочно);
Антивирус Касперский (https://www.kaspersky.ru/), (до 23 июня 2024);
Архиватор Ark (https://apps.kde.org/ark/), (бессрочно);
Okular (https://okular.kde.org/ru/download/), (бессрочно);
Редактор изображений Gimp (https://www.gimp.org/), (бессрочно)
6.4. Перечень информационных справочных систем
Не требуется

7. Материально-техническое обеспечение дисциплины

Аудитория Назначение Оборудование
Помещение для самостоятельной работы помещение для самостоятельной работы обучающихся Компьютеры, ноутбуки с подключением к информационно-телекоммуникационной сети «Интернет», доступом в электронную информационно-образовательную среду АлтГУ
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска)
Учебная аудитория для проведения занятий лекционного типа, занятий семинарского типа (лабораторных и(или) практических), групповых и индивидуальных консультаций, текущего контроля и промежуточной аттестации, курсового проектирования (выполнения курсовых работ), проведения практик Стандартное оборудование (учебная мебель для обучающихся, рабочее место преподавателя, доска)
001вК склад экспериментальной мастерской - помещение для хранения и профилактического обслуживания учебного оборудования Акустический прибор 01021; виброизмеритель 00032; вольтметр Q1202 Э-500; вольтметр универсальный В7-34А; камера ВФУ -1; компьютер Турбо 86М; масспектрометр МРС -1; осциллограф ЕО -213- 2 ед.; осциллограф С1-91; осциллограф С7-19; программатор С-815; самописец 02060 – 2 ед.; стабилизатор 3218; терц-октавный фильтр 01023; шкаф вытяжной; шумомер 00026; анализатор АС-817; блок 23 Г-51; блок питания "Статрон" – 2 ед.; блок питания Ф 5075; вакуумный агрегат; весы; вольтметр VM -70; вольтметр В7-15; вольтметр В7-16; вольтметр ВУ-15; генератор Г-5-6А; генератор Г4-76А; генератор Г4-79; генератор Г5-48; датчик колебаний КВ -11/01; датчик колебаний КР -45/01; делитель Ф5093; измеритель ИМП -2; измеритель параметров Л2-12; интерферометр ИТ 51-30; источник "Агат" – 3 ед.; источник питания; источник питания 3222; источник питания ЭСВ -4; лабораторная установка для настройки газовых лазеров; лазер ЛГИ -21; М-кальк-р МК-44; М-калькул-р "Электроника"; магазин сопротивления Р4075; магазин сопротивления Р4077; микроскоп МБС -9; модулятор МДЕ; монохроматор СДМС -97; мост переменного тока Р5066; набор цветных стекол; насос вакумный; насос вакуумный ВН-01; осциллограф С1-31; осциллограф С1-67; осциллограф С1-70; осциллограф С1-81; осциллоскоп ЕО -174В – 2 ед.; пентакта L-100; пирометр "Промень"; пистонфон 05001; преобразователь В9-1; прибор УЗДН -2Т; скамья оптическая СО 1м; спектограф ДФС -452; спектограф ИСП -51; стабилизатор 1202; стабилизатор 3217 – 4 ед.; стабилизатор 3218; стабилизатор 3222 – 3 ед.; станок токарный ТВ-4; усилитель мощности ЛВ -103 – 4 ед.; усилитель У5-9; центрифуга ВЛ-15; частотомер Ч3-54А; шкаф металлический; эл.двигатель; электродинамический калибратор 11032

8. Методические указания для обучающихся по освоению дисциплины

Не требуются