Laboratoire 6 - Systèmes de gestion des fichiers — 0001-01-01

Attributs des fichiers et table des inodes L’objectif est d’écrire une version simplifiée du programme ls. Essayez de suivre les étapes suivantes : Le programme mini_ls avec uid et gid #include <stdio.h> #include <sys/stat.h> #include <unistd.h> #include <sys/types.h> #include <string.h> #include <time.h> #include <sys/sysmacros.h> int main(int argc, char * argv[]) { struct stat statbuf; int retour_stat, i; char type[30]; char permission[4]; char droits[20] = ""; char Date_modification[30]; if (argc != 2) { printf("Usage: %s nom_du_fichier\n", argv[0]); return 1; } retour_stat = lstat(argv[1], & statbuf); if (retour_stat == -1) { perror("Erreur de la récupération des informations"); return 1; } switch (statbuf.

Laboratoire 6 - Systèmes de gestion des fichiers — 0001-01-01

L’objectif de ce laboratoire est de se familiariser avec le système de gestion des fichiers. Remarque: n’oubliez pas, lors de l’utilisation d’appels systèmes, de traiter les cas d’erreur. Attributs des fichiers et table des inodes L’objectif est d’écrire une version simplifiée du programme ls. Des options supplémentaires sont ajoutées dans le laboratoire suivant. Essayez de suivre les étapes suivantes : Écrivez un programme mini_ls qui, pour un fichier donné en argument, affiche à l’écran: le numéro d’inode, le type de fichier, les droits d’accès, le nombre de liens durs, l’uid et le gid propriétaires, la taille du fichier, et la date de dernière modification.

Laboratoire 5 - Ordonnanceur — 0001-01-01

L’objectif de ce laboratoire est de se familiariser avec les stratégies d’ordonnancement standards. Ordonnancement Le programme suivant utilise une version modifiée du crible d’Ératosthène pour compter les nombres premiers inférieurs ou égaux à un nombre passé en argument. Il répartit l’exécution sur plusieurs threads (Comme au lab 3). #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<math.h> #include<pthread.h> //variables globales bool *work_list = NULL; long int nb_thread ; long int maximum ; // Chaque thread travaille sur une fraction du tableau // Chacun commence à un indice différent puis "saute" par-dessus les autres void *do_work(void *ptr) { long int depart = (long int)ptr; bool is_prime= false; for(long int i = depart; i <= maximum; i+= nb_thread) { is_prime = true; // C'est inefficace, car on parcourt tous les entiers // au lieu de tester seulement les nombres premiers // mais c'est plus simple à coder (pas de synchronisation nécessaire) for(long int j=2;j <= (long int )sqrt((double)i); j++) { if(i%j == 0){ is_prime = false; break; } } if(is_prime){ work_list[i] = true; } } } int main(int argc, char **argv) { int nb=0, i, depart_argument; if (argc < 3) { fprintf(stderr, "Vous devez fournir la borne supérieure et le nombre de threads\n"); return 1; } char* endptr = NULL; maximum = strtol(argv[1], &endptr, 0); // Entier maximum à tester if (*endptr !

Laboratoire 4 - fork et exec — 0001-01-01

L’objectif de ce laboratoire est de se familiariser avec l’utilisation des appels système fork et exec Mise en bouche Écrire un programme fork0 effectuant les opérations suivantes, dans l’ordre : Afficher « Mon PID est <pid>! ». Pour obtenir le PID, utiliser getpid(). Appeler la fonction fork(). Afficher « Je suis le <père|fils> et mon PID est <pid>. » Voici un exemple de résultat: Mon PID est <22097> Je suis le père et mon PID est <22097> Je suis le fils et mon PID est <22098> Multiple fils Écrire un programme famille qui crée 10 processus fils.

Laboratoire 3 - Mémoire et parallélisme — 0001-01-01

L’objectif de ce laboratoire est de regarder l’organisation de la mémoire dans les processus et de s’initier à la programmation multithread. Tailles des binaires Écrivez puis compilez : un programme p0 qui retourne seulement 42: echo 'int main(int argc, char *argv[]){ return 42; }' > p0.c. un programme p1 similaire à p0 mais qui include les trois fichiers d’entête standard: stdlib.h, stdio.h, unistd.h. un programme p2 similaire à p0 mais en ajoutant une variable globale non initialisée char tableau[8000];.