Examen de Système D'exploitation Linux - Enoncé - Corrigé
Examen de Système D'exploitation Linux - Enoncé - Corrigé
Examen de Système D'exploitation Linux - Enoncé - Corrigé
EXAMEN Corrig
Matire:SystmesdExploitation Classe:2meAnneGnieElectrique Enseignante:MeriemKassarBenJemaa Documents:feuilleformatA4autorise
QuestionsGnrales(6points)
Question 1 : Parmi les propositions suivantes lesquelles correspondent aux fonctionnalits dun systmedexploitation? Orsoudrelesproblmesdesutilisateurs. Omasquerdeslmentsfastidieuxlisaumatriel. Ogrerlesressourcestellesquelesprocesseurs,lammoireoulesdisques. Ofaireappeldesinstructionsdedplacementdedonnesetdecalculs. Ofournirdesmcanismesdesynchronisationentrelesprogrammes. Ofournirlabasededveloppementetdexcutiondesprogrammesd'application. Question 2 : Parmi les propositions suivantes lesquelles correspondent aux tches dun noyau Unix? OLinitialisationdusystme. OLtablissementduneinterfaceentrelutilisateuretlematriel. OLagestiondesprocessus. OLagestiondesfichiers. OLagestiondesentres/sorties. Question3:Parmilespropositionssuivanteslesquellescorrespondentunlmentducontexte d'excutiond'unprocessus? Olesystmedefichiers Olecompteurordinal Ol'horloge Olefluxd'entrestandard Olefluxdesortied'erreurs Olerseau Olefluxdesortiestandard Question4:Dessinezlediagrammereprsentantlesdiffrentstatspossiblesdunprocessus(et lestransitionsentretats)depuissacrationjusqusaterminaison. Chapitre3,page11
Dessinez lautomate reprsentant les diffrents tats possibles dun processus (et les transitions entre tats) depuis sa cration jusqu sa terminaison. Votre rponse devra mettre en vidence ltat dans lequel se trouve un processus lors de sa cration. EcoleNationaledIngnieursdeTunis Solution: Transparent 98.
PRET
lection
ELU
BLOQUE
Fin solution Question5:Quelleestladiffrenceentrelordonnancementetlasynchronisationdesprocessus? Lasynchronisationestncessairelorsqu'onveutquecertainesinstructionsd'undesprocessus s'effectuenttoujoursaprscertainesinstructionsd'unautreprocessus.Ellepermetd'assurerun Question 2 4 points ordresurlesexcutions. Comment sappellent : Lordonnancementpermetlepartageduprocesseurentreplusieursprocessus.Aprsuntemps 1. le service systme charg de choisir le processus auquel le processeur est attribu, prdtermin (ou lorsqu'une instruction particulire est excute), l'ordonnanceur interrompt 2. le mcanisme du processus actifau systme de reprendre la main rgulirement ? du contexte du l'excution matriel permettant et en choisit un autre. Il assure la substitution premierparceluidudeuxime. Solution: 1. ordonnanceur (ou scheduler) Question 6 : Qu'estce qu'un PID ? Comment un utilisateur peutil connatre la valeur d'un PID ? 2. Interruption horloge (transparent 105). CitezdeuxcommandespouvantprendreunPIDcommeparamtre. Fin solution LePIDestl'identifiantquelesystmeattribuechaqueprocessuslorsdesacration. L'utilisateurpeutconnatrelavaleurd'unPIDenutilisantlacommandeps(oulavariable $$ 3 un script Questiondans3 points shell) et il peut l'utiliser pour identifier un processus lors de l'excution de certaines de commande permettant de lancer le script mon_script.sh se trouvant dans le rpertoire Donnez les lignescommandes. Les commandes fg, bg et kill ont pour effet la mise en arrire plan, la courantmiseaupremierplanetl'envoid'unsignalauprocesseur. : Question 7 : quoi sert la variable denvironnement PATH lors de l'excution d'une commande 1 parlesystme? OEllesertidentifierlesrpertoiresdanslesquelslacommandeexcuterserarcupre. OEllesertidentifierlechemindurpertoiredelogin OEllesertlisterlescheminsdesrpertoirescontenantdescommandesexcuter. OEllesertidentifierlechemindurpertoirecourant. OEllesertidentifierlelogindelutilisateur. Question 8 : Cocher l(ou les) affirmations correspondantes lexcution de la commande suivante:(Onrappellequels 1 (lechiffreun)afficheunfichierouunrpertoireparligne) Prompt$ ls 1 D* | grep v "^D" | grep "doc$" | wc l > fic OCettecommandecreunfichierdenomficcontenantlenombredefichiersetrpertoires,du rpertoirecourant,dontlenomnecommencepasparDetseterminepardoc. O Cette commande cre un fichier de nom fic contenant le nombre de fichiers et rpertoires, dontlenomnecommencepasparDetseterminepardoc,contenusdanslesrpertoiresdontle nomcommenceparDetsetrouvantdanslerpertoirecourant.
EcoleNationaledIngnieursdeTunis
O Cette commande cre un fichier de nom fic contenant la somme du nombre de lignes des fichiers,durpertoirecourant,dontlenomnecommencepasparDetseterminepardoc. OCettecommandeprovoqueuneerreurl'excution. OCettecommandecretoujoursunfichiervidedenomfic.
Question 9 : Donner la commande permettant de trouver la liste des fichiers dextension .h situssouslerpertoire/usr/include. find /usr/include name *.h Donner la commande qui permet dafficher les 3 dernires lignes de la liste des fichiers dfinie prcdemment. find /usr/include name *.h | tail n 3
Question10:Donnerlacommandepermettantdafficherlachanesuivante: Examen de Systmes dexploitation Dure : 1H30 echo Examen de Systmes dexploitation \Dure : 1H30\ Question11:Donnerlacommandepermettantdecopierladatecourantelasuiteducontenu dunfichiernonvidenomminfodurpertoirecourant. date >> info
Question 12 : Donner la commande permettant dexcuter la commande cat login.txt partirdurpertoiredeconnexion(deloginoudaccueil)dunutilisateurnomm2ageetfaireen sorte que la sortie standard et la sortie erreur soient crites dans un nouveau fichier nomm Resultat. Prompt$ cd /home/2age $ cat login.txt > Resultat 2>&1
Paralllisme&Synchronisation(4points)
if [ $# -lt 2 ] if [ $# -ne 1 ] then then echo "erreur ecriture" echo "erreur lecture" exit 1 exit 1 else else FILE=$1 FILE=$1 shift cat $FILE echo "$@" > $FILE fi fi Expliquezen2lignespourquoilafindel'excutionsuivantelefichierfic1peutnepasexister. Prompt$ ./lecture.sh fic1 & ./ecriture.sh fic1 message Leproblmeestquunprocessuslitdansunfichieretlautrecritdanscemmefichier. Il faut que le processus lecture.sh prenne la main et fait sa lecture aprs que le processus ecriture.shaitcritdanslefichierfic1.Doncilfaudrasignalerladisponibilitdeladonne.
EcoleNationaledIngnieursdeTunis
Modifiezlesscriptsdemanirecequelecture.shnepuisseexcuterl'instructioncat $FILEqu'aprsl'excutiondel'instructionecho "$@" > $FILEduscriptecriture.sh. #!/bin/bash # ecriture.sh if [ $# -lt 2 ] then echo "erreur ecriture" exit 1 else FILE=$1 SYNC=$1.sync shift echo "$@" > $FILE echo > $SYNC fi #!/bin/bash # lecture.sh if [ $# -ne 1 ] then echo "erreur lecture" exit 1 else FILE=$1 SYNC=$1.sync while [ ! -f $SYNC ] do sleep 1 done cat $FILE rm $SYNC fi
CommunicationInterprocessus(4points)
Soientles3scriptssuivants: #!/bin/bash # script1.sh export i for i in "$@" do ./script2.sh echo Script1 : $i done
#!/bin/bash # script2.sh
#!/bin/bash # script3.sh
if [ "$i" -eq 1 ] i=expr $i \* 2 then echo Script3 : $i ./script3.sh elif [ "$i" -eq 2 ] then ./script3.sh i=expr $i + 1 ./script3.sh fi echo Script2 : $i Onrappellequelacommandeexportpermetlutilisationdelavariableenparamtredansles scriptsshellultrieurs.Chaquescript,danssonenvironnementdexcution,luiseulpourralireet modifierlavariablequiauracommevaleurinitialelavaleurquelleadanslenvironnementdu preaumomentdelacrationdufils. Donnezlaffichageproduitparlacommande:./script1.sh 1 2 Expliquezcequevousobtenez(indication:Vouspouvezlexpliquerparunschma)
done
Donnez lafchage produit par la commande ./script1.sh 1 2. Expliquez ce que vous obtenez. Solution:
Script3 : 2 Script3:2 Script2 : 1 Script2:1 Script1 : 1 Script1:1 Script3 : 4 Script3:4 Script3 : 6 Script3:6 Script2 : 3 Script2:3 Script1 : 2 Script1:2
script1.sh i=1 script2.sh i=1 script3.sh i=1 i=2 echo Script3 : 2 echo Script2 : 1 echo Script1 : 1 i=2 script2.sh i=2 script3.sh i=2 i=4 echo Script3 : 4 i=3 script3.sh i=3 i=6 echo Script3 : 6 echo Script2 : 3 echo Script1 : 2
3 Shell(6points)
EcoleNationaledIngnieursdeTunis
Si l'lment est un rpertoire Si fic2 est un fichier du rpertoire remplacer son contenu par celui de fic1 (Attention : fic2 ne doit pas changer de nom) Fin Si Sinon Afficher que l'lment n'est pas un rpertoire Fin si Fin boucle
#! /bin/sh set -x if [ $# -lt 3 ] ; then echo Il faut au moins trois parametres exit 1 fi fic1=$1 fic2=$2 shift 2 if [ ! -f "$fic1" ] ; then echo Le deuxieme parametre doit etre un fichier du repertoire courant exit 1 fi for rep in "$@" ; do if [ -d "$rep" ] ; then if [ -f "$rep/$fic2" ] ; then cat "$fic1" > "$rep/$fic2" fi else echo $rep n\'est pas un repertoire fi done