Операционные системы
Тема обсуждения
Объект исполнения
Процесс
Поток / нить (thread)
Процессы и потоки
Процесс с одним потоком
Процесс с несколькими потоками
Зачем нужны процессы с несколькими потоками?
Многопоточная программа vs. Взаимодействующие процессы
Состояния потока
Состояния потока в однозадачной ОС…
Состояния потока в однозадачной ОС
Состояния потока в многозадачной ОС…
Состояния потока в многозадачной ОС…
Состояния потока в многозадачной ОС
Управление процессами/потоками
Управление процессами/потоками
Контекст процесса
Контекст потока
Аппаратный контекст потока
Переключение контекста
Дескриптор процесса
Дескриптор потока
Кто управляет процессами и потоками?
Потоки ядра vs. пользовательские потоки…
Потоки ядра vs. пользовательские потоки
Операции над процессами и потоками
Создание процесса
Создание процесса
Создание потока
Создание потока
Завершение потока
Завершение процесса
Создание/завершение процесса – Win32
Создание/завершение процесса – UNIX
Создание/завершение процесса – UNIX
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX fork()
UNIX exec*()
UNIX exec*()
UNIX exec*()
UNIX exec*()
UNIX exec*()
UNIX exec*()
UNIX exit()
Заключение
Тема следующей лекции – Планирование
Вопросы для обсуждения
Задание для самостоятельной работы…
Задание для самостоятельной работы…
Задание для самостоятельной работы…
Для тех, кто сделает быстро…
Литература
618.00K
Category: programmingprogramming

Операционные системы

1. Операционные системы

Кафедра 813 Компьютерная математика
Операционные системы
Процессы и потоки
Мокряков А. В.
2020

2. Тема обсуждения

Программисты создают программы
Пользователи запускают
программы на исполнение
Что представляет собой объект
исполнения в ОС?
Операционные системы Процессы и потоки

3. Объект исполнения

Объект, представляющий прикладную программу в
состоянии выполнения, включает
Адресное пространство, выделенное для выполнения
программы
Код выполняющейся программы
Данные выполняющейся программы
Стек и указатель на его вершину (stack pointer, SP)
Выделенные ресурсы ОС (открытые файлы, установленные
сетевые соединения и т.д.)
Программный счетчик (instruction pointer, IP), указывающий
на следующую выполняемую инструкцию
Текущие значения регистров общего назначения
Объект исполнения представлен двумя понятиями:
процесс и поток
Операционные системы Процессы и потоки

4. Процесс

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

5. Поток / нить (thread)

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

6. Процессы и потоки

Процесс MS-DOS
один поток
в процессе
несколько
потоков
в процессе
Поток
Процесс
Java
Поток
Поток
один процесс
UNIX
by
design
Процесс
Процесс
Поток
Поток
WinNT,
Linux,
Mach,

Процесс
Процесс
Поток
Поток
Поток
Поток
Поток
несколько процессов
Операционные системы Процессы и потоки

7. Процесс с одним потоком

виртуальное адресное
пространство (ВАП) процесса
MAX
Стек
SP
пространство
адресов
Куча
Регион данных
Регион кода
MIN
Операционные системы Процессы и потоки
IP

8. Процесс с несколькими потоками

виртуальное адресное
пространство (ВАП) процесса
MAX
Стек потока 1
Стек потока 2
пространство
адресов
Стек потока 3
SP потока 1
SP потока 2
SP потока 3
Куча
Регион данных
Регион кода
MIN
Операционные системы Процессы и потоки
IP потока 1
IP потока 2
IP потока 3

9. Зачем нужны процессы с несколькими потоками?

Для параллельной обработки нескольких
однотипных запросов (сетевые сервисы)
Для разделения исполнительных активностей,
параллельно решающих различные задачи
обеспечение пользовательского интерфейса
математические вычисления
фоновая печать

Для создания параллельных программ,
эффективно использующих аппаратные
ресурсы (например, несколько аппаратно
имеющихся ЦП)
Для улучшения структуры программы
Операционные системы Процессы и потоки

