Cours de Systèmes d'Exploitation
Licence MIAGE
Université d'Evry Val d'Essonne
Questions pour le projet 2010-2001 : Copie de fichiers en parralèle avec reprise si interruption
Documents Généraux (compléments au cours):
Support de cours
Ordonnancement de l'Unité de Traitement
Gestion de la Mémoire Centrale (MC et MS)
Les Disques (document à paraître)
Pour vérifier les programmes chargés en mémoire, il faut utiliser la commande MEMMAP.EXE fournie dan le fichier TPE.ZIP.
Ne pas utiliser la commande TURBO : Cet environnement de programmation permet lemise au point mais détourne les interruptions.
Il est donc impossible de tester les routines de traitement des interruptions proposées dans les programmes.Les programmes des TD sont le fichier TD_SE.zip.
N.B. La commande RUNTIME.EXE permet de connaître les messages d'erreur d'exécution. On peut aussi utiliser l'environnement TURBO.EXE.
TD - Interruptions sous UNIX et Gestion des Processus en C
- Lancer la commande "sleep 2000" en arrière-plan (&)
- Lancer la commande "sleep 1000" en arrière-plan (&)
- Visualiser les processus en arrière-plan (background) avec la commande jobs.
- Visualiser tous les processus en cours avec la commande ps.
- Ramener la commande "sleep 2000" en avant-plan (foreground) avec la commande fg (fg %1).
- La remettre en arrière-plan (CTRL+Z) et vérifier avec la commande jobs.
- Lancer la commande "sleep 3000 en arrière-plan.
- Ramener la commande sleep 1000 en avant-plan et l'interrompre par CTRL+C.
- Stopper le processus "sleep 2000" à l'aide de la commande kill.
Tester différents signaux (Cf. kill -l) sur uen commande "sleep xxxx".
- Récupérer les programmes PS_EXEC.C, PS_FORK.C qui ont été préparés sous Windows.
- Compiler avec la commande make (faire attention aux extensions C et C++)
- Expliquer le fonctionnement de ces programmes.
[TD]# ls -l
-rw-r--r-- 1 root root 523 oct 11 10:03 PS_EXEC.C
-rw-r--r-- 1 root root 1203 oct 11 10:03 PS_FORK.C
-rw-r--r-- 1 root root 550 oct 11 10:03 PS_SIG1.C
-rw-r--r-- 1 root root 759 oct 11 10:03 PS_SIG2.C
-rw-r--r-- 1 root root 1556 oct 11 10:03 PS_SIG3.C
[TD]# make PS_EXEC
g++ PS_EXEC.C -o PS_EXEC
PS_EXEC.C:12: " argc " n'a pas été déclaré dans cet horizon
PS_EXEC.C:12: " argv " n'a pas été déclaré dans cet horizon
PS_EXEC.C:13: ISO C++ interdit la déclaration de " main " sans type
PS_EXEC.C:13: liste d'initaliseurs a été traité comme une expression
composée
PS_EXEC.C:13: erreur de syntaxes avant " int "
PS_EXEC.C:14: erreur d'analyse syntaxique avantle jeton " { "
PS_EXEC.C:16: ISO C++ interdit la déclaration de " printf " sans type
PS_EXEC.C:16: " printf " redéclaré comme une sorte différente de symbole
/usr/include/stdio.h:300: déclaration précédente de "int printf(const
char*, ...)"
PS_EXEC.C:16: conversion invalide de " const char* " vers " int "
PS_EXEC.C:17: " getpid " n'a pas été déclaré dans cet horizon
PS_EXEC.C:17: ISO C++ interdit la déclaration de " printf " sans type
PS_EXEC.C:17: redefinition of `int printf'
PS_EXEC.C:16: "int printf" précédemment défini ici
PS_EXEC.C:17: liste d'initaliseurs a été traité comme une expression
composée
PS_EXEC.C:18: " argc " n'a pas été déclaré dans cet horizon
PS_EXEC.C:18: ISO C++ interdit la déclaration de " printf " sans type
PS_EXEC.C:18: redefinition of `int printf'
PS_EXEC.C:17: "int printf" précédemment défini ici
PS_EXEC.C:18: liste d'initaliseurs a été traité comme une expression
composée
PS_EXEC.C:21: erreur d'analyse syntaxique avant " for "
PS_EXEC.C:21: " argc " n'a pas été déclaré dans cet horizon
PS_EXEC.C:21: erreur d'analyse syntaxique avantle jeton " ; "
PS_EXEC.C:21: erreur de syntaxes avantle jeton " ++ "
PS_EXEC.C:25: ISO C++ interdit la déclaration de " printf " sans type
PS_EXEC.C:25: redefinition of `int printf'
PS_EXEC.C:18: "int printf" précédemment défini ici
PS_EXEC.C:25: conversion invalide de " const char* " vers " int "
PS_EXEC.C:26: ISO C++ interdit la déclaration de " exit " sans type
PS_EXEC.C:27: erreur d'analyse syntaxique avantle jeton " } "
make: *** [PS_EXEC] Erreur 1
[TD]# mv PS_EXEC.C ps_exec.c
[TD]# mv PS_FORK.C ps_fork.c
[TD]# make ps_exec
cc ps_exec.c -o ps_exec
[TD]# ./ps_exec a b c
ps_exec> Debut execution
ps_exec> Numero PID = 10960
ps_exec> Nb arguments = 4
ps_exec> argv[ 0 ] = ./PS_EXEC
ps_exec> argv[ 1 ] = a
ps_exec> argv[ 2 ] = b
ps_exec> argv[ 3 ] = c
[TD]# make ps_fork
cc ps_fork.c -o ps_fork
[TD]# ./ps_fork
ps_fork > Debut execution : pid = 10978
ps_fork > Code execute par les 2 ! mais : getpid() = 10978
PS_FORK(p)> Valeur retournee par le fork = 10979
ps_fork > Code execute par les 2 ! mais : getpid() = 10979
ps_fork(f)> Valeur retournee par le fork = 0
ps_fork(f)> PID( avant exec ) = 10979
ps_exec> Debut execution
ps_exec> Numero PID = 10979
ps_exec> Nb arguments = 1
ps_exec> argv[ 0 ] = liste des arguments
PS_FORK(p)> PID du fils se terminant = 10979
ps_fork > Fin Processus : 10978
TD - Interruptions sous MS-DOS
SE_BREAK.PAS, SE_CLICK.PAS, SE_ITIME.PAS, SE_HALT.PAS
Les programmes utilisant les interruptions, il faut compiler avec TPC.EXE puis lancer la commander hors environnement TURBO-P.
TD - Gestion des signaux (interruptions) dans les programmes C
- Récupérer les programmes PS_SIG1.C, PS_SIG2.C, PS_SIG3.C qui ont été préparés sous Windows.
- Chercher les numéros de signaux
1) avec kill -l,
2) dans /usr/include (man signal)
- Compiler avec la commande make (faire attention aux extensions C et C++)
- Expliquer le fonctionnement de ces programmes
Manuel de wait sous UBUNTU
TD - Gestion des Sémaphores en langage C
Les sémaphores : sema1.c, sema2.c
et préparation du projet (recherche su Internet de technologies)
TD - Allocation Mémoire en Turbo-Pascal / MS-DOS (ou en langage C...)
SE_AVAIL.PAS, SE_DIR.pas, SE_DIRT.pas
et préparation du projet
TD - Entrées / Sorties en Turbo-Pascal
TD - Client Serveur
Les exemples proviennent de http://cui.unige.ch/java/exemples (2006)
Application Serveur
Application Client
Tester ces programmes entre 2 machines ayant si possible des systèmes d'exploitation différents : Linux et Windows par exemple.
On pourra obtenir l'adresse locale (Nom de la Machine / numéro IP) par programmation java.
try {
InetAddress adresse = InetAddress.getLocalHost();
System.out.println("Adresse IP locale : " + adresse);
} catch ( Exception e ) {
System.err.println( e.getMessage() );
}
Sous Windows, utiliser la commande ipconfig.exe sous l'interpréteur de commandes cmd.exe
Sous Windows, voir aussi procexp.exe pour la gestion des processus.
Sous Linux et sous Windows essayer la commande ping pour tester la présence dans le réseau de la machine où se trouve le serveur.
TD - Télé discussion sur Internet
Les exemples proviennent de http://cui.unige.ch/java/exemples (2006)
Application Serveur
Application Client
Sous Windows, visualiser l'activité UDP et TCP avec TcpView.exe.
TD - MPI
Liens JAVA
http://cui.unige.ch/~billard/systemeII/cours15.html - SE RPC
http://www.cs.technion.ac.il/~cs236370/recitations/java2.html
http://www.doc.ic.ac.uk/~jnm/book/index.html
http://www.doc.ic.ac.uk/~jnm/book/book_applets/concurrency.htmlhttp://www.ecs.soton.ac.uk/~dem/teaching/proginjava/s12.html
Liens LINUX
http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html
Projet L3 MIAGE en Apprentissage 2009 / 2010
Que j'aime à faire connaître ce nombre utile aux sages,
Immortel Archimède, artiste, ingénieur,
Qui, de ton jugement, peut priser la valeur
Pour moi, ton problème eut de pareils avantages.
Quelques lienshttp://fr.wikipedia.org/wiki/Pi
http://fr.wikipedia.org/wiki/Pi#.C3.80_la_conqu.C3.AAte_des_d.C3.A9cimales
http://fr.wikipedia.org/wiki/Programmation
http://fr.wikipedia.org/wiki/Simon_Plouffe
http://fr.wikipedia.org/wiki/Formule_BBP
http://maths83.free.fr/themes/plouffe.pdf
http://www.nombrepi.com/
Le 31 décembre 2009 :
Fabrice Bellard publie sur son site web personnel son nouveau record du calcul des décimales de π.Ce record de 2 700 milliards de décimales du nombre π
bat l'ancien record de Daisuke Takahashi (2 577 milliards de décimales).Fabrice Bellard a établi ce record avec un ordinateur personnel de moins de 2 000 € !
http://fr.wikipedia.org/wiki/Fabrice_Bellard
http://bellard.org/pi/
http://bellard.org/pi/pi.c
Quelques formules
>>> Machin
Pi := 4*ArcTan(1/5) - ArcTan(1/239);
Pi := Pi*4;
>>> Machin par Takano
Pi := 12*ArcTan(1/49) + 32*ArcTan(1/57) - 5*ArcTan(1/239) + 12*ArcTan(2/110443);
Pi := Pi*4;
>>> Machin par Stormer
Pi := 44*ArcTan(1/57) + 7*ArcTan(1/239) - 12*ArcTan(1/682) + 24*ArcTan(1/12943);
Pi := Pi*4;
>>> BBP originale
For k := 0 to INF do
Pi := Pi + (1/power(16,k))*( (4/(8*k+1))-(2/(8*k+4))-(1/(8*k+5))-(1/(8*k+6)))
>>> Ramajunan
For k := 0 to INF do
Pi := Pi + ((4*Fact(k))*(1103+26390*k))/(power(Fact(k),4)*power(396,4*k));
Pi := Pi * ((2*sqrt(2))/9801);
>>> Chudnovsky
For k := 0 to INF do
Pi := Pi + ( (Power(-1,k)*Fact(6*k)*(13591409+545140134*k)) )
/ ( Fact(3*k)*power(Fact(k),3)*power(640320,(3*k+3)/2));
Pi := Pi * 12;
>>> Bellard
For i := 0 to INF do begin
i10:= 10*i;
i4 := 4*i;
Pi := Pi + ( power(-1,i)/power(2,10*i) *
(-(32/i4+1)-(1/i4+3)-(256/i10+1)-(64/i10+3)-(4/i10+5)-(4/i10+7)+(1/i10+9)));
end;
Pi := Pi * (1/64);
>>> Archimede
Pi := 223/71;
:-> http://www.delphifr.com/codes/PETIT-PROGRAMME-DELPHI-CALCULER-NOMBRE-PI-AVEC-APPROXIMATION_36464.aspx
Projet L3 MIAGE en Apprentissage 2008 / 2009Objectif : Réaliser une application communicante utilisant des processus en parallèle. Apprendre à monter un projet informatique, Analyse des besoins client. Proposition de réalisation. Remise d'un état d'avancement (1ert lot) du projet.
Sujet : Recherche de fichiers selon différents critères. L'élève doit définir une application permettant la recherche en parallèle de fichiers répondant à certains critères : sur le nom du fichier, sur le contenu du fichier, sur tout autre aspect à définir....
Remarque : on doit pouvoir observer le parallélisme au fur et à mesure du traitement.
Premier travail (à rendre le 26 janvier 2009 !!! )
L'élève devra proposer des critères de recherche intéressants et innovants, expliquer l'intérêt de ces critères et proposer des réalisations possibles permettant leur mise en oeuvre.
Mots clés : minuscules, majuscules, texte, fichier html, binaire, ASCII, UNICODE, client/serveur, thread, ...
Il devra produire une note décrivant les fonctionnalités vues de l'extérieur destinée aux non informaticiens.
Il devra produire une autre note plus technique décrivant les fonctionnalités vues de l'intérieur destinée aux informaticiens. Une spéciale attention sera donnée aux explications permettant la mise en oeuvre du parallélisme.
Il décrira bien entendu l'environnement nécessaire à la mise en exploitation de l'application (systèmes d'exploitation...), ainsi que l'environnement nécessaire à la programmation (langage de programmation, bibliothèques...) et mise au point de l'application (tests de validité et de non régression... ). Ses choix devront être commentés et argumentés : que ce soit du point de vue du potentiel d'utilisation future que du point de vue des moyens informatiques disponibles pour la réalisation actuelle de l'application.
Il définira un premier lot de fonctionnalités à réaliser en expliquant pourquoi il est intéressant de les réaliser en premier. Ce premier lot devra contenir un maximum de fonctionnalités de technique de recherche parallèle. Des indications précises devront être données quant à la programmation des fonctionnalités retenues pour ce premier lot.
ET bien évidemment avec UNE CONCLUSION !!!
Projet L3 MIAGE en Apprentissage 2007 / 2008
Objectif : Réaliser une application communicante utilisant des processus en parallèle. Apprendre à monter un projet informatique, Analyse des besoins client. Proposition de réalisation. Remise d'un état d'avancement (1ert lot) du projet.
Sujet : Réalisation d'une commande de copie récursive de fichiers d'un dossier vers un autre.
Projet L3 MIAGE en Apprentissage 2005 / 2006
Objectif : Réaliser une application communicante utilisant des processus en parallèle. Apprendre à monter un projet informatique, Analyse des besoins client. Proposition de réalisation. Remise d'un état d'avancement (1ert lot) du projet.
Sujet : Réalisation d'une page WEB avec un traitement parallèle sur une image.
Autres infos:
"Le client final a un traitement compliqué mais ne veut pas donner les sources de son algorithme...."
On prendra donc prendre des traitements simples que l'on ralentira pour observer le parallélisme:
Traitements sur les pixels : négatif, permutation de deux composantes RVB ( Rouge / Vert, Vert / Bleu.. )
Traitements géométriques : retournement horizontal / vertical ou gauche / droite , rotation ...
Effets de transition entre deux images : les pixels de la deuxième image s'affichent sur la première.
Effets de déplacement: la seconde image apparaît en se déplaçant, s'agrandissant ....
Exemples de pages sans parallélisme ni communication entre animations :
Animation de texte : Effet de Zoom ( source java )
Animation d'image : Effet de vague ( voir site http://www.anfyteam.com )
Animation d'image : Effet psychédélique ( source java )
Animation 3D : Cube avec photos ( voir site http://www.anfyteam.com )
Si rien ne se passe dans les exemples (après l'ouverture grandissante de la fenêtre), il vous manque peut-être le Runtime Environment J2RE de Java. Utilisez alors les liens suivants:
Projet pour les redoublants
Objectif : Approfondir un sujet connexe aux techniques de systèmes d'exploitation : parallélisme, communication, performances, entrées / sorties ...
A rendre au format HTML....dans un fichier archive (exemple ZIP)
Exemples de Sujets:
- Techniques de tri parallèle interne (en mémoire centrale)
Techniques de tri parallèle externe (en mémoire secondaire)
Réseaux de Pétri et parallélisme
- Outils de mesures de performances (CPU , I/O) sous Windows
- Outils de mesures de performances (CPU , I/O) sous GNU / Linux
- Supervision des travaux sous GNU / Linux. Gestion des Processus
- Architecture d'un cluster (IBM ou HP ou Bull ...)
- Goulot d'étranglement des Clusters en exploitation - Étude comparative
- Bibliothèque de communication (PVM ou MPI ou ... - Exemples d'utilisation
- Langages de programmation parallèles en utilisation
Comment détecter les virus ? Conseils à l'utilisateurs
- Comment détecter les troyens ? Conseils à l'utilisateurs
- Techniques utilisées par les virus
- Techniques utilisées par les troyens
- Comparaison des systèmes d'exploitation temps réel
- Architecture d'un microprocesseur (P4 ou Athlon ou Opteron ou ...)
- Formats et outils de conversion de fichiers Texte (ASCII, rtf, html, pdf, ps, Unicode, Dos, Windows, Linux ...)
- Outils et techniques de compression de données (free et Opensource)
- Caractéristiques et attributs de fichiers sous différentes File System (NTFS, FAT, EXT3...)
- Gestion des évènements slot / signal et des processus sous QT
- Benchmarks numériques - Top 500
- Microprogrammation dans les microprocesseurs
- Architecture RISC
- Architecture CISC
- Organisations et Techniques de gestion de la Mémoire Centrale
- Organisations et Stratégies de gestion de la Mémoire Secondaire
OUTILS Système
http://www.spybot.info/fr/download/
http://www.microsoft.com/technet/sysinternals/default.mspx
http://www.microsoft.com/technet/sysinternals/Processesandthreadsutilities.mspx?wt.svl=featured
Testez la vitesse de votre connexion Internet avec
http://www.abeltronica.com/PagInstrucoes/fr/index.html
Autres Tests ADSL
http://www.alaide.com/outils_testbandepassante.php?con=14&vdown
http://www.journaldunet.com/vitesse/9803947016/1428/resultat_adsl.shtml
http://www.linternaute.com/vitesse/6999802301/1096/resultat_adsl.shtml
http://www.sos-adsl.com/modules/debit
Éligibilité ADSL
http://www.ariase.com/fr/observatoire/vitesse-connexion.html
( Attention : plugin java à installer )http://www.pcentraide.com/test-connexion.html
Liens Université Évry Val d'Essonne