Потоки в ОС Linux

Лабораторная работа по курсу "Операционные системы"

Потоки в ОС Linux

Цель работы: знакомство с системными вызовами для управления потоками в ОС Linux.

 

I. Управление потоками

Основная цель использования потоков - это разделение программы на подзадачи, которые могут выполняться параллельно. По сравнению с процессами… В ОС UNIX/Linux имеется API для потоков стандарта POSIX (Portable Operating… -lpthread

Создание и завершение потоков

1. Указатель на переменную типа pthread_t, в нее будет записан ID нового потока. 2. Указатель на объект атрибут потока. Этот объект управляет деталями… 3. Указатель на функцию потока. Это обычный указатель на функцию типа void*(*)(void*), т.е. функция потока принимает…

Передача данных в поток

Необходимо, чтобы данные, передаваемые новому потоку, были доступны потоку, при этом не следует передавать стековые переменные. Как Вы думаете,…   Задание 2. Выполните программу pr2.c. Программа создает два новых потока: один печатает 'x', другой 'o' на устройстве…

Объединение потоков

  Задание 3. Создайте программу pr3.c, модифицировав программу pr2.c: a)…

II. Сравнение потоков и процессов

(a) Обычная программа simple.c, состоящая из функции main и двух дополнительных функций; не использует многозадачности или многопоточности. (b) Программа simple_processes.c запускает три процесса - родительский и два… (c) Программа simple_threads.c запускает три потока - главный (первичный) и два дочерних.

Порядок выполнения лабораторной работы

1. Выполните задания 1-4.

2. Занесите в отчет описание заданий со всеми требуемыми пояснениями и ответами на вопросы.

 

Требования

1. При подготовке к лабораторной работе (дома) занесите в отчет тексты программ из заданий 1-3. Тексты программ должны быть прокомментированы.

2. Студент должен знать ответы на следующие вопросы:

 

Вопросы

2. Какова разница между потоками и процессами? 3. Когда потоки могут выполняться действительно параллельно? 4. Как можно создать в программе новый поток?

Источники информации

2. Ш. Уолтон. Создание сетевых приложений в среде Linux. - М.: Издательский дом "Вильямс", 2001. (Глава 7)   ---------------------------------------------------------------------------------------------------