Z racji, że jest to mój pierwszy post na tym forum to chciałem powitać wszystkich, którzy tutaj wejdą z chęcią pomocy. Z góry dziękuję :)
Jestem bardzo początkującym programistą mimo woli ale jak tak los chciał to fajnie by było się czegoś nauczyć. Dlatego do rzeczy:

W ramach zajęć, na których posługujemy się systemem QNX 4.25, mam do zrealizowania następujące punkty:

  1. Zrealizować program, który utworzy 10 procesów potomnych, o różnych priorytetach. Każdy z procesów powinien realizować obliczenia bez używania żadnych funkcji blokujących (operacji wejścia/wyjścia, operacji na plikach, czasomierzy itp.).
  2. Określić zależność czasu wykonania procesu od jego priorytetu.
  3. Zrealizować program, który utworzy n procesów potomnych, o różnych priorytetach i algorytmach szeregowania. Każdy z procesów powinien realizować obliczenia bez używania żadnych funkcji blokujących (operacji wejścia/wyjścia, operacji na plikach, czasomierzy itp.).
  4. Określić zależność czasu wykonania procesu od jego priorytetu i algorytmu szeregowania.

W instrukcji do ćwiczenia miałem przybliżone działanie funkcji fork(), setprio(), getprio(), sched_setscheduler(), sched_getscheduler() oraz strategie szeregowania FIFO, Karuzelowe, Adaptacyjne.

W ramach moich prób zaznajomienia się z tworzeniem procesów oraz nadawniem im określonych priorytetów napisałem program, który dobrze mi wszystko obrazował:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

main()
{
  int pp,i,a,b,c,prio;

  for (i=1;i<5;i++)
  {
    pp=fork();
  
    if (pp==-1)
    {
      printf("Nie mozna utworzyc procesu\n");
    }

    if (pp==0)
    {
	  srand(getpid());
	  prio=setprio(getpid(),rand()%19+11);
	  printf("To jest %d dziecko: %d bo PID z forka: %d\n",i,getpid(),pp);
	  a=(rand()%51);
	  b=(rand()%51);
	  c=a+b;
      printf("Dziecko %i liczy: %d + %d = %d\n",i,a,b,c);
	  printf("Dziecko %i ma priorytet: %d\n",i,getprio(getpid()));
	  return 0;
    }
 
    if (pp!=0 & pp!=-1)
    {
	  printf("To jest matka: %d A dziecko to: %d (%d)\n",getpid(),pp,i);
	  printf("Matka ma priorytet: %d\n\n",getprio(getpid()));  
    }

  }
  
  return 0;
}

Główny problem stanowi dla mnie punkt 2 zadania. Jak określić zależność czasu wykonania procesu od jego priorytetu? Nie mogę procesu potomnego zatrzymać np. funkcją delay(). Jeszcze nie jestem do końca pewny czy "czas wykonania procesu" odnosi się do szybkości z jaką musi się wykonać proces potomny (np. wyższy priorytet - szybsze wykonanie) czy do tego, że musi wykonać się jako pierwszy.

Jeżeli ktoś jest w stanie to rozgryźć i jakoś mnie wspomóc wiedzą i radą to bardzo proszę :)

Pozdrawiam!