From: Kim Nguyễn Date: Fri, 11 Oct 2013 14:10:24 +0000 (+0200) Subject: Add course. X-Git-Url: http://git.nguyen.vg/gitweb/?a=commitdiff_plain;h=7cce5c3a37a866072108aedf85ee3b06272dac81;p=hacks%2FsimpleWebSlides.git Add course. --- diff --git a/prog_internet/cours_4.svg b/prog_internet/cours_4.svg new file mode 100644 index 0000000..d26b090 --- /dev/null +++ b/prog_internet/cours_4.svg @@ -0,0 +1,399 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + Internet + Client(Navigateur Web) + + + Serveur(programme) + + Client(Machine) + Documents + Serveur(machine) + + PHP + Java + + HTMLCSS + Javascript + + Requêtes + Réponses(pages, images, vidéos, scripts, …) + + + + + + + + diff --git a/prog_internet/mozilla-pdfjam.pdf b/prog_internet/mozilla-pdfjam.pdf new file mode 100644 index 0000000..958ac4a Binary files /dev/null and b/prog_internet/mozilla-pdfjam.pdf differ diff --git a/prog_internet/mozilla.pdf b/prog_internet/mozilla.pdf new file mode 100644 index 0000000..3d60a35 Binary files /dev/null and b/prog_internet/mozilla.pdf differ diff --git a/prog_internet/prog_internet_01.xhtml b/prog_internet/prog_internet_01.xhtml new file mode 100644 index 0000000..8fba8e1 --- /dev/null +++ b/prog_internet/prog_internet_01.xhtml @@ -0,0 +1,643 @@ + + + + + Programmation Internet + + + + + + + + + + + + + + + + + + + + +
+

Programmation Internet

+

Cours 1

+ kn@lri.fr +
+ +
+

Contenu du cours

+
    +
  1. Comprendre les bases du Web +
      +
    • Fonctionnement des ordinateusr Unix (cours 1 et 2)
    • +
    • Notions de réseau (cours 3 et 4)
    • +
    +
  2. +
  3. Programmer (pour) le Web +
      +
    • Pages statiques (HTML & CSS cours 5)
    • +
    • Pages dynamiques avec PHP (cours 6, 7 et 8)
    • +
    • Notions de sécurité des sites Web (cours 9)
    • +
    • Bonus (cours 10)
    • +
    +
  4. + +
+ +
+
+

Modalités de Contrôle des Connaissances (MCC)

+

2 sessions:

+ +

Rappel: + La défaillance fait obstacle au calcul de la moyenne + et implique l'ajournement. + La présence de l'étudiant étant obligatoire en TP [...], plus + d'une absence injustiée dans un enseignement peut entraîner + la défaillance de l'étudiant dans l'enseignement concerné + +

+
+ +
+

Organisation

+ +
+
+

Plan

+
    +
  1. Systèmes d'exploitation +
      +
    • 1.1 Principes des systèmes + d'exploitation
    • +
    • 1.2 Système de gestion de fichiers
    • +
    • 1.3 Système de gestion de processus
    • +
    +
  2. +
+
+ +
+

Système d'exploitation

+

Quelques systèmes:

+ +
+ +
+

Système d'exploitation

+

Qu'est-ce qu'un système d'exploitation ?

+ +

Quelles sont les ressources d'une machine?

+ +
+
+

Système d'exploitation

+
+
+ Haut niveau
+ ↓
+ Bas niveau +
+
+
    +
  • Applications: navigateur Web, éditeur de + texte, anti-virus, jeu, compilateur, …
  • +
  • Système d'exploitation: +
      +
    • Gestion des ressources
    • +
    • Interface avec le matériel (pilotes)
    • +
    +
  • +
  • Matériel: CPU, mémoire, périphériques, …
  • +
+
+
+
+

Le système Unix

+ + + + + + + + + + + +
1965 MultICS: Multiplexed Information and Computing Service (Bell & MIT)
1969 Unix: 1ère version en + assembleur (AT&T)
1972-73 Unix réécrit en C
1976 Invention de TCP/IP
1977 Berkeley Software Distribution + (BSD)
1985Unix System V
1988Minix
1992Linux
+
+
+
+

Unix : architecture

+ + + + + + + + + + + + +
+ Applications +
+ Interface utilisateur + + Services +
+ Noyau (kernel) +
+ Micro-code +
+ Matériel +
+
+
+
+

Zoom sur le noyau

+ + + + + +
+ Applications +
+ + Bibliothèques + (libc, DirectX, OpenGL, …) +
+
+ + + + + + + +
+ Appels systèmes +
+ Noyau
+
+ pilotes de périphériques + ordonnanceur (gestion du temps CPU)
+ gestionnaire de mémoire + système de fichier
+
+
+ Matériel +
+
+
+

Le Shell Unix

+ +
+
+

Le Shell Unix

+

Exemple de session shell:

+
+ + $ ls + Documents Downloads Public Person + $ cd Documents + $ ls + compte_rendu.txt + $ mv compte_rendu.txt cr.txt + $ ls + cr.txt + +
+
+ +
+

Plan

+
    +
  1. Systèmes d'exploitation +
      +
    • 1.1 Principes des systèmes + d'exploitation
    • +
    • 1.2 Système de gestion de fichiers
    • +
    • 1.3 Système de gestion de processus
    • +
    +
  2. +
+
+
+

Système de gestion de fichiers (filesystem)

+ +
+
+

Le concept de fichier

+

+ Un fichier est une collection d'infromations + numériques réunies sous un même nom et + enregistrée sur un support de stockage +

+ +
+
+

Le concept de fichier

+

Ne pas confondre:

+ +
+
+

Les attributs d'un fichier

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Nom +
Propriétaireutilisateur qui possède ce fichier
Groupegroupe d'utilisateurs qui possède ce fichier
Emplacementlocalisation du fichier sur le support physique
Tailleen octet (peut être la taille réelle ou la taille + occupée sur le support)
Permissions « qui a quel droit » sur le fichier (lecture, écriture, + exécution, …) +
Type +
Datesdernier accès, dernière modification, création, …
+
+
+

