This is an old revision of the document!


Devoir 2 - Mini-busybox

Le but de ce devoir est de créer une bibliothèque d’allocation de mémoire appelée sde_alloc. Il simule la modalité dans laquel la mémoire est allouée à l’aide de l’allocateur standard, c’est-à-dire des fonctions malloc et free.

Informations générales

Date limite: 18 Mars, 23:55
Points: 1 point de la note finale
Téléchargement du devoir: vmchecker.cs.pub.ro
Télécharger en retard: 1 points / jour (maximum 4 jours)

Connaissances évaluées

  • Utiliser le langage Python
  • Comprendre le mode de fonctionnement de la ligne de commande

Règles

  1. Le devoir doit contenir un fichier nommé Readme avec des explications concernant la manière choisie pour résoudre le devoir (-0.1p)
  2. Le devoir doit être implémenté en Python et seulement en utilisant des fonctions POSIX (la bibliothèque os de Python). Toute autre implémentation conduira à l'annulation du devoir.(0 points)

Copiage

Le devoir est individuel. Toute tentative de copier entraînera 0p pour les devoirs. On utilisera un système automatisé pour détecter le copiage. Si on a des doutes, on va vous adresser des questions supplémentaires concernant le devoir.

Questions

Si vous avez des questions concernant le devoir, posez-les en publiant un issue sur le github repository avec le format [busybox] <le titre de votre question> . Vous aurez besoin d'un compte github pour publier des questions.

NE PUBLIEZ PAS DE CODE SOURCE. Cela est considéré comme copiage et vous aller recevoir 0p pour le devoir.

Si vous voulez recevoir un e-mail lorsque des problèmes sont signalés ou lorsqu'il y a de nouveaux messages, accédez au site github repository et cliquez sur Watch.

Mini-busybox

Le but de ce devoir est d’implémenter un utilitaire capable d'exécuter des commandes de type Linux bash.

Pour résoudre le devoir, vous allez réaliser un script de Python qui reçoit comme arguments la commande qu'on désire d'exécuter, suivie par ses paramètres. Le script exécutera la commande et après il finira son exécution.

Exemple:

python busybox.py cp file folder

Le programme sera exécuté en utilisant Python 3.

Commandes acceptées

En ce qui suit, on va définir les commandes supportées par l'utilitaire, ainsi que le comportement caractéristique et les parametres acceptés. Pour toute autre commande ou pour un format différent, le script va afficher le message Invalid command et il va retourner la valeur 1.

Si la commande reçue par l'utilitaire a été exécutée sans erreur, le script va retourner la valeur 1. Si non, il va retourner la valeur 1.

Pour vous aider à comprendre le mode fonctionnement de chaque commande, on a attaché la page de mannuel de celle-ci. On de demande pas l'implémentation de tous les parametres précisés dans le manuel, mais seulement de ceux qui seront précisés dans l'énoncé du devoir.

Les parametres qui ont la forme [param] sont optionnels.

Les commandes supportées par l'application mini-busybox sont:

  1. pwd - Affiche le chemin complet du directoire courant (https://linux.die.net/man/1/pwd)

Exemple:

$ python busybox.py pwd
/home/pi/my_directories
  1. echo [option] arguments - Affiche les arguments de la console, suivies par une nouvelle ligne (https://linux.die.net/man/1/echo)
    1. -n on n'ajoute pas une nouvelle ligne

Exemple:

$ python busybox.py echo a b c
a b c
$ python busybox.py echo -n a b c
a b c$ 
  1. cat fichiers - Concatène le contenu des fichiers et l'affiche a la sortie standard (https://linux.die.net/man/1/cat)

Exemple:

$ python busybox.py cat file1
Text in file1                       
$ python busybox.py cat file2
Text in file 2
$ python busybox.py cat file1 file2
Text in file1
Text in file 2 
  1. mkdir directoires - Crée les directoires envoyés comme parametre, s'ils n'existent pas. Si l'opération de création des directoires échoue, le script va retourner la valeur 1. (https://linux.die.net/man/1/mkdir)

Exemple:

 python busybox.py mkdir my_drectory
 python busybox.py mkdir my_drectory1 my_drectory2 my_drectory3
  1. mv source destination - Déplace/Renomme le fichier/directoire source dans la destination (https://linux.die.net/man/1/mv)

Exemple:

python busybox.py mv my_file my_directory
python busybox.py mv my_directory1 my_drectory2 
  1. ln [option] source nom_lien - Crée un lien symbolique avec le nom nom_lien vers le fichier source. On peut créer un lien seulement vers un fichier. (https://linux.die.net/man/1/ln)
    1. -s, -symbolic crée un lien symbolique a la place d'un lien hard

Exemple:

python busybox.py ln my_file my_file_link
python busybox.py ln -s my_file my_file_link3

Télécharger les devoirs

Les devoirs doivent être téléchargés sur vmchecker. Connectez-vous avec votre nom d'utilisateur moodle, sélectionnez le cours Systemes d'Explotation (FILS) et téléchargez l'archive de devoir.

Readme

Le fichier readme a le format suivant:

Nom complet
Groupe

Une explication comment vous avez écrit le devoir, ce que vous avez utilisé, les idées principales.

Archivage de devoir

Pour télécharger votre devoir, suivez les instructions suivantes:

  1. Créez une archive zip (pas rar, ace, 7zip ou autre) contenant:
    • vos fichiers antet (*.h)
    • vos fichiers source (*.c)
    • le fichier Makefile (déjà fait dans le template de devoir)
    • le fichier Readme
  2. Connectez-vous avec vmchecker
  3. sélectionner le cours Systemes d'Explotation (FILS)
  4. sélectionnez 2. Allocator
  5. télécharger l'archive

L'archive doit contenir les fichiers dans sa racine, pas dans un dossier. NE PAS archiver un dossier avec les fichiers, archiver DIRECTEMENT les fichiers.

NE PAS inclure les fichiers objets (*.o) et le fichier executable (Suggestion: utilisez make clean pour les supprimer avant d’archiver le devoir).

Lorsque l'archive est téléchargée, vmchecker va exécuter:

unzip archive.zip homework
cd homework
make build
make run
sde/teme/tema_fr_2.1583180176.txt.gz · Last modified: 2020/03/02 22:16 by diana.ghindaoanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0