Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

nombre réponses : 25

#0 -1 »  Recherche d'un stage informatique - DUT Informatique, 2e » Le 08/02/2014, à 13:42

Bloupies
Réponses : 8

Bonjour,

Après plusieurs semaines/mois de recherche, je vais tenter à chance auprès de forum, qui sait, peut être que je pourrais trouver des informations intéressantes.
s
Étant actuellement en seconde année d’IUT Informatique ( Aix-Marseille, sites d’Arles ), je dois faire mon stage de fin d'études au sein d'une entreprise, qui se passera du 31.03.14 au 22.06.14. ( 2 mois, 20 jours )

Me concernant, j'ai participé à quelques projets durant mes études en IUT Informatique, par exemple Vigicrue, un soft modélisant les Bouches-du-Rhône 3D ( avec les cours d’eau en mouvement ), Un brin de cuisine, une application de partage de recettes de cuisine (  PHP - MySql, Framework Codeigniter ), également un Démineur internationalisé en Java, de petites applications en C++ (Librairie Qt) et bien d’autres.

Du coup, je possède déjà un petit savoir-faire (bases économiques - Bac ES, major de promo en IUT )

Voila voila.
PS : Si jamais quelqu'un a des contacts, je les accepterais avec plaisir ( ici ou via MP ) lol

#1 -1 »  Cle usb 3.0 HS ? » Le 20/10/2013, à 13:43

Bloupies
Réponses : 3

Bonjour,

Si jamais une clé USB n'est ni detectable par un autre ordinateur, ni par un terminal.. ( force de la retirer brusquement), la seule solution est de la jeter ?

#2 Re : -1 »  Cle usb 3.0 HS ? » Le 20/10/2013, à 14:01

Bloupies
Réponses : 3

Exactement ça.
Indetectable via fdisk ou l'utilitaire de disque.

Elle date d'un mois à peine sad

#3 -1 »  Socket Multi thread » Le 23/04/2013, à 13:51

Bloupies
Réponses : 4

Bonjour ,

Je vous explique mon soucis .

J'ai mes deux programmes clients serveurs fonctionnant sous TCP IP ( langages C/C++ )

Pour l'instant , le client peut envoyer des commandes au serveur à l'aide de socket ,  qu'il exécutera localement  , enverra au client les infos et donc lui les recevra .

Cependant , j'aimerais réaliser cela à l'aide de socket indépendante ( donc faire du multi-thread ) , chacune ayant un rôle , par exemple une qui s'occupe de l'envoie  , une qui reçoit , une qui s'occupe de la gestion des erreurs etc ..

Donc je me demandais de quel façon je pourrais faire tout cela .
Mutex ? Sémaphores ? Comment s'occuper de la gestion des erreurs ( renvoie de 0 ou -1 ) etc ..

J'espère que vous saurez me guider !
Merci d'avance

#4 -1 »  Fork et fils » Le 14/02/2013, à 17:26

Bloupies
Réponses : 7

Bonjour

Je voudrais créer 4 processus de 3 façons différentes :

167130Capturedcran20130214161358.png

Voici mon main() :

int main()
{
	pid_t pid;

cerr<<"------avant le fork------"<<endl;

	pid = fork();

cerr<<"------apres le fork------"<<endl;

/* Si pid > 0 on est dans le processus pere
        pid = 0 processus fils
        pid < 0 le fork n'a pas fonctionne */
	if (pid > 0) {
   

       for (int i=0;i <11 ; i++)
	    cout << i << endl;
        cout<<"\tProcessus pere (valeur pid="<<pid<<"), getpid="<<getpid()<<" , getppid="<<getppid()<<endl;
		sleep(5);
			}
	else if (pid == 0){
	    for (int i=20;i <31 ; i++)
	    cout << i << endl;
		cout<<"\tProcessus fils valeur pid="<<pid<<"), getpid="<<getpid()<<" , getppid="<<getppid()<<endl;
		sleep(5);
		}
	else
		cerr<<"Erreur a la creation du processus"<<endl;

cerr<<"------avant le return du main()------"<<endl;

return(0);
}

Donc le père affiche des entiers de 1 à 10 , et le premier fils de 10 à 20 .
Comment puis-je faire pour que le fils 1 affiche 10 à 20 , le fils2 de 20 à 30 , le fils3 de 30 à 40 ?

Pour l'une des façons ,c 'est à dire père -> fils1 -> fils2 -> fils3 , j'ai pensé rajouter au fils1 un fork , donc au fils de fils1 , c'est à dire fils2 , un nouveau fork ?

