Page principale   Liste par ordre alphabétique   Liste des composants   Liste des fichiers   Composants   Déclarations  

Référence du fichier interpreteur.c

#include "interpreteur.h"
#include "commandes.h"

Aller au code source de ce fichier.

Fonctions

int changer_etat (int etat, mot_t mot)
 Fonction qui permet de changer l'etat d'un processus.

int lire_etat (mot_t mot)
 Fonction qui permet de lire l'etat d'un processus.

int changer_type_pp (int type, mot_t mot)
 Fonction qui permet de changer le type de la table des pages d'un processus.

int lire_type_pp (mot_t mot)
 Fonction qui permet de lire le type de la table des pages d'un processus.

int pid_libre ()
 Fonction retournant un num de processus libre.

int liberer_pid (int pid)
 Fonction permettant de liberer un num de processus.

int page_libre (int pid)
 Fonction retournant un num de page physique libre ds la memoire.

int page_forcee (int pid)
 Fonction retournant un num de page physique en memoire en l'ayant eventuellement liberee de force.

int liberer_page (int page)
 Fonction permettant de liberer un num de page physique ds la memoire.

int page_swap_libre ()
 Fonction retournant un num de page physique libre ds le swap.

int liberer_page_swap (int page)
 Fonction permettant de liberer un num de page physique ds le swap.

int rapatrier_page_swap (int pid, int page)
 Fonction permettant de mettre en mem principale une page se trouvant ds le swap.

int lire_mot_mem (int num_mot, int num_pp, mot_t mot)
 Fonction permettant de lire un mot se trouvant ds la mem principale.

int ecrire_mot_mem (int num_mot, int num_pp, mot_t mot)
 Fonction permettant d'ecrire un mot se trouvant ds la mem principale.

int adresse_phys (int pid, vad_t ad_v, info_mot_t *info)
 Fonction retournant le num de page (ds la mem ou le swap) d'une adresse virtuelle.

int ecrire_page_swap (page_t page, int num_page)
 Fonction permettant d'ecrire une page dans la mem swap.

int page_swap2mem (int num_page_swap, int num_page_mem)
 Fonction permettant de copier une page du swap ds la mem princale.

int page_mem2swap (int num_page_mem, int num_page_swap)
 Fonction permettant de copier une page de la mem princale ds le swap.

int page_add2proc (int pid, int zone, int page)
 Fonction permettant d'ajouter une page a la table des pages d'un processus.

int page_supp2proc (int pid, int zone)
 Fonction pour supprimer la derniere page d'une zone de la table des pages d'un proc.

int lire_mot (int pid, vad_t ad_v, mot_t mot)
 Fonction permettant de lire un mot a partir d'une adresse virtuelle.

int ecrire_mot (int pid, vad_t ad_v, mot_t mot)
 Fonction qui ecrit un mot a partir d'une adresse virtuelle.

int changer_ppid (int pid, int ppid)
 Fonction permettant de modifier le pid du processus pere.

int lire_ppid (int pid)
 Fonction permettant de lire le pid du processus pere.

int changer_esp (int pid, int op)
 Modifie la hauteur de la pile.

int lire_esp (int pid)
 Retourne la hauteur de la pile.

int verrouiller_tampon (int pid, int num_tampon)
 Verrouille un tampon.

int deverrouiller_tampon (int pid, int num_tampon)
 Deverrouille un tampon.

int ecrire_stdin (int pid, char c)
 Fonction qui ecrit un caractere dans le tampon d'entree d'un processus.

int lire_stdin (int pid, char *c)
 Fonction qui lit un caractere dans le tampon d'entree d'un processus.

int ecrire_stdout (int pid, char c)
 Fonction qui ecrit un caractere dans le tampon de sortie d'un processus.

int lire_stdout (int pid, char *c)
 Fonction qui lit un caractere dans le tampon de sortie d'un processus.

void creer_image_totale (int pid)
 Fonction qui cree un fichier contenant l'image de toute la mem du sys.

