Fork (sistema eragileak)

Wikipedia(e)tik
Hona jo: nabigazioa, Bilatu
Artikulu hau ataza-anitzeko edo hari-anitzeko sistema eragileetako prozesuen "fork" edo "semeei" buruz da.

Ordenagailu terminologian ordenagailu prozesu batek bere buruaren kopia bat egiteari esaten zaio fork, non honek ondoren prozesu originalaren edo aita prozesuaren seme prozesu bezala funtzionatzen duen. Normalean, hari-anitzeko ingurune batean fork bat egitean exekuzio hari bat bikoiztu egin dela izaten da.

Unix eta Unix-moduko sistema eragileetan, prozesu aita eta prozesu semea fork() sistema deialdiaren erantzunaren arabera hautatzen dira. Seme prozesuan, fork()-en erantzuna 0 da, eta prozesu aitaren kasuan sortu berri den prozesuaren PIDa.

Fork-i deitzearekin bat, semearentzat helbide espazio ezberdin bat egongo da. Seme prozesuak aita prozesuaren segmentuen kopia zehatz bat izango du. Prozesu semeak eta aitak batak bestearekiko guztiz independente funtzionatu dezakete.

Adibidea[aldatu | aldatu iturburu kodea]

Hemen C programazio lengoaia idatzitako kode bat. "Seme prozesua"n eta "Aita prozesua"n sekzioak batera exekutatuko dira

   int pid;

   pid = fork();

   if(pid == 0)
   {
      /* Seme prozesua:
       * fork()-ek 0 itzultzean
       * seme prozesuan gaude.
       * Orain 10 arte zenbatu, batetik bestera segundoa itxaronez.
       */
      int j;
      for(j=0; j < 10; j++)
      {
         printf("Semea: %d\n", j);
         sleep(1);
      }
      _exit(0); /* Ohartu ez dugula exit() erabiltzen */
   }
   else if(pid > 0)
   { 
      /* Aita prozesua:
       * Bestela aita prozesuan gaude.
       * Berriz 10 arte zenbatu.
       */
      int i;
      for(i=0; i < 10; i++)
      {
         printf("Aita: %d\n", i);
         sleep(1);
      }
   }
   else
   {   
      /* Errore kontrola. */
      fprintf(stderr, "Ezin izan da fork egin");
      exit(1);
   }

Kode honek honakoa erakutsiko du:

 aita: 0
 semea: 0
 semea: 1
 aita: 1
 aita: 2
 semea: 2
 semea: 3
 aita: 3
 aita: 4
 semea: 4
 semea: 5
 aita: 5
 aita: 6
 semea: 6
 semea: 7
 aita: 7
 aita: 8
 semea: 8
 semea: 9
 aita: 9

Irteera ordena kernelak ezartzen du.

Ikus, gainera[aldatu | aldatu iturburu kodea]