00000000 - 0 6434561 577345 - 56 0 - 892K - ? 00:00:00 ./thr_schedule
thread0: policy = 1 priority = 45
thread1: policy = 1 priority = 56
1[32000 раз]1
При использовании дисциплины FIFO память будет заполнена массивом из единиц, так как приоритет 1 потока выше и он первый встал в очередь на выполнение.
./thr_schedule 2 56 56
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
00000000 - 0 6447140 577571 - 20 0 - 892K - ? 00:00:00 ./thr_schedule
00000000 - 0 6447140 577571 - 56 0 - 892K - ? 00:00:00 ./thr_schedule
00000000 - 0 6447140 577571 - 56 0 - 892K - ? 00:00:00 ./thr_schedule
thread0: policy = 2 priority = 56
thread1: policy = 2 priority = 56
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
При использовании дисциплины Round Robin память будет заполнена массивом из нулеи и единиц, которые будут чередоваться блоками.
Допольнительное исследование:
1). Метод решения проблемы появления процессов-зомби.
father.c
#include <sys/types.h>
#include <stdlib.h>
#include <process.h>
#include <spawn.h>
main( int argc, char* argv[])
{
struct inheritance inherit;
inherit.flags |= SPAWN_NOZOMBIE;
spawnp("./son",0,0,&inherit, argv, NULL);
sleep(5);
system(" pidin | grep Zombie");
}
son.c
#include <stdlib.h>
main()
{
printf("son PID = %i\n", getpid());
}
Пример выполнения программы:
# ./father
son PID = 7028775
# ./father
son PID = 7102503
7102503 (Zombie)
В первом случае мы избежали появления процесса-зомби установкой флага признака SPAWN_NOZOMBIE. Во 2 случае появился процесс-зомби, т.к. небыл установлен флаг признака.
3. Выводы
При выполнении данной работы я ознакомился с организацией многозадачности в ОС QNX на примере различных средств контроля и управления. Можно выделить следующие основные классы рассмотренных задач: - планирование; - поддержка системы наследования процессов; - поддержка фрагментации процессов; - межпроцессное взаимодействие.
Программа работы:
1). Цель работы
2). Управление процессами и нитями
2.1). Порождение и запуск процессов
2.2). Взаимодеиствие родственных процессов
2.3). Управление процессами посредством сигналов
2.4). Многонитиевое функционирование
2.5). Порождение процессов с помощью семейства функции spawn*()
2.6). Управление приоритетами
2.7). Планирование и диспетчеризация
3). Выводы
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.