Organisation logique des fichiers

+

Usuellement, les fichiers sont regroupés en répertoires. Les +répertoires sont imbriqués les uns dans les autres de manière a former +une arborescence. +

+

+ Sous Unix il y a un répertoire racine, « / » +(slash) qui contient toute l'arborescence du système.
+Chaque utilisateur possède aussi un répertoire personnel +

+
+ +
+

Noms de fichiers et chemins

+

+Un chemin est une liste de répertoire à traverser pour +atteindre un fichier ou répertoire donné. +Sous Unix, le séparateur de chemin est le « / »
+Les chemins absolus commencent par un / et + dénotent des fichiers à partir de la racine. Exemple: + + /home/kim/Documents/ProgInternet/cours01.pdf + +
+Les chemins relatifs dénotent des fichiers à partir du + répertoire courant. Exemple:
+ + Documents/ProgInternet/cours01.pdf + +si on se trouve dans le répertoire /home/kim +
+Les noms spéciaux: « . » dénote le répertoire + courant, + « .. » le répertoire parent, « ~ » le répertoire de + l'utilisateur et « ~toto » le répertoire de l'utilisateur + toto +

+
+ +
+

Utilisation du Shell

+

+ Le shell affiche un invite de commande + (prompt). Exemple:
+ kim@machine $

+ On peut alors saisir une commande:

+ kim@machine $ ls *.txt

+ Le shell affiche la sortie de la commande:

+ fichier1.txt fichier2.txt

+ Certains caractères doivent être précédés d'un « \ » (échappés):

+ kim@machine $ ls mon\ fichier\#1.txt +

+
+
+

La ligne de commande

+

+ Une ligne de commande a la forme:
+ prog item1 item2 item3 item4 … +

+
    +
  1. Si prog est un chemin il doit + dénoter un fichier exécutable +
  2. +
  3. Si prog est un simple nom, il doit dénoter un fichier + exécutable se trouvant dans un des répertoires prédéfinis + (/bin, /usr/bin, …) +
  4. +
  5. Pour chaque itemi (séparés par un ou plusieurs espaces + non échappés) le shell fait une expansion de nom +
  6. +
  7. La liste de toutes les chaînes de caractères expansées est + passée comme argument au programme prog +
  8. +
+
+
+

Expansion des noms
Expressions régulières glob

+

+ Certains caractères sont interprétés de manière spéciale par le + shell. Ces caractères sont « expansés » selon des + règles. Si la forme expansée correspond a un ou plusieurs fichiers + existants, alors leurs noms sont placés sur la ligne de commande. Sinon + la chaîne de caractère de départ garde sa valeur textuelle. +

+
+
+

Expressions régulières glob

+

Règles d'expansion: + * n'importe quelle chaîne
+ ? n'importe quel caractère + [ab12…] un caractère dans la liste
+ [^ab12…] un caractère absent de liste
+ [a-z] un caractère dans l'intervalle
+ [^a-z] un caractère absent de l'intervalle
+ {m1, m2} + motif m1 ou m2
+ ?(m1|…|mn) + + @(m1|…|mn) + + *(m1|…|mn) + + +(m1|…|mn)
+ k motifs parmi mi
+ ?: 0 ≤ k ≤ 1 + + @: k = 1 + + *: k ≥ 0 + + +: k ≥ 1 +
+ !(m1|…|mn): + ni m1, …, ni mn +

+
+
+

Expressions régulières glob
Exemples

+

ls !(*[aeiouy]?) + La chaine « !(*[aeiouy]?) » est remplacée par la liste de tous + les fichiers dont l'avant dernière lettre du nom n'est pas une + voyelle. S'il n'y a pas de tel fichier, la chaîne + « !(*[aeiouy]?) » est passée à la commande ls.

+ + ls [0-9]* affiche la liste des fichiers commençant par un + chiffre

+ ls +(abc) affiche la liste des fichiers dont le nom est une + répétition de « abc Â». +
+

+
+
+

Commandes shell de base

+ +
+
+

Droits et propriétés des fichiers

+

