The design of the UNIX Operating System 19 страница



 

Для того чтобы реализовать нашу идею, введем новую абстракцию внутри понятия "процесс" – нить ис-полнения или просто нить (в англоязычной литературе используется термин thread). Нити процесса раз-деляют его программный код, глобальные переменные и системные ресурсы, но каждая нить имеет соб-ственный программный счетчик, свое содержимое регистров и свой стек. Теперь процесс представляется как совокупность взаимодействующих нитей и выделенных ему ресурсов. Процесс, содержащий всего


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

одну нить исполнения, идентичен процессу в том смысле, который мы употребляли ранее. Для таких процессов мы в дальнейшем будем использовать термин "традиционный процесс". Иногда нити называ-ют облегченными процессами или мини-процессами, так как во многих отношениях они подобны тради-ционным процессам. Нити, как и процессы, могут порождать нити-потомки, правда, только внутри сво-его процесса, и переходить из одного состояния в другое. Состояния нитей аналогичны состояниям тра-диционных процессов. Из состояния рождение процесс приходит содержащим всего одну нить исполне - ния . Другие нити процесса будут являться потомками этой нити-прародительницы. Мы можем считать , что процесс находится в состоянии готовность, если хотя бы одна из его нитей находится в состоянии готовность и ни одна из нитей не находится в состоянии исполнение.Мы можем считать,что процесснаходится в состоянии исполнение, если одна из его нитей находится в состоянии исполнение. Процесс будет находиться в состоянии ожидание, если все его нити находятся в состоянии ожидание. Наконец, процесс находится в состоянии закончил исполнение, если все его нити находятся в состоянии закон-чила исполнение.Пока одна нить процесса заблокирована,другая нить того же процесса может выпол-няться. Нити разделяют процессор так же, как это делали традиционные процессы, в соответствии с рас-смотренными алгоритмами планирования.

 

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

 

Нить 1                                               Нить 2

 

Создать нить 2 Переключение контекста нитей

 

Ожидание ввода a и b Переключение контекста нитей

 

Ввести массив a Ожидание окончания

 

операции ввода Ввести массив b Ожидание окончания

 

операции ввода Ввести массив с Ожидание окончания

 

операции ввода Переключение контекста нитей

 

a = a + b

Переключение контекста нитей c = a + c

Вывести массив с Ожидание окончания операции вывода

 

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


Дата добавления: 2021-01-21; просмотров: 96; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!