The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX for Advanced & Expert Users
.
google unix.com



UNIX for Advanced & Expert Users Expert à Expert. Apprenez avancé UNIX, des commandes UNIX, Linux, les systèmes d'exploitation, d'administration système, de la Programmation, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Pro * C pour les requêtes SQL en utilisant threading concept user71408 UNIX pour les nuls Questions et réponses 0 05-21-2008 03:11 AM
LUN concept Prem HP-UX 1 02-22-2007 05:02 PM
Ayant des difficultés avec UNIX concept. S'il vous plaît, aidez! Alon UNIX pour les nuls Questions et réponses 4 01-11-2007 11:42 AM
IPTABLES Firewall concept d'aide Bradley Porter UNIX pour les nuls Questions et réponses 1 01-02-2007 05:39 AM
concept de point de montage Vikas Sood UNIX pour les nuls Questions et réponses 3 06-08-2006 07:31 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 08-28-2007
maverix maverix is offline
Registered User
  
 

Date d'inscription: juin 2007
Posts: 12
concept de sémaphore

Salut tous,

Je vais par le biais du concept de sémaphore et ont un doute sur la même et l'espoir d'obtenir une résolution ici.

J'ai un fichier qui a un certain nombre de dossiers.
Je veux écrire une application (en C) qui sera capable de faire concurrente de lecture / écriture sur ces dossiers.

De ce que j'ai entendu sur les sémaphores, je sais que le processus peut obtenir un verrou sur la section critique du code, lire / écrire dans des dossiers, puis relâcher le verrou si les autres processus en attente d'accès aux données peut obtenir un verrou.

Je suis confus et ont tendance à penser que "Ne serait-ce pas ce concept à un problème plus sérieux?" comme un autre processus, réellement désireux de lire / écrire un autre record sur le même fichier est d'attendre que le verrou pour obtenir libérés par le processus qui a obtenu le verrou. Si tel est le cas, pensez à une situation où nous avons un grand nombre de processus (par exemple, plus de 1000) qui souhaitent faire une lecture / écriture sur la même / les différents dossiers. Ne serait-ce pas cette notion de ralentir la demande?

S'il vous plaît laissez-moi savoir si j'ai mal compris le concept et toute la lumière sur ce ...

Observe
maverix

Dernière édition par maverix; au 08.28.2007 12:35 PM.. Motif: enlever mon nom dans la signature
  #2 (permalink)  
Old 08-28-2007
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: Feb 2004
Lieu: NM
Posts: 5,777
Vous ne dites pas ce que vous êtes sur UNIX, mais plutôt examiner le fichier des serrures de sémaphores.

commencer par "l'homme troupeau» si vous êtes sur Linux.
Sinon, l'homme fcntl, puis recherchez FD_SETLK ou FD_GETLK de commencer.

En fonction de votre OS, vous pouvez obtenir le fichier des serrures à différents niveaux; struct flock peut verrouiller une partie d'un fichier.

Les sémaphores sont principalement utilisés pour l'accès à la mémoire partagée.
  #3 (permalink)  
Old 08-28-2007
Neo's Avatar
Neo Neo is offline Forum Staff  
Administrateur
  
 

Join Date: Sep 2000
Lieu: Asie-Pacifique
Posts: 6771
Les sémaphores ne sont pas intrinsèquement liée à la mémoire, les processus, de code ou de fichiers.

Les sémaphores sont des drapeaux que les processus, y compris les processus que l'accès de fichiers ou la mémoire partagée, à savoir utiliser la garantie d'un statut, qui est souvent dénommée «atomique».

