Управление процессами и нитями в ОС QNX. Основные принципы управления процессами и нитями в ОС QNX, страница 14

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). Выводы