+Sous Unix un utilisateur est identifié par son login (ou nom +d'utilisateur). Chaque utilisateur est dans un groupe + principal.
+Chaque fichier appartient à un utilisateur et à un groupe.
+Chaque fichier possède 3 permissions pour son propriétaire, son groupe +et tous les autres. Les permissions sont lecture, écriture, exécution +(plus d'autres non abordées dans ce cours).
+ + + + + + + + + +
Permission fichier répertoire
lecture (r) lire le contenu du + fichierlister le contenu du répertoire
écriture (w) écrire dans le fichiersupprimer/renommer/créer des + fichiers dans le répertoire
exécution + (x) exécuter le fichier + (si
+ + c'est un programme)
rentrer dans le répertoire +
+$ ls -l +drwxr-x--- 9 kim prof 4096 Sep 7 21:31 Documents +

+
+
+

La commande chmod

+ + chmod permissions chemin1 … cheminn + +

modifie les permissions des fichiers 1 à n. La chaîne +permissions est soit une suite de modifications de +permissions symbolique soit l'ensemble des permissions données +de manière numérique:
+ + chmod 755 fichier.txt + chmod u-w,a+x,g=w fichier.txt + +

+
+
+

Permissions numériques

+

+On groupe les bits de permissions par trois puis on convertit +en décimal:
+ + + + + + + + + + + + + + +
Utilisateur + GroupeAutres
r w x r w x r w x
1 1 0 1 0 0 0 0 0
6 + 40
+Le fichier est lisible et modifiable mais pas exécutable par son +propriétaire, lisible pour le groupe. Les autres ne peuvent ni le lire +ni le modifier.

+
+
+

Permissions symboliques

+ + cible modifieur permission + + +

+Exemple:
+ chmod u+rw,u-x,g+r,g-wx,o-rwx fichier.txt +

+
+ + diff --git a/prog_internet/prog_internet_02.xhtml b/prog_internet/prog_internet_02.xhtml new file mode 100644 index 0000000..3300219 --- /dev/null +++ b/prog_internet/prog_internet_02.xhtml @@ -0,0 +1,1119 @@ + + + + + Programmation Internet + + + + + + + + + + + + + + + + + + + + +
+

Programmation Internet

+

Cours 2

+ kn@lri.fr
+ http://www.lri.fr/~kn +
+ +
+

Plan

+
    +
  1. Systèmes d'exploitation +
      +
    • 1.1 Principes des systèmes + d'exploitation ✔
    • +
    • 1.2 Système de gestion de fichiers ✔
    • +
    • 1.3 Système de gestion de processus
    • +
    +
  2. +
+
+ +
+

Définitions

+ + + + + + + + + + + + + + + +
Programme séquences d'instructions effectuant + une tâche sur un ordinateur
Exécutable fichier binaire contenant des + instructions machines interprétables par le + microprocesseur
Thread plus petite unité de traitement (≡ + séquence d'instructions) pouvant être ordonnancée par + l'OS +
Processus instance d'un programme (≡ « un + programme en cours d'exécution »). Un processus est constitué + de un ou plusieurs threads.
+
+ +
+

Exemple: programme

+

Dans un fichier « counter.c » + (attention c'est du pseudo + C)

+
+ int count = 0; + int exit = 0; + void display() { + while (exit == 0) { + sleep (3); + printf("%i\n", count); + } + } + void listen() { + while (exit == 0) { + wait_connect(80); + count++; + } + } +
+ void main () { + run_function(display); + run_function(listen); + while (getc () != '\n') { }; + exit = 1; + return; + } +
+
+
+

Exemple: programme

+

Compilation
+ + gcc -o counter.exe counter.c +
+ Le fichier « counter.exe » est un + exécutable (fichier binaire contenant du code machine)
+ + ./counter.exe ← il faut la permission +x sur le fichier + +
+ Le contenu de l'exécutable est copié en mémoire et le processeur + commence à exécuter la première instruction du programme. +

+
+
+

Exemple: threads

+
    +
  1. main
  2. +
  3. attente d'un évènement clavier + →←changement de thread +
  4. +
  5. listen
  6. +
  7. attente de connexion →←changement de thread +
  8. +
  9. display (affiche + 0 à l'écran)
  10. +
  11. attente pendant 3s → (les + 3 threads attendent un évènement externe)
    + nouvelle connexion sur le port 80 ← + réveil du thread listen +
  12. +
  13. listen + (incrémente count)
    + attente de connexion →
    + … fin des 3s
    + ← + réveil du thread display +
  14. +
  15. display (affiche + 1 à l'écran)
  16. +
+

Les threads partagent leur mémoire (variables communes)

+
+
+

Exemple: processus

+

(différence: les processus + ne partagent pas leur espace mémoire)

+
    +
  1. Exécution de counter.exe pendant 50㎲ +
  2. +
  3. Exécution + de firefox.exe + pendant 50㎲
  4. +
  5. Exécution du processus qui dessine le bureau pendant 50 + ㎲
    …
  6. + +
+

C'est le gestionnaire de processus qui décide quel + programme a la main et pour combien de temps (priorité aux + tâches critiques par exemple)
+ Le système d'exploitation stocke pour chaque processus un + ensemble d'informations, le PCB (Process Control Block). +

+
+
+

Proccess Control Block

+

Le PCB contient:

+ +
+
+

Opérations sur les processus

+ +
+
+

États d'un processus

+

Un processus change d'état au cours de son exécution

+ + + + + + +
Nouveau le processus est en cours de création
Exécution le processus s'exécute
En attente le processus attend un évènement + particulier (saisie au clavier, écriture sur le disque, + …)
Prêt le processus est prêt à reprendre son + exécution et attend que l'OS lui rende la main
terminé le processus a fini son exécution
+
+
+

États d'un processus

+

L'OS détermine et modifie l'état d'un processus:

+ +
+
+

États d'un processus

+ + + + + + + + + Nouveau + Prêt + En exécution + En attente + + + + + + + + + + Terminé + + + + + mise en routepar l'ordonnanceur + interruptionpar l'ordonnanceur + attente E/Sinterruption + fin E/Sint. traitée… + terminaisonnormale + terminaisonanormale + + + +
+
+

La commande ps

+

Permet d'avoir des informations sur les processus en cours + d'exécution (voir « man ps » pour les + options):
+ $ ps -o user,pid,state,cmd x + USER PID S CMD + … + kim 27030 Z [chrome] <defunct> + kim 27072 S /opt/google/chrome/chrome --type=renderer + kim 29146 S bash + kim 29834 S evince + kim 29858 S emacs cours.xhtml + kim 29869 R ps -o user,pid,state,cmd x +
+

+ +
+
+

États des processus (sous Linux)

+ + + + + + +
R Running (en cours d'exécution)
S Interruptible sleep (en attente, + interruptible)
D Uninterruptible sleep (en attente, + non-interruptible)
T Stopped (interrompu)
Z Zombie (terminé mais toujours + listé par le système)
+
+ +
+

Signaux

+

L'OS peut envoyer des signaux à un processus. Sur réception + d'un signal, un processus peut interrompre son comportement normal + et exécuter son gestionnaire de signal. Quelques signaux: +

+ + + + + + + + + +
Nom Code Description
HUP 1 demande au processus de + s'interrompre
INT 2 demande au processus de se + terminer
ABRT 2 interrompt le processus et produit + un dump
KILL 9 interrompt le processus immédiatement +
SEGV 11 signale au processus une erreur mémoire +
STOP 24 suspend l'exécution du processus +
CONT 28 reprend l'exécution d'un processus suspendu +
+
+
+

Processus et terminal

+

Un processus est lié au terminal dans lequel il est + lancé. Si on exécute un programme dans un terminal et que le + processus ne rend pas la main, le terminal est bloqué + + + $ gedit + + + On peut envoyer au processus le signal STOP en + tapant ctrl-Z dans le terminal: + + + $ gedit + ^Z + [1]+ Stopped gedit + + + Le processus est suspendu, la fenêtre est gelée (ne répond plus). +

+
+
+

Processus et terminal

+

On peut reprendre l'exécution du programme de deux + manières:
+ $ fg
+ Reprend l'exécution du processus et le remet en avant plan (terminal + bloqué)

+ $ bg
+ Reprend l'exécution du processus et le remet en arrière plan (terminal +libre)

+ On peut lancer un programme + directement en arrière plan en faisant:
+ $ gedit &
+ On peut envoyer un signal à un + processus avec la commande « kill [-signal] pid Â»
+ $ kill -9 2345
+

+
+
+

Processus et entrées/sorties

+

Le terminal et le processus sont liés par trois fichiers + spéciaux:

+
    +
  1. L'entrée standard (stdin), reliée + au clavier
  2. +
  3. La sortie standard (stdout), reliée + à l'affichage
  4. +
  5. La sortie d'erreur (stderr), reliée + à l'affichage
  6. +
+

Dans le shell, on peut utiliser les + opérateurs <, > + et 2> pour récupérer le contenu + de stdin, stdout + et stderr:
+ +$ sort < toto.txt +$ ls -l > liste_fichiers.txt +$ ls -l * 2> erreurs.txt + +

+
+
+

Processus et entrées/sorties

+

Dans le shell, l'opérateur | permet + d'enchaîner la sortie d'un programme avec l'entrée d'un + autre:
+ $ ls -l *.txt | sort -n -r -k 5 | head -n 1 +

+
    +
  1. affiche la liste détaillée des + fichiers textes
  2. +
  3. trie (et affiche) l'entrée standard par ordre + numérique décroissant selon le 5ème champ
  4. +
  5. affiche la première ligne de + l'entrée standard
  6. +
+
+ -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt + -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt + -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt + + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + +
+ +
+
+

Processus de type daemon

+

+ Un daemon (prononcé démon) est un processus + qui non-interactif qui tourne en tâche de fond (pas + d'entrée/sortie sur le terminal, pas d'interface graphique, …). On + communique avec ce processus via des signaux ou en lisant + ou écrivant dans des fichiers ou connexions réseau. Le plus souvent, + leur but est de fournir un service +

+

Exemple de scénario: « Les utilisateurs doivent interagir avec + le matériel. L'accès au matériel demande des droits + administrateur. » +

+ +
+
+

Quelques daemons sous Linux

+ + + + + + + + + + +
Nom Description
sshd shell distant sécurisé
crond exécution périodique de programmes
cupsd serveur d'impressions
pulseaudio serveur de son (mixe les sons des + différentes applications)
udevd détection de matériel hotplug
nfsd serveur de fichier réseau
smtpd livraison des e-mail
httpd serveur de pages Web
+
+
+

Architecture client-serveur

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + + Serveur + + + + + + + + + Client + + + + + + + + + + + + + + Client + + + + + + Client + + + + + + + + + + Client + + + + + + Client + + + + + + + + + + + + + +

+

+ Des processus clients communiquent + avec le serveur à travers le + réseau. Les clients sont indépendant et ne communiquent pas entre + eux. Attention plusieurs clients peuvent se trouver su la + même machine physique! +

+
+
+

Architecture client-serveur

+ +

Exemples: serveur de bases de données, serveur mail, serveur Web, + terminal de carte bancaire, …

+
+ + diff --git a/prog_internet/prog_internet_03.xhtml b/prog_internet/prog_internet_03.xhtml new file mode 100644 index 0000000..fa93d63 --- /dev/null +++ b/prog_internet/prog_internet_03.xhtml @@ -0,0 +1,1119 @@ + + + + + Programmation Internet + + + + + + + + + + + + + + + + + + + + +
+

Programmation Internet

+

Cours 2

+ kn@lri.fr
+ http://www.lri.fr/~kn +
+ +
+

Plan

+
    +
  1. Systèmes d'exploitation ✔ +
  2. Réseau et Internet +
      +
    • 2.1 Principes des réseaux
    • +
    • 2.2 TCP/IP
    • +
    • 3 +
    +
  3. +
+
+ +
+

Définitions

+ + + + + + + + + + + + + + + +
Programme séquences d'instructions effectuant + une tâche sur un ordinateur
Exécutable fichier binaire contenant des + instructions machines interprétables par le + microprocesseur
Thread plus petite unité de traitement (≡ + séquence d'instructions) pouvant être ordonnancée par + l'OS +
Processus instance d'un programme (≡ « un + programme en cours d'exécution »). Un processus est constitué + de un ou plusieurs threads.
+
+ +
+

Exemple: programme

+

Dans un fichier « counter.c » + (attention c'est du pseudo + C)

+
+ int count = 0; + int exit = 0; + void display() { + while (exit == 0) { + sleep (3); + printf("%i\n", count); + } + } + void listen() { + while (exit == 0) { + wait_connect(80); + count++; + } + } +
+ void main () { + run_function(display); + run_function(listen); + while (getc () != '\n') { }; + exit = 1; + return; + } +
+
+
+

Exemple: programme

+

Compilation
+ + gcc -o counter.exe counter.c +
+ Le fichier « counter.exe » est un + exécutable (fichier binaire contenant du code machine)
+ + ./counter.exe ← il faut la permission +x sur le fichier + +
+ Le contenu de l'exécutable est copié en mémoire et le processeur + commence à exécuter la première instruction du programme. +

+
+
+

Exemple: threads

+
    +
  1. main
  2. +
  3. attente d'un évènement clavier + →←changement de thread +
  4. +
  5. listen
  6. +
  7. attente de connexion →←changement de thread +
  8. +
  9. display (affiche + 0 à l'écran)
  10. +
  11. attente pendant 3s → (les + 3 threads attendent un évènement externe)
    + nouvelle connexion sur le port 80 ← + réveil du thread listen +
  12. +
  13. listen + (incrémente count)
    + attente de connexion →
    + … fin des 3s
    + ← + réveil du thread display +
  14. +
  15. display (affiche + 1 à l'écran)
  16. +
+

Les threads partagent leur mémoire (variables communes)

+
+
+

Exemple: processus

+

(différence: les processus + ne partagent pas leur espace mémoire)

+
    +
  1. Exécution de counter.exe pendant 50㎲ +
  2. +
  3. Exécution + de firefox.exe + pendant 50㎲
  4. +
  5. Exécution du processus qui dessine le bureau pendant 50 + ㎲
    …
  6. + +
+

C'est le gestionnaire de processus qui décide quel + programme a la main et pour combien de temps (priorité aux + tâches critiques par exemple)
+ Le système d'exploitation stocke pour chaque processus un + ensemble d'informations, le PCB (Process Control Block). +

+
+
+

Proccess Control Block

+

Le PCB contient:

+ +
+
+

Opérations sur les processus

+ +
+
+

États d'un processus

+

Un processus change d'état au cours de son exécution

+ + + + + + +
Nouveau le processus est en cours de création
Exécution le processus s'exécute
En attente le processus attend un évènement + particulier (saisie au clavier, écriture sur le disque, + …)
Prêt le processus est prêt à reprendre son + exécution et attend que l'OS lui rende la main
terminé le processus a fini son exécution
+
+
+

États d'un processus

+

L'OS détermine et modifie l'état d'un processus:

+ +
+
+

États d'un processus

+ + + + + + + + + Nouveau + Prêt + En exécution + En attente + + + + + + + + + + Terminé + + + + + mise en routepar l'ordonnanceur + interruptionpar l'ordonnanceur + attente E/Sinterruption + fin E/Sint. traitée… + terminaisonnormale + terminaisonanormale + + + +
+
+

La commande ps

+

Permet d'avoir des informations sur les processus en cours + d'exécution (voir « man ps » pour les + options):
+ $ ps -o user,pid,state,cmd x + USER PID S CMD + … + kim 27030 Z [chrome] <defunct> + kim 27072 S /opt/google/chrome/chrome --type=renderer + kim 29146 S bash + kim 29834 S evince + kim 29858 S emacs cours.xhtml + kim 29869 R ps -o user,pid,state,cmd x +
+

+ +
+
+

États des processus (sous Linux)

+ + + + + + +
R Running (en cours d'exécution)
S Interruptible sleep (en attente, + interruptible)
D Uninterruptible sleep (en attente, + non-interruptible)
T Stopped (interrompu)
Z Zombie (terminé mais toujours + listé par le système)
+
+ +
+

Signaux

+

L'OS peut envoyer des signaux à un processus. Sur réception + d'un signal, un processus peut interrompre son comportement normal + et exécuter son gestionnaire de signal. Quelques signaux: +

+ + + + + + + + + +
Nom Code Description
HUP 1 demande au processus de + s'interrompre
INT 2 demande au processus de se + terminer
ABRT 2 interrompt le processus et produit + un dump
KILL 9 interrompt le processus immédiatement +
SEGV 11 signale au processus une erreur mémoire +
STOP 24 suspend l'exécution du processus +
CONT 28 reprend l'exécution d'un processus suspendu +
+
+
+

Processus et terminal

+

Un processus est lié au terminal dans lequel il est + lancé. Si on exécute un programme dans un terminal et que le + processus ne rend pas la main, le terminal est bloqué + + + $ gedit + + + On peut envoyer au processus le signal STOP en + tapant ctrl-Z dans le terminal: + + + $ gedit + ^Z + [1]+ Stopped gedit + + + Le processus est suspendu, la fenêtre est gelée (ne répond plus). +

+
+
+

Processus et terminal

+

On peut reprendre l'exécution du programme de deux + manières:
+ $ fg
+ Reprend l'exécution du processus et le remet en avant plan (terminal + bloqué)

+ $ bg
+ Reprend l'exécution du processus et le remet en arrière plan (terminal +libre)

+ On peut lancer un programme + directement en arrière plan en faisant:
+ $ gedit &
+ On peut envoyer un signal à un + processus avec la commande « kill [-signal] pid Â»
+ $ kill -9 2345
+

+
+
+

Processus et entrées/sorties

+

Le terminal et le processus sont liés par trois fichiers + spéciaux:

+
    +
  1. L'entrée standard (stdin), reliée + au clavier
  2. +
  3. La sortie standard (stdout), reliée + à l'affichage
  4. +
  5. La sortie d'erreur (stderr), reliée + à l'affichage
  6. +
+

Dans le shell, on peut utiliser les + opérateurs <, > + et 2> pour récupérer le contenu + de stdin, stdout + et stderr:
+ +$ sort < toto.txt +$ ls -l > liste_fichiers.txt +$ ls -l * 2> erreurs.txt + +

+
+
+

Processus et entrées/sorties

+

Dans le shell, l'opérateur | permet + d'enchaîner la sortie d'un programme avec l'entrée d'un + autre:
+ $ ls -l *.txt | sort -n -r -k 5 | head -n 1 +

+
    +
  1. affiche la liste détaillée des + fichiers textes
  2. +
  3. trie (et affiche) l'entrée standard par ordre + numérique décroissant selon le 5ème champ
  4. +
  5. affiche la première ligne de + l'entrée standard
  6. +
+
+ -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt + -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + -rw-rw-r 1 kim kim 471 Sep 14 16:25 bd.txt + -rw-rw-r 1 kim kim 234 Sep 15 17:46 foo.txt + + -rw-rw-r 1 kim kim 1048576 Sep 24 09:20 large.txt + +
+ +
+
+

Processus de type daemon

+

+ Un daemon (prononcé démon) est un processus + qui non-interactif qui tourne en tâche de fond (pas + d'entrée/sortie sur le terminal, pas d'interface graphique, …). On + communique avec ce processus via des signaux ou en lisant + ou écrivant dans des fichiers ou connexions réseau. Le plus souvent, + leur but est de fournir un service +

+

Exemple de scénario: « Les utilisateurs doivent interagir avec + le matériel. L'accès au matériel demande des droits + administrateur. » +

+ +
+
+

Quelques daemons sous Linux

+ + + + + + + + + + +
Nom Description
sshd shell distant sécurisé
crond exécution périodique de programmes
cupsd serveur d'impressions
pulseaudio serveur de son (mixe les sons des + différentes applications)
udevd détection de matériel hotplug
nfsd serveur de fichier réseau
smtpd livraison des e-mail
httpd serveur de pages Web
+
+
+

Architecture client-serveur

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Client + + + + + Serveur + + + + + + + + + Client + + + + + + + + + + + + + + Client + + + + + + Client + + + + + + + + + + Client + + + + + + Client + + + + + + + + + + + + + +

+

+ Des processus clients communiquent + avec le serveur à travers le + réseau. Les clients sont indépendant et ne communiquent pas entre + eux. Attention plusieurs clients peuvent se trouver su la + même machine physique! +

+
+
+

Architecture client-serveur

+ +

Exemples: serveur de bases de données, serveur mail, serveur Web, + terminal de carte bancaire, …

+
+ + diff --git a/prog_internet/prog_internet_04.xhtml b/prog_internet/prog_internet_04.xhtml new file mode 100644 index 0000000..beb1272 --- /dev/null +++ b/prog_internet/prog_internet_04.xhtml @@ -0,0 +1,544 @@ + + + + + Programmation Internet + + + + + + + + + + + + + + + + + + + +
+

Programmation Internet

+

Cours 4

+ kn@lri.fr
+ http://www.lri.fr/~kn +
+ +
+

Plan

+
    +
  1. Systèmes d'exploitation ✔
  2. +
  3. Réseaux et Internet ✔
  4. +
  5. Le Web +
      +
    • 3.1 Internet et ses services
    • +
    • 3.2 Fonctionnement du Web
    • +
    • 3.3 Adressage des documents Web
    • +
    • 3.4 Le protocole HTTP
    • +
    • 3.5 HTML, le format des documents
    • +
    +
  6. +
+
+ +
+

Bref historique d'Internet (1/2)

+ + + + + + + + + + + + + + + +
1959-1968 ARPA + (Advanced Research Project Agency) crée un réseau + de quelques machines capable de résister à une attaque.
1969 ARPANET. Interconnexion des ordinateurs + centraux des grandes universités et institutions + américaines. Première utilisation du concept de paquet d'information.
1970-1982 Interconnexion avec la Norvège et le Royaume-Uni. +
1982 Passage au protocole TCP/IP. Naissance de l'Internet actuel.
+
+
+

Bref historique d'Internet (2/2)

+ + + + + + + + + + + + + + + +
1986 « Autoroutes de + l'information ». Des super-ordinateurs et les premières + connexions à fibres optiques sont utilisées pour accélérer + le débit d'Internet.
1987-1992 Apparition des premiers fournisseurs + d'accès. Les entreprises se connectent.
1993-2000 Avènement du Web. Démocratisation du haut-débit (vers + 2000 pour la France). +
2000-présent Explosion des services en ligne, arrivée des réseaux + sociaux, internet mobile, Cloud (stockage et calcul + mutualisés accessible depuis internet).
+
+ +
+

Internet

+ +
+
+

Exemples de services

+ + + + + + + + + + + + + + + + +
ServiceProtocolePortDescription
ftp File Transfer Protocol + 20,21 Transfert de fichiers
telnet Network Virtual + Terminal 23 Shell à distance
ssh Secure Shell 22Shell à + distance crypté
mailSimple Mail Transfer + Protocol 25 Envoi de mail
pop Post Office + Protocol 110Récupération de mail
imap Internet Message Access + Protocol 143Synchronisation de mails
nslookup Domain Name + System 42 Serveur de noms
http Hyper Text Transfer Protocole80Web
+
+
+

World Wide Web (1/2)

+ +
+ +
+

World Wide Web (2/2)

+

Concepts clé:

+ + + + +
URL localisation d'une page Web (« adresse de + la page »)
HTTP protocole de communication entre un + client et un serveur Web
HTML langage de description des pages + Web
+

Évolutions récentes (Web 2.0, internet mobile, Cloud, …)

+ +
+ + +
+

Plan

+
    +
  1. Systèmes d'exploitation
  2. +
  3. Réseaux et Internet
  4. +
  5. Le Web +
      +
    • 3.1 Internet et ses services
    • +
    • 3.2 Fonctionnement du Web
    • +
    • 3.3 Adressage des documents Web
    • +
    • 3.4 Le protocole HTTP
    • +
    • 3.5 HTML, le format des documents
    • +
    +
  6. +
+
+ +
+

Fonctionnement du Web

+
+ +
+ +
+ +
+

Côté client

+

Le navigateur :

+ +
+ +
+

Côté serveur

+ +
+ +
+

Plan

+
    +
  1. Systèmes d'exploitation
  2. +
  3. Réseaux et Internet
  4. +
  5. Le Web +
      +
    • 3.1 Internet et ses services
    • +
    • 3.2 Fonctionnement du Web
    • +
    • 3.3 Adressage des documents Web
    • +
    • 3.4 Le protocole HTTP
    • +
    • 3.5 HTML, le format des documents
    • +
    +
  6. +
+
+
+

Adressage des documents Web (1/3)

+ + +
URL Uniform Resource Locator + identifie un document sur internet
+

Une URL se décompose en 3 partie

+ +

Syntaxe (simplifiée) :

+ protocole://adresse/document +

Exemple :

+ http://www.lri.fr/~kn/teach_fr.html +
+ +
+

Adressage des documents Web (2/3)

+

On peut aussi préciser un numéro + de port, des paramètres + et un emplacement : +

+ protocole://adresse:port/document?p1=v1&p2=v2#empl +

Exemple :

+ http://www.youtube.com:80/results?search_query=tbbt#search-results +

Le serveur utilise les paramètres passés par le client dans + l'URL pour calculer le contenu de la page (changer la + chaîne « tbbt » ci-dessus et essayer)

+
+
+

Adressage des documents Web (3/3)

+

+ La racine d'un site Web + (ex: http://www.lri.fr/) correspond + à un répertoire sur le disque du serveur + (ex: /var/www). Le fichier

+ http://www.lri.fr/index.html +

se trouve à l'emplacement

+ /var/www/index.html +

Le serveur Web peut aussi effectuer des réécritures + d'adresses :

+ http://www.lri.fr/~kn/index.html +

devient

+ /home/kn/public_html/index.html +
+
+

Plan

+
    +
  1. Systèmes d'exploitation
  2. +
  3. Réseaux et Internet
  4. +
  5. Le Web +
      +
    • 3.1 Internet et ses services
    • +
    • 3.2 Fonctionnement du Web
    • +
    • 3.3 Adressage des documents Web
    • +
    • 3.4 Le protocole HTTP
    • +
    • 3.5 HTML, le format des documents
    • +
    +
  6. +
+
+
+

Caractéristiques du protocole HTTP

+ +
+
+

Format des messages HTTP

+

Les messages ont la forme suivante

+ + +
+
+

Démo

+
+
+

Plan

+
    +
  1. Systèmes d'exploitation
  2. +
  3. Réseaux et Internet
  4. +
  5. Le Web +
      +
    • 3.1 Internet et ses services
    • +
    • 3.2 Fonctionnement du Web
    • +
    • 3.3 Adressage des documents Web
    • +
    • 3.4 Le protocole HTTP
    • +
    • 3.5 HTML, le format des documents
    • +
    +
  6. +
+
+
+

HTML

+

+ HyperText Markup Language : langage de mise en forme + de documents hypertextes (texte + liens vers d'autres + documents). Développé au CERN en 1989.
+ 1991 : premier navigateur en mode texte
+ 1993 : premier navigateur graphique (mosaic) + développé au NCSA (National Center for Supercomputing + Applications) +

+
+
+

Document HTML

+ +
+ + + + + + + + +
Exemple Rendu par défaut
en gras ]]>Un + texte en gras
Un lien ]]>Un lien
+
  • Premièrement
  • +
  • Deuxièmement
  • + ]]>
      +
    • Premièrement
    • +
    • Deuxièmement
    • +
    +
    +
    +

    On dit que ]]> est une balise + ouvrante et ]]> une + balise fermante. On peut + écrire ]]> comme raccourci pour + ]]>. +

    +
    +
    +

    Historique du langage HTML

    + + + + + + + + +
    1973 GML, Generalised Markup Language développé chez +IBM. Introduction de la notion de balise.
    1980 SGML, Standardised GML, adopté par l'ISO
    1989 HTML, basé sur SGML. Plusieurs entreprises (microsoft, +netscape, ... ) interprètent le standard de manière +différente
    1996 XML, eXtensible Markup Language norme pour les +documents semi-structurés (SGML simplifié)
    2000 XHTML, version de HTML suivant les conventions + XML
    2008 Première proposition pour le nouveau standard, + HTML5
    2014Standardisation de HTML5
    +
    + +
    +

    XHTML vs HTML

    +

    On utilise XHTML dans le cours. Différences avec HTML:

    + +

    Les avantages sont les suivants

    + +
    +
    +

    Rôle d'(X)HTML

    +

    Séparer la structure du document de + son rendu. La structure donne une sémantique au + document :

    + +

    Cela permet au navigateur d'assurer un rendu en fonction de la + sémantique. Il existe différents types de rendus:

    + +
    +
    +

    Exemple de document

    +

    (liste des balises + données sur la feuille de TD 4!)

    +
    + + + + Un titre + + + +

    Titre de section

    +

    premier paragraphe de texte. On met + un lien ici. +

    + + + ]]>
    +
    +
    + + diff --git a/prog_internet/prog_internet_05.xhtml b/prog_internet/prog_internet_05.xhtml new file mode 100644 index 0000000..91d1ff4 --- /dev/null +++ b/prog_internet/prog_internet_05.xhtml @@ -0,0 +1,531 @@ + + + + + Programmation Internet + + + + + + + + + + + + + + + + + + + +
    +

    Programmation Internet

    +

    Cours 5

    + kn@lri.fr
    + http://www.lri.fr/~kn +
    + +
    +

    Plan

    +
    +
      +
    1. Systèmes d'exploitation
    2. +
    3. Réseaux et Internet
    4. +
    5. Le Web
    6. +
    7. CSS +
        +
      • 4.1 Introduction
      • +
      • 4.2 Boîtes
      • +
      • 4.3 Selecteurs
      • +
      +
    8. +
    +
    +
    + +
    +

    Cascading Style Sheets (CSS)

    + + + + +
    CSS + Langage permettant de décrire le style graphique + d'une page HTML +
    +

    On peut appliquer un style CSS

    + +
    +
    +

    L'attribut style

    + Un lien]]> + +

    Apperçu:

    +

    + Un lien +

    +

    Inconvénient: il faut copier l'attribut + style pour tous les liens de la page. +

    +
    + +
    +

    Internet

    + +
    +
    +

    Exemples de services

    + + + + + + + + + + + + + + + + +
    ServiceProtocolePortDescription
    ftp File Transfer Protocol + 20,21 Transfert de fichiers
    telnet Network Virtual + Terminal 23 Shell à distance
    ssh Secure Shell 22Shell à + distance crypté
    mailSimple Mail Transfer + Protocol 25 Envoi de mail
    pop Post Office + Protocol 110Récupération de mail
    imap Internet Message Access + Protocol 143Synchronisation de mails
    nslookup Domain Name + System 42 Serveur de noms
    http Hyper Text Transfer Protocole80Web
    +
    +
    +

    World Wide Web (1/2)

    + +
    + +
    +

    World Wide Web (2/2)

    +

    Concepts clé:

    + + + + +
    URL localisation d'une page Web (« adresse de + la page »)
    HTTP protocole de communication entre un + client et un serveur Web
    HTML langage de description des pages + Web
    +

    Évolutions récentes (Web 2.0, internet mobile, Cloud, …)

    + +
    + + +
    +

    Plan

    +
      +
    1. Systèmes d'exploitation
    2. +
    3. Réseaux et Internet
    4. +
    5. Le Web +
        +
      • 3.1 Internet et ses services
      • +
      • 3.2 Fonctionnement du Web
      • +
      • 3.3 Adressage des documents Web
      • +
      • 3.4 Le protocole HTTP
      • +
      • 3.5 HTML, le format des documents
      • +
      +
    6. +
    +
    + +
    +

    Fonctionnement du Web

    +
    + +
    + +
    + +
    +

    Côté client

    +

    Le navigateur :

    + +
    + +
    +

    Côté serveur

    + +
    + +
    +

    Plan

    +
      +
    1. Systèmes d'exploitation
    2. +
    3. Réseaux et Internet
    4. +
    5. Le Web +
        +
      • 3.1 Internet et ses services
      • +
      • 3.2 Fonctionnement du Web
      • +
      • 3.3 Adressage des documents Web
      • +
      • 3.4 Le protocole HTTP
      • +
      • 3.5 HTML, le format des documents
      • +
      +
    6. +
    +
    +
    +

    Adressage des documents Web (1/3)

    + + +
    URL Uniform Resource Locator + identifie un document sur internet
    +

    Une URL se décompose en 3 partie

    + +

    Syntaxe (simplifiée) :

    + protocole://adresse/document +

    Exemple :

    + http://www.lri.fr/~kn/teach_fr.html +
    + +
    +

    Adressage des documents Web (2/3)

    +

    On peut aussi préciser un numéro + de port, des paramètres + et un emplacement : +

    + protocole://adresse:port/document?p1=v1&p2=v2#empl +

    Exemple :

    + http://www.youtube.com:80/results?search_query=tbbt#search-results +

    Le serveur utilise les paramètres passés par le client dans + l'URL pour calculer le contenu de la page (changer la + chaîne « tbbt » ci-dessus et essayer)

    +
    +
    +

    Adressage des documents Web (3/3)

    +

    + La racine d'un site Web + (ex: http://www.lri.fr/) correspond + à un répertoire sur le disque du serveur + (ex: /var/www). Le fichier

    + http://www.lri.fr/index.html +

    se trouve à l'emplacement

    + /var/www/index.html +

    Le serveur Web peut aussi effectuer des réécritures + d'adresses :

    + http://www.lri.fr/~kn/index.html +

    devient

    + /home/kn/public_html/index.html +
    +
    +

    Plan

    +
      +
    1. Systèmes d'exploitation
    2. +
    3. Réseaux et Internet
    4. +
    5. Le Web +
        +
      • 3.1 Internet et ses services
      • +
      • 3.2 Fonctionnement du Web
      • +
      • 3.3 Adressage des documents Web
      • +
      • 3.4 Le protocole HTTP
      • +
      • 3.5 HTML, le format des documents
      • +
      +
    6. +
    +
    +
    +

    Caractéristiques du protocole HTTP

    + +
    +
    +

    Format des messages HTTP

    +

    Les messages ont la forme suivante

    + + +
    +
    +

    Démo

    +
    +
    +

    Plan

    +
      +
    1. Systèmes d'exploitation
    2. +
    3. Réseaux et Internet
    4. +
    5. Le Web +
        +
      • 3.1 Internet et ses services
      • +
      • 3.2 Fonctionnement du Web
      • +
      • 3.3 Adressage des documents Web
      • +
      • 3.4 Le protocole HTTP
      • +
      • 3.5 HTML, le format des documents
      • +
      +
    6. +
    +
    +
    +

    HTML

    +

    + HyperText Markup Language : langage de mise en forme + de documents hypertextes (texte + liens vers d'autres + documents). Développé au CERN en 1989.
    + 1991 : premier navigateur en mode texte
    + 1993 : premier navigateur graphique (mosaic) + développé au NCSA (National Center for Supercomputing + Applications) +

    +
    +
    +

    Document HTML

    + +
    + + + + + + + + +
    Exemple Rendu par défaut
    en gras ]]>Un + texte en gras
    Un lien ]]>Un lien
    +
  • Premièrement
  • +
  • Deuxièmement
  • + ]]>
      +
    • Premièrement
    • +
    • Deuxièmement
    • +
    +
    +
    +

    On dit que ]]> est une balise + ouvrante et ]]> une + balise fermante. On peut + écrire ]]> comme raccourci pour + ]]>. +

    +
    +
    +

    Historique du langage HTML

    + + + + + + + + +
    1973 GML, Generalised Markup Language développé chez +IBM. Introduction de la notion de balise.
    1980 SGML, Standardised GML, adopté par l'ISO
    1989 HTML, basé sur SGML. Plusieurs entreprises (microsoft, +netscape, ... ) interprètent le standard de manière +différente
    1996 XML, eXtensible Markup Language norme pour les +documents semi-structurés (SGML simplifié)
    2000 XHTML, version de HTML suivant les conventions + XML
    2008 Première proposition pour le nouveau standard, + HTML5
    2014Standardisation de HTML5
    +
    + +
    +

    XHTML vs HTML

    +

    On utilise XHTML dans le cours. Différences avec HTML:

    + +

    Les avantages sont les suivants

    + +
    +
    +

    Rôle d'(X)HTML

    +

    Séparer la structure du document de + son rendu. La structure donne une sémantique au + document :

    + +

    Cela permet au navigateur d'assurer un rendu en fonction de la + sémantique. Il existe différents types de rendus:

    + +
    +
    +

    Exemple de document

    +

    (liste des balises + données sur la feuille de TD 4!)

    +
    + + + + Un titre + + + +

    Titre de section

    +

    premier paragraphe de texte. On met + un lien ici. +

    + + + ]]>
    +
    +
    + +