void creer_image_mem (int pid)
void interprete_signaux (int pid)
 Fonction qui interprete les signaux pendant d'un processus.

void next_inst (int pid)
 Fonction qui execute l'instruction courante du processus donne.


Description détaillée

Source definissant toutes les fonctions utiles pour interpreter une instruction et par extention toutes les fonctions pour manipuler les processus et la mémoire.

Définition dans le fichier interpreteur.c.


Documentation de la fonction

int adresse_phys int    pid,
vad_t    ad_v,
info_mot_t   info
 

Fonction retournant a partir d'une adresse virtuelle :

  • le numero de la page physique a laquelle elle correspond
  • le type (memoire principale ou secondaire) de cette page
Paramètres:
pid  : num du processus auquel appartient l'adresse virtuelle
ad_v  : adresse virtuelle dont on veut connaitre l'adresse physique correspondante
info  : structure qui sera remplie par l'adresse physique, son type et ses droits
Renvoie:
  • -1 en cas d'erreur
  • -2 recherche en dehors de la pile
  • 0 sinon

Définition à la ligne 710 du fichier interpreteur.c.

Références lire_esp(), lire_etat(), lire_mot_mem(), lire_type_pp(), info_mot_t::mot, vad_t::num, info_mot_t::page, rapatrier_page_swap(), info_mot_t::type, et vad_t::zone.

Référencé par ecrire_mot(), et lire_mot().

int changer_esp int    pid,
int    op
 

Modifie la hauteur de la pile.
Cette hauteur devrait se trouver dans la table des processus. Cependant, faute de place, elle est stockee dans un mot inutilise (le NUM_MOT_ESP+1 eme) de la table des pages de chaque processus.
En plus de modifier la taille, la fonction met aussi a jour la pile en:

  • marquant le dernier mot de la pile comme non utilise en cas de decrementattion
    supprime eventuellement une page physique.
  • marquant le 1er mot au-dela de la pile comme utilise en cas d'incrementation
    rajoute eventuellement une page physique.
Paramètres:
pid  : numero du processus dont on veut connaitre la hauteur de pile
op  : operation (incremente / decremente) a realiser sur la pile
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 1174 du fichier interpreteur.c.

Références ecrire_mot_mem(), liberer_page(), liberer_page_swap(), lire_etat(), lire_mot_mem(), lire_type_pp(), page_forcee(), et rapatrier_page_swap().

Référencé par cmd_appel(), cmd_cpile(), cmd_dpile(), cmd_retour(), et interprete_signaux().

int changer_etat int    etat,
mot_t    mot
 

Fonction qui permet de changer l'etat d'un processus L'information est stockee sur les bits 2, 3 et 4 par ordre de poids croissant (00001110) du 2eme octet de poids faible (ie le 3eme en partant de la droite) du mot

Paramètres:
etat  : le nouvel etat
mot  : l'entree correspondante au processus ds la table des processus
Renvoie:
l'ancien etat

Définition à la ligne 23 du fichier interpreteur.c.

Référencé par cmd_attends(), cmd_ecrit(), cmd_lit(), deverrouiller_tampon(), ecrire_stdin(), init_mem(), interprete_signaux(), lancer_prog(), liberer_pid(), lire_stdout(), et terminer_proc().

int changer_ppid int    pid,
int    ppid
 

Fonction permettant de modifier le pid du processus pere. Le ppid devrait se trouver dans la table des processus. Cependant, faute de place, il est stockee dans un mot inutilise (le NUM_MOT_PPID+1 eme) de la table des pages de chaque processus.

Paramètres:
pid  : num du processus
ppid  : le nouveau num du processus pere
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 1094 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

Référencé par cmd_recouvre(), et terminer_proc().

int changer_type_pp int    type,
mot_t    mot
 

Fonction qui permet de changer le type de la page physique ou est stockee la table des pages d'un processus. L'information est stockee ds le bit de poids faible du 2eme octet de poids faible (ie le 3eme en partant de la droite) du mot