Enfin j'arrive pas à organiser tout ça

Merci d'avance


Modération : j’ai déplacé cette discussion dans une section plus appropriée.

#5 Re : -1 »  Fork et fils » Le 15/02/2013, à 10:14

Bloupies
Réponses : 7

salut

Celui de haut à gauche n'a pas l'air de fonctionner , du moins pour le fils3

#include <iostream>

//necessaire pour le fork (cf man) et le sleep
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>



using namespace std;
int status;

int main()
{
    pid_t pid;

cerr<<"------avant le fork------"<<endl;

    pid = fork();

cerr<<"------apres le fork------"<<endl;

/* Si pid > 0 on est dans le processus pere
        pid = 0 processus fils
        pid < 0 le fork n'a pas fonctionne */
    if (pid > 0) {
   
        for (int i=1;i <=10; i++)
        cout << i << endl;
        cout<<"\tProcessus pere (valeur pid="<<pid<<"), getpid="<<getpid()<<" , getppid="<<getppid()<<endl;
        pid=fork();
        sleep(5);}
   
            if (pid >0 ){
                pid=fork();
            
                    if (pid==0) {
                       
                            for (int i=30;i <=40; i++)
                                cout << i << endl;
                                cout<<"\tProcessus fils3 (valeur pid="<<pid<<"), getpid="<<getpid()<<" , getppid="<<getppid()<<endl;
                                sleep(5); }}
       
                                if (pid==0) {
                                   
                                    for (int i=20;i <=30; i++)
                                    cout << i << endl;
                                    cout<<"\tProcessus fils2 (valeur pid="<<pid<<"), getpid="<<getpid()<<" ,    getppid="<<getppid()<<endl;
                                    sleep(5); }
       
                                            if (pid==0) {
     
                                                for (int i=10;i <=20; i++)
                                                cout << i << endl;
                                                cout<<"\tProcessus fils1 (valeur pid="<<pid<<"), getpid="<<getpid()<<" , getppid="<<getppid()<<endl;
                                                sleep(5); }



return(0);
}
/* fork()
pere
   print 1 à 10
   fork()
   pere
      fork()
      pere
         rien
      fils => fils3
         print 30 à 40
   fils => fils2
      print 20 à 30
fils => fils1
   print 10 à 20 */

#6 Re : -1 »  Fork et fils » Le 15/02/2013, à 13:42

Bloupies
Réponses : 7

En effet merci , j essaie de faire les autres selon ton modèle .

Cependant , pourrais-tu me dire pourquoi le fils3 affiche getppid = 1 tandis que fils2 et fils1 affiche getppid=getpid du père ?

#7 -1 »  Pagination et Swapping » Le 11/02/2013, à 14:07

Bloupies
Réponses : 8

Bonjour .

En cours de systeme , nous avons fait la pagination et le swapping , mais j'ai beau essayé de regarder d autres explications sur le net , je n'arrive pas du tout à visualiser ce cours . Pages , mémoire virtuel , cadre , offset et tout ça ne veulent pas rentrer ..
Ceci sont des morceaux de cours que je ne saisis pas

La pagination

1)

Les problèmes posés
Problème : -Ou mettre le système ( permanent ) et les processus ( temporaires ) ?

Problèmes annexes :
-Comment assurer l’intimité du système et des processus ?
- Que faire lorsque la mémoire est pleine ? (ôter les processus inactifs ?)
Mise en œuvre : Pagination et espace d’adressage virtuel

2)

Pagination : Transformation d’une adresse virtuelle en adresse physique .
-On considère que la mémoire est constitué de pages de taille fixe , par exemple 4ko sur x86 .
-adresse=numéro de page + déplacement dans la page . La table de transformation ne porte ainsi que sur les numéros de page .
-remarque : la page est la partie virtuelle de la mémoire , le cadre la partie physique

Sur x86, 1 page = 4Ko (2^12, 12 bits). L'adressage est sur 32 bits, il reste 20 bits pour les n° de page : 2^20 possibilités.
Problème : comment organiser cette table ?
La table des pages fera la relation pages virtuelles/ adresses réelles. Données utilisables = 2^20 x 4 octets = 4 Mo par processus
Solution : on redécoupe la table en
répertoire + page + offset

on reste sur une adresse 32 bits, on à 1024 rép (2^10) de 1024 pages et 4096 offsets (2^12) (soit 4 Go pour un processus) ; chaque entrée du répertoire adresse 4 Mo.

