Vous êtes sur la page 1sur 7

Qu'est-ce qu'un Système d'Exploitation Unix-like ?

Un système d'exploitation Unix-like est un système d'exploitation inspiré du


système d'exploitation Unix original, qui imite ses fonctionnalités et son interface
utilisateur. Il peut inclure des fonctionnalités supplémentaires, mais conserve
l'architecture de base et la philosophie de conception d'Unix. Exemples incluent
Page | 1
Linux, macOS, et BSD.
Quels sont principes de base de Linux
Les principes de base de Linux sont :
Liberté de l'utilisateur : les utilisateurs peuvent exécuter, copier, distribuer,
étudier et modifier le logiciel.
Collaboration et communauté : le développement de Linux est géré par une
communauté de développeurs de logiciels bénévoles.
Architecture ouverte : le code source est disponible pour tous, ce qui permet à
d'autres développeurs de contribuer et d'améliorer le système.
Interopérabilité : le système est conçu pour être compatible avec un grand
nombre de logiciels et de matériels.
Sécurité : la sécurité est un élément clé de la conception de Linux.
Quel est le point commun entre toutes les distributions Linux ?
Le noyau Linux est le point commun entre toutes les distributions Linux. Le
noyau est le logiciel central du système d'exploitation qui gère les ressources du
système et permet aux applications de communiquer avec le matériel. Les
distributions Linux sont basées sur le noyau Linux, mais incluent d'autres logiciels et
applications pour fournir une expérience utilisateur complète. Les différences entre
les distributions se trouvent généralement dans la sélection des applications, la
personnalisation de l'interface utilisateur et les processus d'installation et de gestion
des paquets.
Est-il possible d'installer une distribution Linux 6-1 bits sur une machine
32 bits ? Justifiez votre réponse
Non, il n'est pas possible d'installer une distribution Linux de 64 bits sur une
machine 32 bits. La architecture de la machine, soit 32 bits ou 64 bits, détermine la
version de l'OS qui peut être installée. Les machines 32 bits ont une limite de
mémoire vive de 4 Go et ne peuvent donc exécuter que des versions de systèmes
d'exploitation 32 bits, tandis que les machines 64 bits peuvent exécuter des versions
de systèmes d'exploitation 64 bits et 32 bits, mais les performances seront mieux
pour les version 64 bits. Les distributions Linux 64 bits nécessitent une architecture
64 bits pour fonctionner correctement et offrir des performances optimales.
Citez 3 versions du Shell utilisé dans le cadre des Systèmes
d'Exploitation Linux.
Les 3 versions les plus couramment utilisées de shell dans le cadre des
systèmes d'exploitation Linux sont :
1. Bash (Bourne-Again SHell) : shell le plus couramment utilisé, inclus par défaut
dans la plupart des distributions Linux.
Page | 2 2. Zsh (Z Shell) : shell populaire offrant des fonctionnalités supplémentaires par
rapport à Bash, telles que la complétion automatique avancée et la gestion de
l'historique.
3. Tcsh (TC Shell) : shell compatible avec Csh, offrant des fonctionnalités telles
que la complétion automatique et la gestion des alias.
Quel est le rôle de la commande "grep "
La commande grep est souvent utilisée en tant que "filtre" conjointement à
d'autres commandes. Elle permet d'éliminer par filtrage les informations
inutiles fournies par une commande. Utiliser la commande grep en tant que
filtre consiste à limiter le résultat de la commande à l'aide de grep .
quel est le rôle de la commande exec
La commande exec sous Linux est utilisée pour exécuter une commande à
partir du bash lui-même. Cette commande ne crée pas de nouveau processus,
elle remplace simplement le bash par la commande à exécuter. Si la
commande exec réussit, elle ne revient pas au processus appelant.
Pour un Processus en cours d'exécution, expliquez la différence entre
l'usage de la combinaison « ^C» et « ^Z».
"^C" est le raccourci pour envoyer un signal "SIGINT" (Interruption de signal) à
un processus en cours d'exécution, ce qui indique une demande d'interruption
normale et provoque généralement la fin immédiate du processus.
"^Z" est le raccourci pour envoyer un signal "SIGTSTP" (Interruption de
terminal) à un processus en cours d'exécution, ce qui indique une demande
de suspension temporaire du processus. Le processus peut être redémarré
ultérieurement à partir de l'endroit où il a été interrompu.
Sous Linux, quelles sont les primitives systèmes utilisées pour créer un
Processus fils à partir d'un Processus Parent ? sont-elles
opérationnelles sous Windows ? Justifiez votre réponse.
Sous Linux, les primitives systèmes utilisées pour créer un processus fils à
partir d'un processus parent sont fork et exec. Elles ne sont pas opérationnelles sous
Windows, qui utilise des primitives différentes telles que CreateProcess. La raison en
est que chaque système d'exploitation a son propre modèle de processus et de
gestion de la mémoire, ce qui nécessite des implémentations différentes pour les
primitives systèmes.
Comment peut-on faire communiquer 2 commandes ett Shell
Il existe plusieurs moyens de faire communiquer deux commandes en shell:
1. Utiliser la redirection de sortie (>) pour enregistrer la sortie d'une commande
dans un fichier, puis utiliser cette entrée comme entrée pour la seconde
commande.
2. Utiliser la pipe (|) pour connecter la sortie de la première commande à l'entrée
de la seconde commande.
Page | 3
3. Utiliser les commandes internes telles que xargs pour transmettre les résultats
d'une commande à une autre.
4. Utiliser un fichier temporaire pour stocker les résultats d'une commande et les
utiliser comme entrée pour la seconde commande.
Écrire un script bash qui permet de calculer la somme des arguments
saisis en ligne de commande.
#!/bin/bash