10. Многопоточная программа vs. Взаимодействующие процессы

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

11. Состояния потока

12. Состояния потока в однозадачной ОС…

Создание
1
Выполнение
4
2
3
Завершение
Операционные системы Процессы и потоки
Ожидание

13. Состояния потока в однозадачной ОС

С
1
В
4
2
3
З
(2) - посредством выполнения
системного вызова, подразумевающего
ожидание наступления какого-либо
события, например, нажатия клавиши
или истечения 10 с
(3) - при наступлении ожидаемого
события происходит возврат из
системного вызова и возвращение
потока в состояние выполнения
Операционные системы Процессы и потоки
О

14. Состояния потока в многозадачной ОС…

Создание
1
Готов к
выполнению
2
5
3
Выполнение
4
Ожидание
6
Завершение
Операционные системы Процессы и потоки

15. Состояния потока в многозадачной ОС…

Выполнение – состояние работающего потока
– обладающего всеми необходимыми
ресурсами, в том числе возможностью
использования ЦП
Готов к выполнению – поток обладает всеми
необходимыми для выполнения ресурсами за
исключением ресурса "время ЦП"
Ожидание (сон, блокировка) – выполнение
потока заблокировано до наступления
некоторого внешнего события (например,
поступления входных данных или
освобождения ресурса)
Операционные системы Процессы и потоки

16. Состояния потока в многозадачной ОС

С
1
2
ГВ
3
В 4
(2,3) - осуществляются ядром
операционной системы
(планировщиком)
(4) - продолжение работы невозможно
5
О
6
З
для продолжения работы требуется наступление
какого-либо события
поток затребовал недоступный в данный момент
ресурс
поток переводится в состояние ожидания ядром
операционной системы во время обработки системного
вызова
поток заблокирован внешним по отношению к нему
вызовом
(5) - производится ядром ОС в момент
выполнения условия ожидания
Операционные системы Процессы и потоки

17. Управление процессами/потоками

18. Управление процессами/потоками

Структуры, описывающие процессы и потоки в
ядре ОС
Операции над процессами и потоками
Распределение ресурсов между
процессами/потоками
время центрального процессора (выделяется потокам)
оперативная память (выделяется процессам)
другие ресурсы (как правило, выделяются процессам)
Интерфейс прикладных программ (частные
реализации)
Операционные системы Процессы и потоки

19. Контекст процесса

Контекст – множество информации, полностью
описывающее состояние объекта (в частности,
достаточное для восстановления объекта в
случае его удаления)
Контекст процесса включает
Множество информации, используемое
операционной системой для управления
ресурсом типа «процесс»
Адресное пространство процесса
Структуру и содержимое пользовательской части
адресного пространства процесса
Множество ресурсов, используемых процессом
или принадлежащих процессу, и их состояния
Операционные системы Процессы и потоки

20. Контекст потока

Контекст потока включает
Множество информации, используемое
операционной системой для управления
ресурсом типа «поток»
Множество ресурсов, используемых потоком
или принадлежащих потоку и их состояния
Аппаратный контекст исполнения потока
Операционные системы Процессы и потоки

21. Аппаратный контекст потока

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

22. Переключение контекста

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

23. Дескриптор процесса

Идентификатор процесса
Групповые параметры процесса
Параметры, используемые в процессе определения приоритета
процесса при конкуренции за какой-либо ресурс
Состояние процесса
Статистические данные
Описание адресного пространства процесса
Контекст ввода-вывода
Контекст безопасности
Текущие системные параметры выполнения
Код завершения процесса
В Linux дескриптор процесса – структура task_struct
(include/linux/sched.h), содержит около 100 полей!
Операционные системы Процессы и потоки

24. Дескриптор потока

Идентификатор потока
Идентификатор процесса – владельца потока
Параметры, используемые в процессе
определения приоритета потока при
конкуренции за какой-либо ресурс
Статистические данные потока
Аппаратный контекст выполнения потока
(программный счетчик, стек и указатель на его
вершину, значения регистров)
Код завершения потока
Операционные системы Процессы и потоки

25. Кто управляет процессами и потоками?