Paramètres:
type  : le nouveau type
mot  : l'entree correspondante au processus ds la table des processus
Renvoie:
l'ancien type

Définition à la ligne 52 du fichier interpreteur.c.

Référencé par cmd_clone(), lancer_prog(), page_forcee(), et rapatrier_page_swap().

void creer_image_mem int    pid
 

Fonction qui cree un fichier contenant l'image du processus a un instant donne.
Cette image represente:

  • la table des processus
    (si le processus pid n'est pas lisible ou est mort, toute la mem est recopiee)
  • la table des pages du processus
  • toutes les pages associes (code, pile, donnee et tampons E/S)
Paramètres:
pid  : num du processus
Renvoie:
rien

Définition à la ligne 2018 du fichier interpreteur.c.

Références creer_image_totale(), lire_etat(), lire_mot_mem(), et lire_type_pp().

Référencé par interprete_signaux().

void creer_image_totale int    pid
 

Fonction qui cree un fichier contenant l'image de toute la memoire du systeme

Paramètres:
pid  : num du processus qui a fait appel a la fonction
(permet de donner un nom au fichier image)
Renvoie:
rien

Définition à la ligne 1957 du fichier interpreteur.c.

Référencé par creer_image_mem().

int deverrouiller_tampon int    pid,
int    num_tampon
 

Deverrouille un tampon:

  • Deverrouille le tampon
  • Reveille un processus ds l'etat E_ATT_LECT ou E_ATT_ECRIT
Paramètres:
pid  : num du processus
num_p_tampon  : num du mot ds la table des pages du processus correspondant au tampon
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 1472 du fichier interpreteur.c.

Références changer_etat(), ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), liste_add_pid(), liste_proc, liste_supp_pid(), et rapatrier_page_swap().

Référencé par ecrire_stdin(), ecrire_stdout(), lire_stdin(), et lire_stdout().

int ecrire_mot int    pid,
vad_t    ad_v,
mot_t    mot
 

Fonction qui ecrit un mot a partir d'une adresse virtuelle. Il faut que cette adresse virtuelle reference une adresse physique existante car elle ne cree pas de page automatiquement. Le mot ecrit est systematiquement marque comme utilise car la fonction ne sert pas a diminuer l'espace memoire du processus.

Paramètres:
pid  : Numero du processus auquel appartient la page dans laquelle on veut ecrire un mot
ad_v  : Adresse virtuelle du mot a ecrire
mot  : Le mot a ecrire
Renvoie:
  • -1 en cas d'erreur
  • -2 en cas d'ecriture en dehors de l'espace mem
  • 0 sinon

Définition à la ligne 1036 du fichier interpreteur.c.

Références adresse_phys(), ecrire_mot_mem(), lire_mot_mem(), info_mot_t::mot, info_mot_t::page, rapatrier_page_swap(), info_mot_t::type, et vad_t::zone.

Référencé par cmd_affect(), cmd_affectp(), cmd_affectsp(), cmd_appel(), cmd_attends(), cmd_capture(), cmd_clone(), cmd_ecrit(), cmd_emets(), cmd_id(), cmd_idp(), cmd_lit(), cmd_recouvre(), interprete_signaux(), et terminer_proc().

int ecrire_mot_mem int    num_mot,
int    num_pp,
mot_t    mot
 

Fonction permettant d'ecrire un mot dans la mem principale

Paramètres:
num_pp  : Numero de la page physique en memoire ds laquelle on veut ecrire un mot
num_mot  : Emplacement ds cette page ou on veut ecrire le mot
mot  : Le mot a ecrire
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 673 du fichier interpreteur.c.

Références liste_acces_page(), et liste_pages.