Page | 4
# Initialiser la somme à zéro
sum=0
# Boucle sur les arguments en ligne de commande
for arg in "$@"
do
# Ajouter chaque argument à la somme
sum=$((sum + arg))
done
# Afficher le résultat
echo "La somme des arguments est: $sum"

Exemple d'exécution:

$ bash script.sh 1 2 3 4
La somme des arguments est: 10
Écrire un script bash qui permet de trouver la valeur maximale parmi les
arguments saisis en ligne de commande.
#!/bin/bash

# initialiser la variable max avec le premier argument


max=$1

# boucle à travers les arguments restants


for arg in "${@:2}"
do
# si l'argument actuel est plus grand que max, mettre à jour max
if ((arg > max))
then
max=$arg
fi
done

Page | 5
# afficher la valeur maximale
echo "La valeur maximale est: $max"
Écrire un script bash qui permet de rendre exécutables les fichiers « oh
d'un chemin saisi en argument de la ligne de commande. Le script devra
afficher un message lorsque l'argument indique un chemin qui n'existe pas ou
lorsqu'il ne s'agit pas d•un répertoire.
#!/bin/bash

if [ $# -eq 0 ]; then
echo "No path provided. Please provide a path as an argument."
exit 1
fi

path=$1

if [ ! -d "$path" ]; then
echo "Provided path does not exist or is not a directory."
exit 1
fi

for file in "$path"/*; do


if [ -f "$file" ]; then
chmod +x "$file"
fi
done

echo "Made all files in $path executable."


Écrire les commandes nécessaires pour réaliser l'arborescence suivante
: JProject bin
# create JProject directory
mkdir JProject
Page | 6
# navigate into JProject directory
cd JProject
# create bin directory inside JProject
mkdir bin
Écrire le script baste qui permettrait de réaliser l'ensemble dcc étapes
nécessaires pour compiler un projet java - Les fichiers sources sont à la base
contenus dans le répertoire « ,sre KM considère ici que taule, les classes font
partie du package par défaut). - Le script doit générer les fichiers « .class il doit
ensuite les déplacer vers le répertoire « birt du projet. Niais avant. le script doit
vérifier si le fichier « furet» est plus récent que le fichier .class t correspondant
avant de procéder à la compilation. sinon, cette étape doit être omise car le
fichier « ,, en question restera le mème.
#!/bin/bash

src_dir="./src"
bin_dir="./bin"

if [ ! -d "$src_dir" ]; then
echo "Error: $src_dir directory does not exist."
exit 1
fi

if [ ! -d "$bin_dir" ]; then
echo "Creating $bin_dir directory."
mkdir "$bin_dir"
fi

for java_file in "$src_dir"/*.java; do


class_file="$bin_dir"/$(basename "$java_file" .java).class
if [ ! -f "$java_file" ]; then
continue

Page | 7
fi

if [ ! -f "$class_file" ] || [ "$java_file" -nt "$class_file" ]; then


echo "Compiling $java_file"
javac "$java_file" -d "$bin_dir"
else
echo "$java_file is up-to-date, skipping."
fi
done

echo "Java project compilation is complete."


EXErcice 2
Les deux programmes sont écrits en C et affichent un message dans la sortie
standard.

Le premier programme, "main()", est un programme simple qui utilise la


fonction printf pour afficher le message "Fonction du Processus Père".

Le second programme, "natn()", est un programme plus complexe qui


comporte un appel à la fonction "fork()". La fonction "fork()" est utilisée pour créer un
processus enfant à partir du processus parent actuel. Dans ce programme, une
vérification est effectuée pour déterminer si le processus en cours d'exécution est le
processus parent ou le processus enfant. Si c'est le processus parent, la fonction
"wait()" est appelée pour attendre la fin du processus enfant. Sinon, si c'est le
processus enfant, un appel à la fonction "execvp()" est effectué pour exécuter un
autre programme avec les arguments passés à "natn()".

En résumé, le premier programme est un programme simple qui n'utilise que


les fonctions de base de la bibliothèque standard pour afficher un message, tandis
que le second programme utilise des fonctions plus avancées pour créer un
processus enfant et exécuter un autre programme.

Vous aimerez peut-être aussi