За управление процессами всегда
отвечает ядро ОС
Ядро всегда предоставляет каждому
процессу один поток, но не всегда
поддерживает многопоточность
потоки, непосредственно управляемые ядром
ОС, называются потоками ядра
Можно реализовать многопоточность в
библиотеке пользовательского уровня!
Операционные системы Процессы и потоки

26. Потоки ядра vs. пользовательские потоки…

Ядро
Таблица
дескрипторов
процессов
Таблица
дескрипторов
потоков
Процесс1
Поток1 Поток2
Библиотека поддержки
исполнения потоков
Локальная таблица
дескрипторов потоков
ПроцессN
Поток1 Поток2 Поток3
Библиотека поддержки
исполнения потоков
Локальная таблица
дескрипторов потоков
Подпоток Подпоток Подпоток
Подпоток Подпоток Подпоток



Подпоток Подпоток Подпоток
Подпоток Подпоток Подпоток



Операционные системы Процессы и потоки

27. Потоки ядра vs. пользовательские потоки

При использовании пользовательских потоков
(+) Операции над потоками выполняются без выполнения
системных вызовов (в 10-100 раз быстрее, чем при
использовании потоков ядра)
(+) Можно реализовать собственный алгоритм
планирования
(-) Ядро ничего не знает о потоках пользовательского
уровня и распределяет время ЦП независимо от их
количества в процессе
(-) Если будет выполнен блокирующий системный вызов
(например, вызвана синхронная операция ввода-вывода), в
состояние ожидания переводится поток ядра,
использовавшийся для обеспечения выполнения нескольких
(или всех) пользовательских потоков. Соответственно,
выполнение всех этих пользовательских потоков будет
заблокировано.
Операционные системы Процессы и потоки

28. Операции над процессами и потоками

29. Создание процесса

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

30. Создание процесса

Таблица
дескрипторов
процессов
Ядро
Таблица
дескрипторов
потоков
1. Создание дескриптора процесса
2. Создание ВАП процесса
3. Формирование структуры ВАП
процесса и его заполнение
4. Выделение ресурсов по умолчанию
Куча
Регион данных
Регион кода
Создание
первичного потока
Операционные системы Процессы и потоки

31. Создание потока

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

32. Создание потока

Таблица
дескрипторов
процессов
Стек
Ядро
SP
IP
Куча
значения
регистров
Регион данных
Регион кода
Таблица
дескрипторов
потоков
состояние =
"готов к
выполнению"
Операционные системы Процессы и потоки
1. Создание
дескриптора потока
2. Создание стека
3. Инициализация
аппаратного
контекста
4. Установка
состояния потока

33. Завершение потока

сохранить статистические данные потока и код возврата
в его дескрипторе
перевести все ресурсы, принадлежащие потоку, в
непротиворечивое и стабильное состояние
освободить все ресурсы, принадлежавшие потоку или
использовавшиеся потоком
оповестить подсистемы, принимающие участие в
управлении потоками, о завершении потока
установить состояние потока в значение «завершен»
если данный поток является последним активным
потоком в процессе – завершить процесс
после выполнения всех действий остается дескриптор
потока, содержащий его код возврата и статистические
данные; момент уничтожения дескриптора зависит от
реализации
Операционные системы Процессы и потоки

34. Завершение процесса

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

35. Создание/завершение процесса – Win32

BOOL CreateProcess(
LPCTSTR lpszImageName,
LPCTSTR lpszCommandLine,
LPSECURITY_ATTRIBUTES lpsaProcess,
LPSECURITY_ATTRIBUTES lpsaThread,
BOOL fInheritHandles,
DWORD fdwCreate,
LPVOID lpvEnvironment,
LPTSTR lpszCurDir,
LPSTARTUPINFO lpsiStartInfo,
LPPROCESS_INFORMATION lppiProcInfo);
VOID ExitProcess(UINT fuExitCode);
Описание функций можно найти в MSDN и книге [2]
Операционные системы Процессы и потоки

36. Создание/завершение процесса – UNIX