Référencé par changer_esp(), changer_ppid(), cmd_affect(), cmd_affectp(), cmd_affectsp(), cmd_appel(), cmd_attends(), cmd_capture(), cmd_clone(), cmd_cpile(), cmd_donnees(), cmd_dpile(), cmd_ecrit(), cmd_emets(), cmd_id(), cmd_idp(), cmd_lit(), cmd_retour(), cmd_saut(), cmd_si(), cmd_test(), deverrouiller_tampon(), ecrire_mot(), ecrire_stdin(), ecrire_stdout(), interprete_signaux(), lancer_prog(), liberer_page(), liberer_page_swap(), liberer_pid(), lire_stdin(), lire_stdout(), next_inst(), page_add2proc(), page_forcee(), page_libre(), page_supp2proc(), page_swap_libre(), pid_libre(), rapatrier_page_swap(), signal_proc(), supprimer_partie_proc(), terminer_proc(), et verrouiller_tampon().

int ecrire_page_swap page_t    page,
int    num_page
 

Fonction permettant d'ecrire une page dans la memoire swap

Paramètres:
page  : page a ecrire
num_page  : numero de la page swap ou il faut ecrire
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 793 du fichier interpreteur.c.

Référencé par lancer_prog().

int ecrire_stdin int    pid,
char    c
 

Fonction qui ecrit un caractere dans le tampon d'entree d'un processus.
Elle est non bloquante.
A la fin, reveille le proc pid s'il etait en E_ATT_LECT.

Paramètres:
pid  : num du processus
c  : le caractere a ecrire
Renvoie:
  • -1 en cas d'erreur inconnue
  • -2 plus de place dans le tampon
  • -3 tampon verrouille
  • 0 sinon

Définition à la ligne 1537 du fichier interpreteur.c.

Références changer_etat(), deverrouiller_tampon(), ecrire_mot_mem(), liberer_page(), lire_etat(), lire_mot_mem(), lire_type_pp(), liste_add_pid(), liste_proc, liste_supp_pid(), page_forcee(), rapatrier_page_swap(), et verrouiller_tampon().

Référencé par modif_process().

int ecrire_stdout int    pid,
char    c
 

Fonction qui ecrit un caractere dans le tampon d'entree d'un processus.
La fonction n'est pas bloquante mais elle retourne un code d'erreur qui permet a la fonction appelante de bloquer le processus (E_ATT_ECRIT).

Paramètres:
pid  : num du processus
c  : le caractere a ecrire
Renvoie:
  • -1 en cas d'erreur inconnue
  • -2 plus de place dans le tampon
  • -3 tampon verrouille
  • 0 sinon

Définition à la ligne 1750 du fichier interpreteur.c.

Références deverrouiller_tampon(), ecrire_mot_mem(), liberer_page(), lire_etat(), lire_mot_mem(), lire_type_pp(), page_forcee(), rapatrier_page_swap(), et verrouiller_tampon().

Référencé par cmd_ecrit().

void interprete_signaux int    pid
 

Fonction qui interprete les signaux pendant d'un processus

Paramètres:
pid  : num du processus
Renvoie:
rien

Définition à la ligne 2189 du fichier interpreteur.c.

Références changer_esp(), changer_etat(), signal::cp, creer_image_mem(), ecrire_mot(), ecrire_mot_mem(), lire_etat(), lire_mot_mem(), liste_add_pid(), liste_proc, liste_supp_pid(), vad_t::num, rechercher_sig(), SIFINSTI, SIFKILL, SIFMEM, SIFREP, SIFSUSP, SIFUNSIG, SIFUSR1, SIFUSR2, terminer_proc(), et vad_t::zone.

Référencé par top_horloge_handler().

int liberer_page int    page
 

Fonction permettant de liberer un numero de page physique ds la memoire

Paramètres:
page  : Numero de la page non utilisee (a liberer)
Renvoie:
  • -1 erreur : le numero de page n'a pas ete libere
  • -2 erreur : le numero de page a ete libere mais le numero de la plus petite page n'est peut-etre plus exact
  • 0 succes

Définition à la ligne 384 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_mot_mem(), liste_pages, et liste_supp_page().

Référencé par changer_esp(), cmd_clone(), cmd_recouvre(), ecrire_stdin(), ecrire_stdout(), lancer_prog(), page_libre(), page_supp2proc(), rapatrier_page_swap(), supprimer_partie_proc(), et supprimer_proc().