Disons que vous écrivez une application de mémoire partagée. Vous ne voulez pas lire ou écrire à mémoire partagée lorsqu'un autre processus est en train d'écrire à celle-ci (si ce processus a les permissions d'écriture). Aussi, vous ne voulez pas lire un fichier qui est en cours de modification, etc Donc, vous créez un sémaphore et que vous désignez deux états:

- Ensemble de sémaphores, signifie que le processus d'écriture avec un descripteur de fichier ouvert.

- Sémaphore clair, signifie qu'il n'ya pas de processus d'écriture avec l'accès à la mémoire partagée.

Maintenant, chaque processus qui accède à la mémoire partagée doit vérifier l'état du sémaphore quand ils (elle) ouvrir le fichier (dans ce cas, de mémoire partagée) pour l'accès.

Il existe de nombreuses applications pour les sémaphores pour les communications interprocessus, ne se limite pas à la mémoire partagée, mais de mémoire partagée certainement nécessaire atomique des drapeaux pour les communications interprocessus.

Pensez-y comme une personne sur une seule piste de la voie ferrée tenir un drapeau. Un train est sur la voie de vol à 200 km / h dans une direction et d'autres train se dirige vers le même segment de la voie de la direction opposée. Il ya un passage à une section de voie où l'on peut attendre le train, tandis que l'autre passe. Un aiguilleur, à l'époque, tiendrait en place d'un drapeau (plus tard, fait de lumières) pour donner le statut à la fois des trains.

Vous pouvez voir que les drapeaux de la confiance par l'aiguilleur est d'une importance critique, les gens pourraient meurt si le drapeau est incorrect ou le conducteur du train n'a pas le regarder.

Il en est de même dans les communications interprocessus, et les sémaphores sont garantis par l'UNIX / Linux à noyau atomique, à droite sur la mort.

Dossier serrures ne sont pas garantis par le noyau atomique d'être, comme je le rappeler, afin de les utiliser avec prudence.
  #4 (permalink)  
Old 08-29-2007
maverix maverix is offline
Registered User
  
 

Date d'inscription: juin 2007
Posts: 12
Salut Jim et Neo,

Merci pour vos réponses ...

Je suis en train d'utiliser RHEL 4.
J'ai utilisé lockf () et troupeau () les appels système et il semble fonctionner correctement.

Toutefois, je tiens à utiliser les sémaphores pour obtenir le même effet. FYI ... Je suis en train de faire ces juste de comprendre et d'apprendre les concepts. Ce n'est pas un live et de l'industrie projet.

Utilisation lockf () et troupeau (), j'ai été en mesure de verrouiller certaines sections des fichiers en fonction de la position que nous fournissons le fichier. Disons, par exemple, la demande est une simple application d'opérations bancaires et la base de données utiliser est un simple fichier qui a nombre d'enregistrements qui contient des informations de compte. Utilisation lockf (), j'ai été en mesure de bloquer un dossier par l'obtention du numéro de compte de l'utilisateur, de sorte que d'un autre processus qui souhaitent accéder à un enregistrement différent n'ont pas tous les problèmes en lecture / écriture à un autre record.

Ma question est de savoir comment obtenir le même effet en utilisant des sémaphores. Si le nombre de processus sont plus, chaque processus sera d'attente pour obtenir le sémaphore d'entrer dans la section critique du code, n'est-ce pas?

observe
maverix
  #5 (permalink)  
Old 08-29-2007
Neo's Avatar
Neo Neo is offline Forum Staff  
Administrateur
  
 

Join Date: Sep 2000
Lieu: Asie-Pacifique
Posts: 6771
Je pense que l'entrée sur wikipedia Sémaphore de programmation répond à votre question .....
  #6 (permalink)  
Old 08-29-2007
porteur porter is offline Forum Advisor  
Registered User
  
 

Join Date: Jan 2007
Messages: 2965
Citation:
Posté par maverix View Post
J'ai utilisé lockf () et troupeau () les appels système et il semble fonctionner correctement.

Toutefois, je tiens à utiliser les sémaphores pour obtenir le même effet. FYI ... Je suis en train de faire ces juste de comprendre et d'apprendre les concepts. Ce n'est pas un live et de l'industrie projet.
Une chose à prendre en compte est le genre de chose que vous garde détermine le type de semphore.

Si c'est un fichier, puis le verrouillage de fichiers est préféré, de cette façon même si le fichier est sur un NFS volume, le verrouillage et de partage encore.

Si la chose est dans un processus unique et le partage entre les threads puis en utilisant pthread_mutex / pthread_cond et al.

Si la chose est à mémoire partagée ou similaire qui est partagée par des processus qui sont sur la même machine, vous pouvez utiliser le kernel fourni semahores.

Je propose quelque chose de lecture par W. Richard Stevens sur le sujet.
  #7 (permalink)  
Old 08-30-2007
maverix maverix is offline
Registered User
  
 

Date d'inscription: juin 2007
Posts: 12
Talking

Salut tous,

Merci pour votre contribution.

Comme suggéré par porteur, je crois que je vais avoir à régler avec les mécanismes de verrouillage des fichiers que je suis en utilisant un simple fichier.

Permettez-moi d'explorer d'autres installations de la CIB (pour le moment de commencer à étudier :-)) et vous les gars avec plus de doutes ...

observe
maverix

Dernière édition par maverix; au 08.30.2007 06:15 AM.. Motif: enlevé le smiley Web
Closed Thread

Bookmarks

Tags
linux

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 12:00 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0