#include "lib_ksinu.h"
#include "fifo.h"
Aller au code source de ce fichier.
Composants | |
struct | info_mot_t |
Structure definissant un mot physique. | |
struct | vad_t |
Structure definissant une adresse virtuelle. | |
Définitions des macros | |
#define | Z_CODE 0 |
#define | Z_DONNEES 1 |
#define | Z_PILE 2 |
#define | I_AFFECT 1 |
#define | I_AFFECTP 2 |
#define | I_SI 3 |
#define | I_SAUT 4 |
#define | I_CPILE 5 |
#define | I_DPILE 6 |
#define | I_APPEL 7 |
#define | I_RETOUR 8 |
#define | I_TEST 9 |
#define | I_TRAPPE 10 |
#define | I_AFFECTSP 11 |
#define | I_DONNEES 255 |
#define | T_CLONE 1 |
#define | T_RECOUVRE 2 |
#define | T_ATTENDS 3 |
#define | T_FIN 4 |
#define | T_CAPTURE 5 |
#define | T_EMETS 6 |
#define | T_ID 7 |
#define | T_IDP 8 |
#define | T_LIT 9 |
#define | T_ECRIT 10 |
Fonctions | |
int | liberer_pid (int pid) |
Fonction permettant de liberer un num de processus. | |
int | pid_libre () |
Fonction retournant un num de processus libre. | |
int | liberer_page (int page) |
Fonction permettant de liberer un num de page physique ds la memoire. | |
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_swap (int page) |
Fonction permettant de liberer un num de page physique ds le swap. | |
int | page_swap_libre () |
Fonction retournant un num de page physique libre 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 | 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 | 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 | 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 | 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 | 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 | 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 | ecrire_page_swap (page_t page, int num_page) |
Fonction permettant d'ecrire une page dans la mem swap. | |
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 | 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 | next_inst (int pid) |
Fonction qui execute l'instruction courante du processus donne. | |
void | interprete_signaux (int pid) |
Fonction qui interprete les signaux pendant d'un processus. | |
void | creer_immage_mem (int pid) |
Fonction qui cree un fichier contenant l'image du proc a un instant donne. | |
void | creer_image_totale (int pid) |
Fonction qui cree un fichier contenant l'image de toute la mem du sys. |
Définition dans le fichier interpreteur.h.
|
Fonction retournant a partir d'une adresse virtuelle :
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(). |
|
Modifie la hauteur de la pile.
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(). |
|
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
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(). |
|
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.
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(). |
|
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
Définition à la ligne 52 du fichier interpreteur.c. Référencé par cmd_clone(), lancer_prog(), page_forcee(), et rapatrier_page_swap(). |
|
Fonction qui cree un fichier contenant l'image de toute la memoire du systeme
Définition à la ligne 1957 du fichier interpreteur.c. Référencé par creer_image_mem(). |
|
Deverrouille un tampon:
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(). |
|
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.
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(). |
|
|
Fonction permettant d'ecrire une page dans la memoire swap
Définition à la ligne 793 du fichier interpreteur.c. Référencé par lancer_prog(). |
|
Fonction qui ecrit un caractere dans le tampon d'entree d'un processus.
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(). |
|
Fonction qui ecrit un caractere dans le tampon d'entree d'un processus.
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(). |
|
Fonction qui interprete les signaux pendant d'un processus
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(). |
|
Fonction permettant de liberer un numero de page physique ds la memoire
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(). |
|
Fonction permettant de liberer un numero de page physique ds le swap
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(). |
|
Fonction permettant de liberer un num de processus apres sa mort
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(). |
|
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.
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(). |
|
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
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(). |
|
Fonction permettant de lire un mot a partir d'une adresse virtuelle (si elle correspond a une page physique existante).
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(). |
|
Fonction permettant de lire un mot se trouvant ds la mem principale
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(). |
|
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.
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(). |
|
Fonction qui lit un caractere dans le tampon d'entree d'un processus.
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(). |
|
Fonction qui lit un caractere dans le tampon de sortie d'un processus.
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(). |
|
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
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(). |
|
Fonction qui execute l'instruction courante du processus donne en param
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(). |
|
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.
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(). |
|
Fonction retournant un num de page physique de la memoire principale. La page retournee est
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(). |
|
Fonction retournant un num de page physique libre ds la memoire afin de l'attacher a un processus.
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(). |
|
Fonction permettant de copier une page de la mem princale ds le swap
Définition à la ligne 825 du fichier interpreteur.c. Référencé par liberer_page_swap(), et page_forcee(). |
|
Fonction permettant de supprimer la derniere page d'une des zones memoire d'un processus. Cela consiste a:
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(). |
|
Fonction permettant de copier une page du swap dans la memoire princale
Définition à la ligne 809 du fichier interpreteur.c. Référencé par page_swap_libre(), et rapatrier_page_swap(). |
|
Fonction retournant un numero de page physique du swap 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(). |
|
Fonction retournant un numero 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(). |
|
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'.
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(). |
|
Verrouille un tampon:
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(). |