int liberer_page_swap int    page
 

Fonction permettant de liberer un numero de page physique ds le swap

Paramètres:
page  : Numero de la page non utilisee (a liberer)
Renvoie:
  • -1 erreur : le numero de page n'a pas ete libere
  • -2 erreur : le numero de page a ete libere mais le pointeur courant n'a pas ete mis a jour
  • 0 succes

Définition à la ligne 466 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_mot_mem(), et page_mem2swap().

Référencé par changer_esp(), cmd_recouvre(), page_forcee(), page_supp2proc(), rapatrier_page_swap(), et supprimer_partie_proc().

int liberer_pid int    pid
 

Fonction permettant de liberer un num de processus apres sa mort

Paramètres:
pid  : Numero du processus mort qu'il faut donc declare comme libre
Renvoie:
  • -1 erreur : le numero de processus n'a pas ete libere
  • -2 erreur : le numero de processus a ete libere mais le numero de le plus petit pid n'est peut-etre plus exact
  • 0 succes

Définition à la ligne 131 du fichier interpreteur.c.

Références changer_etat(), ecrire_mot_mem(), et lire_mot_mem().

Référencé par cmd_clone(), lancer_prog(), et supprimer_proc().

int lire_esp int    pid
 

Retourne la hauteur de la pile. Cette hauteur devrait se trouver dans la table des processus. Cependant, faute de place, elle est stockee dans un mot inutilise (le NUM_MOT_ESP+1 eme) de la table des pages de chaque processus.

Paramètres:
pid  : numero du processus dont on veut connaitre la hauteur de pile
Renvoie:
  • -1 en cas d'erreur
  • la hauteur sinon

Définition à la ligne 1388 du fichier interpreteur.c.

Références lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

Référencé par adresse_phys().

int lire_etat mot_t    mot
 

Fonction qui permet de lire l'etat d'un processus L'information est stockee sur les bits 2, 3 et 4 par ordre de poids croissant (00001110) du 2eme octet de poids faible (ie le 3eme en partant de la droite) du mot

Paramètres:
mot  : l'entree correspondante au processus ds la table des processus
Renvoie:
l'etat courant

Définition à la ligne 39 du fichier interpreteur.c.

Référencé par adresse_phys(), changer_esp(), changer_ppid(), cmd_appel(), cmd_attends(), cmd_clone(), cmd_donnees(), cmd_recouvre(), cmd_retour(), creer_image_mem(), deverrouiller_tampon(), ecrire_stdin(), ecrire_stdout(), interprete_signaux(), lire_esp(), lire_ppid(), lire_stdin(), lire_stdout(), liste_process(), next_inst(), page_add2proc(), page_supp2proc(), pid_libre(), rapatrier_page_swap(), supprimer_partie_proc(), supprimer_proc(), terminer_proc(), et verrouiller_tampon().

int lire_mot int    pid,
vad_t    ad_v,
mot_t    mot
 

Fonction permettant de lire un mot a partir d'une adresse virtuelle (si elle correspond a une page physique existante).

Paramètres:
pid  : numero du processus auquel appartient la page dont on veut lire un mot
ad_v  : adresse virtuelle du mot a lire
mot  : structure dans laquelle on stocke le mot lu
Renvoie:
  • -1 en cas d'erreur
  • -2 le mot ne fait pas parti de l'espace mem du processus (cependant il a qd meme ete lu si il fait parti de la zone de code ou de donnees)
  • 0 sinon

Définition à la ligne 988 du fichier interpreteur.c.

Références adresse_phys(), lire_mot_mem(), info_mot_t::mot, info_mot_t::page, rapatrier_page_swap(), et info_mot_t::type.

Référencé par cmd_affect(), cmd_affectp(), cmd_attends(), cmd_capture(), cmd_ecrit(), cmd_emets(), cmd_lit(), cmd_recouvre(), cmd_retour(), cmd_test(), next_inst(), parser_param(), et terminer_proc().