Создание копии процесса
int fork(void);
Использование ресурсов процесса для
выполнения указанной программы
int exec*(char *path, char* argv[], char **env);
Завершение процесса
void exit(int status);
Ожидание завершения процесса-потомка
int wait(int *status);
Описание функций можно найти в
документации UNIX (man или info) и книге [3]
Операционные системы Процессы и потоки

37. Создание/завершение процесса – UNIX

/* Программа, создающая процесс-потомок и
запускающая в потомке другую программу */
int ChildPID, ChildRetCode, RetCode=0;
ChildPID = fork();
if( ChildPID == 0 )/*child process*/
exec*(progname,…);
else
/*parent process*/
wait(&ChildRetCode);
/* more parent code */
exit(RetCode);
Операционные системы Процессы и потоки

38. UNIX fork()

Начальная ситуация
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
Регион стека
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки

39. UNIX fork()

Резервируем место в swap для регионов
данных, стека и кучи нового процесса
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
Регион стека
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки

40. UNIX fork()

Создаем новую запись proc
в таблице процессов, присваиваем PID
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
PID
789
IP
SP
Регион стека
PPID
456
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки

41. UNIX fork()

Создаем таблицы страниц
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
PID
789
IP
SP
Регион стека
PPID
456
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки

42. UNIX fork()

Копируем атрибуты родительского
процесса потомку
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
PID
789
IP
SP
Регион стека
PPID
456
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки

43. UNIX fork()

Создаем области процесса
(некоторые совпадают с родительскими)
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
Регион кода
Регион стека
Регион стека
Регион данных
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки
Куча
PID
789
PPID
456

44. UNIX fork()

Инициализируем аппаратный контекст
(копируя его с родительского)
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион кода
Регион стека
Регион стека
Регион данных
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки
Куча
PID
789
PPID
456

45. UNIX fork()

Для дочернего процесса устанавливается
состояние "готов к выполнению"
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион кода
Регион стека
Регион стека
Регион данных
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки
Куча
PID
789
PPID
456

46. UNIX fork()

Дочернему процессу возвращается значение 0
Родительскому процессу возвращается PID потомка
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион кода
Регион стека
Регион стека
Регион данных
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки
Куча
PID
789
PPID
456

47. UNIX exec*()

Использование ресурсов процесса
для выполнения указанной
программы
Трансляция имени файла
Распознавание заголовка файла
Изменение EUID, EGID
Сохранение аргументов вызова,
переменных окружения в адресном
пространстве ядра
Операционные системы Процессы и потоки

48. UNIX exec*()

Начальное состояние
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион кода
Регион стека
Регион стека
Регион данных
Регион данных
myprog
Куча
progname
swap
Операционные системы Процессы и потоки
Куча
PID
789
PPID
456

49. UNIX exec*()

Освобождение областей процесса
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион стека
PPID
456
Регион данных
myprog
Куча
PID
789
progname
swap
Операционные системы Процессы и потоки

50. UNIX exec*()

Резервирование места в swap
для регионов данных, кучи и стека
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион стека
PPID
456
Регион данных
myprog
Куча
PID
789
progname
swap
Операционные системы Процессы и потоки

51. UNIX exec*()

Создание новых регионов и
отображение на HDD
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион стека
Регион кода
Регион данных
Регион данных
myprog
Куча
PID
789
progname
swap
Операционные системы Процессы и потоки
Регион стека
Куча
PPID
456

52. UNIX exec*()

Инициализация
аппаратного контекста процесса
Таблица
дескрипторов
процессов
PID
456
PPID
123
Регион кода
Ядро
IP
SP
IP
SP
Регион стека
Регион кода
Регион данных
Регион данных
myprog
Куча
PID
789
progname
swap
Операционные системы Процессы и потоки
Регион стека
Куча
PPID
456

53. UNIX exit()

Завершение процесса
Отключение всех сигналов
Закрытие всех открытых файлов
Сохранение статистики использования
ресурсов и кода возврата в proc
Изменение состояния на «зомби»
Назначение процесса init(d) родителем для
всех непосредственных потомков
Уничтожение ВАП процесса
Посылка родителю сигнала SIGCHLD
Если родитель вызывал wait() - пробуждение
Переключение контекста
Операционные системы Процессы и потоки