3)

Remarques :
gestion supplémentaire pour le système : « traduction » des pages,
allocation intra-page, fragmentation
définition, pour chaque entrée d'une table des pages, de bits de protection (lecture, écriture, exécution). Exemple :
        ●  les pages du code ne sont accessibles qu'en exécution ;
        ●  les pages de données sont accessibles en lecture écriture. 
tous les processus qui exécutent le même programme partagent les mêmes cadres (pages différentes). Les processus ne peuvent partager de pointeurs (adresses virtuelles). 
les répertoires sont toujours conservés en mémoire. Les tables de page peuvent être évacuées : swapping et pagination

Swapping

1)

Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
On garde le swapping pour les cas extrêmes : manque de mémoire et processus en attente longue.
La pagination est plus légère : elle transfère des pages de 4 ko.

2)

Lorsque la mémoire est saturée et qu'il se produit un défaut de page (page non disponible en mémoire), il faut alors :
1) choisir une page à évincer et la recopier en mémoire secondaire (si nécessaire) ;
2) charger à sa place la page manquante ;
3) mettre à jour les tables des pages

3)

Le choix de la page à évincer est fondamental pour l'efficacité du système.
Objectif du système : minimiser les défauts de pages.
Deux stratégies sont possibles :
évincer la page la plus ancienne en mémoire (FIFO)
évincer la page qui sera accédée le plus tard possible (OPT), nécessite une connaissance complète de ce qui va se passer.

4)

Solutions plus utilisées :
LRU : choisir la page dont le dernier accès est le plus ancien ;
LFU : idem que LRU mais utilise la fréquence d'accès.
Toutes ces stratégies nécessitent de maintenir une comptabilité des accès : extrêmement coûteux. On utilise donc des approximations.

Donc voilà . Comme je l'ai dis , j'ai beau comprendre qu'on peut faire croire qu'on peut utiliser plus de mémoire tout ça , mais comment cela fonctionne réellement , ça je n'y arrive pas . Les morceaux de cours que j'ai mis sont vraiment difficile pas facile à saisir/visualiser ..

Merci d'avance à ceux qui pourront m'aider ..

#8 Re : -1 »  Pagination et Swapping » Le 11/02/2013, à 18:58

Bloupies
Réponses : 8

Bonsoir .
Merci de ton retour , mais malgré ça je n'arrive pas à comprendre les bouts de cours que j'ai ..

#9 Re : -1 »  Pagination et Swapping » Le 12/02/2013, à 08:49

Bloupies
Réponses : 8

Bon , à force de lre et relire , ça commence à rentrer . J'aurai quelques questions


PS : Le gestionnaire de mémoire , c'est le noyeau ? MMU ,
1) La pagination permet de mettre dans un espace temporaire , le plus souvent au disque dur , les processus " pas vraiment utilisé " dans , donc , l'espace virtuelle dans des blocs ou pages de 4ko la plupart du temps , et pouvant être relié à des pages physiques graçe au MMU qui s'occupe de la conversion ( si l'adresse logique n'est pas relié , c a d n'a pas de page physique , on appelle ça un défaut de page) . Donc si l'adresse virtuel est converti en physique , elle prend a cet instant de la place en ram , sinon elle garde sa place dans le disque dur ?

2) Mais dans ce schéma , elles sont reliées à des pages physiques , qui contiennent quoi au juste ? ( je n'ai pas compris également le calcul )

664119Capturedcran20130212072800.png


3)Aussi , vu qu'on dit que la pagination est un avantage , je suppose que les pages peuvent être infini , et les  pages de la ram ne le sont pas ?

4) Et dans tout ça , à quoi sert le swap ? Que fait-il ?
---------------

http://www.hostingpics.net/viewer.php?i … 073719.png


4) Ici , qu'est ce que le répertoire , page ,offset ..

#10 Re : -1 »  Pagination et Swapping » Le 12/02/2013, à 13:24

Bloupies
Réponses : 8

D'accord , ne m'oublis pas smile

Donc le swap contient les process non utilisés ? Tout comme l'espace virtuelle ou il y a les pages ?

Edit : J'ai trouvé l'explication ici : [Extension de la mémoire ] En utilisant un mécanisme de mémoire virtuelle, consistant à utiliser le disque dur comme mémoire principale et à stocker uniquement dans la RAM les instructions et les données utilisées par le processeur. Le système d'exploitation réalise cette opération en créant un fichier temporaire (appelé fichier SWAP, traduit "fichier d'échange") dans lequel sont stockées les informations lorsque la quantité de mémoire vive n'est plus suffisante .