int lire_mot_mem int    num_mot,
int    num_pp,
mot_t    mot
 

Fonction permettant de lire un mot se trouvant ds la mem principale

Paramètres:
num_pp  : Numero de la page physique en memoire ds laquelle on veut lire un mot
num_mot  : Numero du mot qu'on veut lire ds cette page
mot  : Structure qui sera remplie apres lecture
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 638 du fichier interpreteur.c.

Références liste_acces_page(), et liste_pages.

Référencé par adresse_phys(), changer_esp(), changer_ppid(), cmd_affect(), cmd_affectp(), cmd_affectsp(), cmd_appel(), cmd_attends(), cmd_capture(), cmd_clone(), cmd_cpile(), cmd_donnees(), cmd_dpile(), cmd_ecrit(), cmd_emets(), cmd_id(), cmd_idp(), cmd_lit(), cmd_recouvre(), cmd_retour(), cmd_saut(), cmd_si(), cmd_test(), creer_image_mem(), deverrouiller_tampon(), ecrire_mot(), ecrire_stdin(), ecrire_stdout(), interprete_signaux(), liberer_page(), liberer_page_swap(), liberer_pid(), lire_esp(), lire_mot(), lire_ppid(), lire_stdin(), lire_stdout(), liste_process(), next_inst(), page_add2proc(), page_forcee(), page_libre(), page_supp2proc(), page_swap_libre(), pid_libre(), printpp(), printsig(), printtp(), rapatrier_page_swap(), signal_proc(), supprimer_partie_proc(), supprimer_proc(), terminer_proc(), et verrouiller_tampon().

int lire_ppid int    pid
 

Fonction permettant de lire le pid du processus pere. Le ppid devrait se trouver dans la table des processus. Cependant, faute de place, il est stockee dans un mot inutilise (le NUM_MOT_PPID+1 eme) de la table des pages de chaque processus.

Paramètres:
pid  : num du processus
Renvoie:
  • -1 en cas d'erreur
  • le ppid sinon

Définition à la ligne 1132 du fichier interpreteur.c.

Références lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

Référencé par cmd_attends(), cmd_idp(), cmd_recouvre(), et terminer_proc().

int lire_stdin int    pid,
char *    c
 

Fonction qui lit un caractere dans le tampon d'entree d'un processus.
La fonction n'est pas bloquante mais elle retourne un code d'erreur qui permet a la fonction appelante de bloquer le processus (E_ATT_LECT).

Paramètres:
pid  : num du processus
c  : le caractere a lire
Renvoie:
  • -1 en cas d'erreur inconnue
  • -2 rien a lire
  • -3 tampon verrouille
  • 0 sinon

Définition à la ligne 1658 du fichier interpreteur.c.

Références deverrouiller_tampon(), ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), rapatrier_page_swap(), et verrouiller_tampon().

Référencé par cmd_lit().

int lire_stdout int    pid,
char *    c
 

Fonction qui lit un caractere dans le tampon de sortie d'un processus.
Elle est non bloquante.
Reveille le proc pid s'il etait en E_ATT_ECRIT

Paramètres:
pid  : num du processus
c  : le caractere a lire
Renvoie:
  • -1 en cas d'erreur inconnue
  • -2 rien a lire
  • -3 tampon verrouille
  • 0 sinon

Définition à la ligne 1859 du fichier interpreteur.c.

Références changer_etat(), deverrouiller_tampon(), ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), liste_add_pid(), liste_proc, liste_supp_pid(), rapatrier_page_swap(), et verrouiller_tampon().

int lire_type_pp mot_t    mot
 

Fonction qui permet de lire le type de la page physique ou est stockee la table des pages d'un processus. L'information est stockee ds le bit de poids faible du 2eme octet de poids faible (ie le 3eme en partant de la droite) du mot

Paramètres:
mot  : l'entree correspondante au processus ds la table des processus
Renvoie:
Le type de la page (PP_SWAP ou PP_RAM)

Définition à la ligne 68 du fichier interpreteur.c.

