Читайте также:
|
|
События, приводящие к созданию процессов:
1) инициализация системы
2) выполнение системного запроса на создание процесса
3) запрос пользовательского приложения на создание процесса
4) инициирование пакетного задания.
Как правило, при загрузке ОС создается несколько процессов сразу. Одни из созданных процессов являются высокоприоритетными, другие фоновыми. В некоторых ОС фоновые процессы называются демонами.
Процессы, как правило, создаются и завершаются в ходе вычислительного процесса.
Каждый процесс имеет свое состояние, которое показано на слайде 11.
1) выполнение (running);
2) готовность к выполнению (ready);
3) заблокирован, ожидает завершения какого-либо события.
Завершение процессов. Каждый процесс может завершиться, как правило в следующих случаях:
1) штатный выход – после завершения процесс сообщает ОС, что закончил работу Windows API ExitProcess();
2) Преднамеренная или непреднамеренная ошибка, например, попытка запуска процесса, образа которого нет по указанному пути к файлу;
3) аварийное завершение – как правило, в серьезных ОС указываются каталожные номера ошибок причин возникновения ошибок;
4) выполнение недействительной операции, например, деление на ноль или обращение к недействительному адресу.
Как может получиться недействительная операция?
Недействительная операция – когда нет команды в системе команд процессора, она не может быть распознана и выполнена.
5) завершение процесса другим процессом – например TerminateProcess().
Замечание: состояние процесса меняется в течение времени. Из готовокого к выполнению он может стать выполняющимся и т.д. Процесс может находиться в состоянии ожидания какого-либо события. Поэтому существует определенный механизм, позволяющий процессу отслеживать, состоялось это событие или нет.
Например, в ОС MVT фирмы IBM предусматривался механизм синхронизации Post-Wait. По команде Wait процесс останавливался до завершения какого-либо события. Событие указывалось в ECB = FLAG (EventControlBlock). Как только FLAG станет «1», процесс возобновлял работу.
Каждый процесс описывается своей таблицей. Одно из полей, которое указывает на таблицу процессов: регистры, счетчики команд, слово состояний, указатель на вершину стека и т.д. Это нужно для того, чтобы один выполнение контекста одного процесса можно было переключать на выполнение контекста другого процесса.
Потоки. Поток является продолжением и дополнением к модели процесса. Идея заключается в том, что организуется возможность выполнять в одной и той же среде процесса несколько исполнительных модулей – потоков. Все ресурсы процессора являются общими ресурсами всех потоков процесса.
Каждый поток также имеет свой счетчик команд, область сохранения регистров, свой стек и т.д. Сходно по описанию с блоков описания процесса. Кроме того, в него включаются и данные родительского процесса, который его породил. Поток, так же как процесс, имеет состояния: выполнение, готовность и заблокирован.
Запуск и завершение потока может осуществляться на основе Windows API ThreadCreate, ThreadExit. Существует несколько опций по управлению запуском и завершением потоков.
Достоинство поточной модели заключается в том, что:
1) позволяет исключить блокировку процесса в случае его однопроточного режима (т.е. если в процессе несколько потоков, то приостановка одного из них не вызывает приостановку процесса в целом);
2) позволяет снизить системные издержки на диспетчирование процессов и потоков. Потоки являются частью процесса, используют процессную память, открытые файлы. и другие ресурсы, поэтому сокращается количество обращений по открытию файлов для потоков, например;
3) позволяет повысить эффективность вычислений разнесением быстрых и медленных вычислений по потокам;
4) использование параллелизма вычислений – разные потоки выполняются, например, на разных процессорах или ядрах.
Дата добавления: 2015-07-07; просмотров: 124 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Трассировка событий ядра | | | Внутреннее устройство процессов. Структуры данных |