Du coup le swap c est un fichier dans l'espace virtuelle  ?

Edit 2 : Utilisation de disques comme stockage de processus lents ou peu utilisés :
un processus entier : swapping ;
des pages inutilisées : pagination.
Donc c'est indépendant , pagination ou swapping selon les processus inutilisées pour la pagination ou un swap pour les processus entiers par exemple dans le cas d'un soucis de mémoire .

Est-ce bien cela ? Ou est donc situé le swap ?

Je ne comprends pas aussi : La table des pages , c'est le MMU ?

#11 Re : -1 »  Pagination et Swapping » Le 12/02/2013, à 20:21

Bloupies
Réponses : 8

Bon finalement c'est plus clair , merci .

A lock smile

#12 -1 »  Linux et Multithread » Le 09/02/2013, à 12:01

Bloupies
Réponses : 4

Bonjour ,

J'aimerais une confirmation concernant ma compréhension sur deux notions , et une explication sur quelques images si possible .

Les threads : Eux, partagent tous le même espace en mémoire ainsi que les mêmes ressources (descripteurs de fichier, sockets etc...) contrairement aux processus classiques qui possèdent chacun leur propre espace mémoire .
-> Donc on peut déduire qu'il y a un accès unique à la mémoire tampon pour le processus et pas pour le thread dans ce cas ?

Ce que j'ai saisis , c'est qu'avec le fork() , concernant un processus , bah le processus fils crée et le père auront les mêmes données, mais tout sera identique entre les deux ? ( contexte , données , mémoire , ..)

Maintenant , voici les explications sur images que je ne saisis pas :

Là avec les thread , je ne saisis plus qui à quoi :


Threads

Donc du coup , son petit programme aussi :

ProgThread

Pour finir , un dernier élément me laissant perplexe : Le clone

clone crée un nouveau processus, exactement comme le fait fork mais contrairement à fork ,  il permet le partage d'une partie du contexte d'exécution entre le processus fils et le processus appelant . Fork ne le fait pas donc ?

Voici son diapositive :

Clone

Merci infiniment d'avance pour votre aide

#13 Re : -1 »  Linux et Multithread » Le 09/02/2013, à 22:59

Bloupies
Réponses : 4

Bonsoir

Je ne comprends pas toujours les deux premières images . Personne n'a le code , ni le père ni le fils  , et le fils a des données locales ..

#14 Re : -1 »  Linux et Multithread » Le 09/02/2013, à 23:15

Bloupies
Réponses : 4

Ho je te remercie smile

Plus qu'à attendre une petite explication sur le prof et puis je serais comblé

#15 -1 »  Linux et gestion des processus » Le 14/01/2013, à 22:54

Bloupies
Réponses : 10

Bonsoir

J'essaie de comprendre quelques nouvelles notions en système traitant sur les processus sous Linux et j'avoue avoir un peu de mal .


Quelques problèmes de gestion quand :
a)-Quand le systeme a besoin de plus d’un executable
b)-Quand 2 programmes veulent accéder au même fichier
c)-Quand 2 instances d’un programme utilisent la même zone mémoire
d)-Quand l’utilisateur veut lancer plusieurs taches en même temps ( et fait planter un programme )

J ‘aimerais bien cerner quelques trucs : Les affirmations sont claires mais j’aurai bien avoir 1-2 exemples pour chaque si possible ..

-----------------

Processus ou tâche : image active de tout ou partie d’un programme en mémoire .

Hum c’est à dire image active d’un programme ?

-----------------

Multitache : Tous les systemes sont multitaches , mais ils n’offrent pas tous cette possibilité aux utilisateurs  .

Cela veut dire que pas tous les systemes sont multitaches ou bien que mêmes si certaines sont multitaches , on ne peut pas en profiter ?

-----------------

Ordonnancement

Cela permet de ce que j’ai compris de donner des priorités ( systeme , phériphériques ) , cela permet ainsi de choisir la priorité des processus que l’on veut selon nos choix ?

-----------------

Exclusion mutuelle

Cela devrait permettre de garantir l’accès à un seul programme pour une ressource. Donc un seul processus pour un seul programme ?

-------------------

Programmation concurrente

Je n’ai pas vraiment compris le sens , ou du moins l’utilisé : «  Tenir compte , dans des langages spécialisés ou non , du multiprocessing ou du multiprocesseur