Référencé par adresse_phys(), changer_esp(), changer_ppid(), cmd_attends(), cmd_clone(), cmd_donnees(), cmd_recouvre(), creer_image_mem(), deverrouiller_tampon(), ecrire_stdin(), ecrire_stdout(), lire_esp(), lire_ppid(), lire_stdin(), lire_stdout(), page_add2proc(), page_supp2proc(), rapatrier_page_swap(), supprimer_partie_proc(), supprimer_proc(), terminer_proc(), et verrouiller_tampon().

void next_inst int    pid
 

Fonction qui execute l'instruction courante du processus donne en param

Paramètres:
pid  : num du processus
Renvoie:
rien

Définition à la ligne 2397 du fichier interpreteur.c.

Références cmd_affect(), cmd_affectp(), cmd_affectsp(), cmd_appel(), cmd_attends(), cmd_capture(), cmd_clone(), cmd_cpile(), cmd_donnees(), cmd_dpile(), cmd_ecrit(), cmd_emets(), cmd_fin(), cmd_id(), cmd_idp(), cmd_lit(), cmd_recouvre(), cmd_retour(), cmd_saut(), cmd_si(), cmd_test(), ecrire_mot_mem(), lire_etat(), lire_mot(), lire_mot_mem(), vad_t::num, terminer_proc(), et vad_t::zone.

Référencé par top_horloge_handler().

int page_add2proc int    pid,
int    zone,
int    page
 

Fonction permettant d'ajouter une page a la table des pages d'un processus. Cette page est ajoutee a la suite des pages deja presentes.

Paramètres:
pid  : numero du processus auquel on veut ajouter une page
zone  : zone memoire du processus ou la page doit etre ajoutee
page  : numero de la page en memoire principale a ajouter
Renvoie:
  • -1 en cas d'erreur
  • -2 plus de place pour rajouter une page ds la zone voulue
  • 0 en cas de succes

Définition à la ligne 844 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

int page_forcee int    pid
 

Fonction retournant un num de page physique de la memoire principale. La page retournee est

  • soit une page libre s'il reste des pages en memoire principale
  • soit une page utilisee dont on a copier le contenu ds le swap apres modification de la table des pages du processus auquel elle appartenait. Dans ce cas, il s'agit de la page utilisee le moins recemment.
Paramètres:
pid  : Numero du processus auquel on veut attacher cette page
Renvoie:
  • -1 en cas d'erreur
  • -2 S'il n'y a plus de page libre en memoire principale et secondaire
  • un num de page libre

Définition à la ligne 238 du fichier interpreteur.c.

Références changer_type_pp(), ecrire_mot_mem(), liberer_page_swap(), lire_mot_mem(), liste_acces_page(), liste_old_page(), liste_pages, page_libre(), page_mem2swap(), et page_swap_libre().

Référencé par changer_esp(), cmd_clone(), cmd_donnees(), ecrire_stdin(), ecrire_stdout(), lancer_prog(), et rapatrier_page_swap().

int page_libre int    pid
 

Fonction retournant un num de page physique libre ds la memoire afin de l'attacher a un processus.

Paramètres:
pid  : Numero du processus auquel on veut attacher cette page
Renvoie:
  • -1 en cas d'erreur
  • -2 S'il n'y a plus de page libre en memoire principale
  • un num de page libre

Définition à la ligne 158 du fichier interpreteur.c.

Références ecrire_mot_mem(), liberer_page(), lire_mot_mem(), liste_add_page(), liste_pages, et page_libre().

Référencé par lancer_prog(), page_forcee(), et page_libre().

int page_mem2swap int    num_page_mem,
int    num_page_swap
 

Fonction permettant de copier une page de la mem princale ds le swap

Paramètres:
num_page_mem  : numero de la page a copier
num_page_swap  : numero de la page swap dans laquelle on veut faire la copie
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 825 du fichier interpreteur.c.

Référencé par liberer_page_swap(), et page_forcee().

int page_supp2proc int    pid,
int    zone
 