54.

Родительский процесс (PID=123,PPID=1)
int ChildPID, ChildRetCode, RetCode=0;
ChildPID = fork();
if( ChildPID == 0 )/*child process*/
exec*(progname,:);
else /*parent process*/
wait(&ChildRetCode);
/* more parent code */
exit(RetCode);
Родительский процесс (PID=123,PPID=1)
int ChildPID, ChildRetCode, RetCode=0;
ChildPID = fork();
if( ChildPID == 0 )/*child process*/
exec*(progname,:);
else /*parent process*/
wait(&ChildRetCode);
/* more parent code */
exit(RetCode);
wait()
fork()
Дочерний процесс (PID=456,PPID=123)
int ChildPID, ChildRetCode, RetCode=0;
ChildPID = fork();
if( ChildPID == 0 )/*child process*/
exec*(progname,:);
else /*parent process*/
wait(&ChildRetCode);
/* more parent code */
exit(RetCode);
exec*()
Дочерний процесс (PID=456,PPID=123)
Код программы progname.
Его выполнение началось с точки
старта программы и завершится в тот
момент, когда программа выполнит
вызов exit()
exit()
Родительский процесс (PID=123,PPID=1)
int ChildPID, ChildRetCode, RetCode=0;
ChildPID = fork();
if( ChildPID == 0 )/*child process*/
exec*(progname,:);
else /*parent process*/
wait(&ChildRetCode);
/* more parent code */
exit(RetCode);
Операционные системы Процессы и потоки

55. Заключение

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

56. Тема следующей лекции – Планирование

Понятие планирования
Критерии оценки алгоритмов
планирования
Некоторые алгоритмы
планирования
Операционные системы Процессы и потоки

57. Вопросы для обсуждения

Какая схема запуска новых
программ кажется вам
предпочтительней: в стиле UNIX
или в стиле Windows?
Приведенный в лекции список
действий при создании и
завершения процессов/потоков
содержит только часть шагов.
Какие действия вы бы добавили?
Операционные системы Процессы и потоки

58. Задание для самостоятельной работы…

Напишите командный интерпретатор –
программу, циклически выполняющую
следующие действия:
ввод командной строки
выделение из командной строки имени
программы или команды и аргументов
поддерживаемые команды
pwd – вывод имени текущего каталога
cd [dir] – изменение текущего каталога
exit [n] – завершение с указанным кода возврата
если первое слово командной строки не является
именем команды – запускается программа с данным
именем и ожидается ее завершение
Операционные системы Процессы и потоки

59. Задание для самостоятельной работы…

execl(char *path, char* arg,… );
execl("/bin/ls", "ls", "-ls", (char*)0);
execv(char *path, char* argv[]);
0
0
w
1
0
w
2
0
w
3
0
0
Операционные системы Процессы и потоки

60. Задание для самостоятельной работы…

Используемое ПО
VMWare Player
Виртуальная машина
C:\Temp\!parallel!\VMWare\Fedora…
Login: user
Password: user
Некоторые комбинации клавиш для работы с
VMWare
Ctrl+Alt+Enter – полноэкранный режим
Ctrl+Alt – возврат контекста ввода в Windows
/home/user/Programs содержит 2 примера
Для компиляции и линковки программы
используйте следующую команду
cc –o имя_бинарного_файла имя_исходного_файла
Операционные системы Процессы и потоки

61. Для тех, кто сделает быстро…

Добавьте поддержку следующих
дополнительных возможностей:
конвейеры
ls –la | more
последовательное выполнение команд
touch myfile; rm –f myfile
Операционные системы Процессы и потоки

62. Литература

Таненбаум Э. Современные
операционные системы.
Рихтер Дж. Windows для
профессионалов (Создание
эффективных Win32-приложений с
учетом специфики 64-разрядной
версии Windows).
Робачевский А.М. Операционная
система UNIX.
Операционные системы Процессы и потоки
English     Русский Rules