-------------------

Pour synchroniser les processus , on utilise des fonctions matérielles :
-Test and Set , qui est une opération atomique en assembleur
ou des solutions logicielles :
-Booléens
-drapeaux(algo. De Dekker)
- sémaphores
On synchronise pour garantir l’accés aux sectionS critiques d’un programme .  Les attentes sont actives (SpinLock) ou non .
Quelques problemes subsistent , notamment l’interblocage ou deadlock .

Hum synchroniser les processus , on entend quoi par synchroniser ?
Garantir l'accès aux sections critiques ? C'est à dire ?

-------------------

Et pour finir , un exemple que je n'arrive pas à saisir :

972073Capturedcran20130114180855.png

476752Capturedcran20130114180958.png


Voilà voilà .

Merci d'avance de votre aide

#16 Re : -1 »  Linux et gestion des processus » Le 15/01/2013, à 14:21

Bloupies
Réponses : 10

Petit up si quelqu'un saurait m'aider hmm

#17 Re : -1 »  Linux et gestion des processus » Le 31/01/2013, à 22:13

Bloupies
Réponses : 10

Salut .

Merci pour tes infos , ça m'a super aidé pour affiner mes cours , j'en ai profité pour chercher plus loin .

Je me demandais quelles différences y a t-il entre l'algol de Decker et le TAS ( test and set )  , car les deux , après être rentré , mettent un verrou à 1 empêchant le second processus de rentrer , le laissant attendre .

Merci

#18 Re : -1 »  Linux et gestion des processus » Le 31/01/2013, à 22:18

Bloupies
Réponses : 10

Mais n'y a t-il pas quelque chose les distinguant l'un l'autre ?

#19 Re : -1 »  Linux et gestion des processus » Le 31/01/2013, à 22:26

Bloupies
Réponses : 10

deux processus peuvent rentrer en même temps et lock ? T'es sur ? C'est pas que l'exclusion mutuelle ( attente active ) ?

Car pour le TAS , il y a une vérification permettant de savoir s'il y a déjà quelqu'un à l'intérieur , si personne , hop il lock après être rentré .

Je pensais que ces deux là sortaient du lock en évitant le problème des deux pross en même temps .

#20 Re : -1 »  Linux et gestion des processus » Le 31/01/2013, à 23:30

Bloupies
Réponses : 10

Salut , je comprends maintenant un peu mieux .

Ton explication s'explique pour l'algo de decker et le TAS également . Même défaut ?

Au passage : Tu es étudiant , ingénieur ou autres ?
Je serais bien curieux d'en savoir plus concernant tes connaissances smile

#21 -1 »  Balise html dans script ? » Le 07/01/2013, à 22:44

Bloupies
Réponses : 1

Bonsoir et meilleure voeux à tous .

Un scrip créant des fichiers(fichier1,fichier2 etc ..) contenant des données : En faisant .html a la fin du nom du fichier , cela crée bien une page html , mais toute sale , en désordre et tout ça

Faut-il obligatoirement ecrire les commandes css dans le script ?

Sachant que j'ai quelques bases en html5 et css , rajouter petit à petit dans un script d'une centaine de ligne des balises de code avec écho , je trouve ça galère ..

#22 Re : -1 »  Executer sur un autre serveur » Le 29/12/2012, à 08:23

Bloupies
Réponses : 8

Salut , j'ai réussi à le faire mais en changeant le truc

Au lieu de

bash < ~/script.sh

j'ai du me déplacer au dossier au dossier courant donc ./script.sh

Sinon ça me dit no such file or directory .

Petit soucis : Le script executé doit enregistrer des infos dans des fichiers . Mais vu que je l'ai lançé sur le ssh , il les enregistre sur ma machine distante . N'y a t il pas de solution pour les enregistrer chez moi ?

Merci de ton aide .

#23 Re : -1 »  Executer sur un autre serveur » Le 29/12/2012, à 16:05

Bloupies
Réponses : 8

Je viens d'essayer , ça marche , ça a enregistré le fichier texte avec les données .

Mais comment faire lorsque le script de base crée plusieurs fichiers à la base ?

#24 Re : -1 »  Executer sur un autre serveur » Le 01/01/2013, à 12:22

Bloupies
Réponses : 8

Salut

Désolé du retard , j'ai finalement laissé tombé , casse tête à mon gout ! Ca ne veut pas faire ce que je veux .

Merci encore de ton aide