Fonction permettant de supprimer la derniere page d'une des zones memoire d'un processus. Cela consiste a:

  • supprimer le mot qui lui correspond dans la table des pages du processus
  • liberer cette page
Paramètres:
pid  : numero du processus auquel on veut supprimer une page
zone  : zone memoire du processus ou la derniere page doit etre suprimer
Renvoie:
  • -1 en cas d'erreur
  • -2 il n'y a pas de page a supprimer dans cette zone
  • 0 en cas de succes

Définition à la ligne 901 du fichier interpreteur.c.

Références ecrire_mot_mem(), liberer_page(), liberer_page_swap(), lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

int page_swap2mem int    num_page_swap,
int    num_page_mem
 

Fonction permettant de copier une page du swap dans la memoire princale

Paramètres:
num_page_swap  : numero de la page a copier
num_page_mem  : numero de la page memoire dans laquelle on veut faire la copie
Renvoie:
  • -1 en cas d'erreur
  • 0 sinon

Définition à la ligne 809 du fichier interpreteur.c.

Référencé par page_swap_libre(), et rapatrier_page_swap().

int page_swap_libre  
 

Fonction retournant un numero de page physique du swap libre

Renvoie:
  • -1 En cas d'erreur
  • -2 S'il n'y a plus de page libre en memoire principale
  • un num de page libre

Définition à la ligne 420 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_mot_mem(), et page_swap2mem().

Référencé par lancer_prog(), et page_forcee().

int pid_libre  
 

Fonction retournant un numero de processus libre

Renvoie:
  • -1 en cas d'erreur
  • -2 S'il n'y a plus de pid libre
  • un num de processus libre

Définition à la ligne 79 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_etat(), lire_mot_mem(), liste_add_pid(), liste_proc, liste_supp_pid(), et pid_libre().

Référencé par cmd_clone(), lancer_prog(), et pid_libre().

int rapatrier_page_swap int    pid,
int    page
 

Fonction permettant de mettre en memoire principale une page du processus 'pid' se trouvant dans le swap. Fait toutes les modifications necessaires dans la table des pages RAM et la table des processus ou la table des pages du processus 'pid'.

Paramètres:
page  : Numero de la page swap qu'on veut mettre en memoire principale
Renvoie:
  • -1 en cas d'erreur
  • -2 erreur : plus assez de memoire pour realiser l'operation (minimum : 1 page swap libre)
  • le numero de la page memoire dans laquelle a ete copiee la page swap

Définition à la ligne 515 du fichier interpreteur.c.

Références changer_type_pp(), ecrire_mot_mem(), liberer_page(), liberer_page_swap(), lire_etat(), lire_mot_mem(), lire_type_pp(), page_forcee(), et page_swap2mem().

Référencé par adresse_phys(), changer_esp(), changer_ppid(), cmd_attends(), cmd_clone(), cmd_donnees(), deverrouiller_tampon(), ecrire_mot(), ecrire_stdin(), ecrire_stdout(), lire_esp(), lire_mot(), lire_ppid(), lire_stdin(), lire_stdout(), page_add2proc(), page_supp2proc(), supprimer_partie_proc(), supprimer_proc(), terminer_proc(), et verrouiller_tampon().

int verrouiller_tampon int    pid,
int    num_tampon
 

Verrouille un tampon:

  • Verifie que le tampmon n'est pas deja verrouille
  • Vourrouille le tampon
Paramètres:
pid  : num du processus
num_p_tampon  : num du mot ds la table des pages du processus correspondant au tampon
Renvoie:
  • -1 en cas d'erreur
  • -3 le tampon est deja verrouille
  • 0 sinon

Définition à la ligne 1426 du fichier interpreteur.c.

Références ecrire_mot_mem(), lire_etat(), lire_mot_mem(), lire_type_pp(), et rapatrier_page_swap().

Référencé par ecrire_stdin(), ecrire_stdout(), lire_stdin(), et lire_stdout().


Généré le Sun Sep 29 22:47:24 2002 pour KSInu par doxygen1.2.16