The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > UNIX för avancerade & Expertanvändare
.
google unix.com



UNIX för avancerade & Expertanvändare Expert-to-experten. Läs avancerade UNIX UNIX-kommandon, Linux operativsystem, systemadministration, programmering, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Pro * C-programmet för SQL-frågor använder threading begreppet user71408 UNIX for Dummies Frågor & Svar 0 05-21-2008 03:11
LUN begreppet Prem HP-UX 1 02-22-2007 05:02
Har svårt med UNIX koncept. Please help! Alon UNIX for Dummies Frågor & Svar 4 01-11-2007 11:42
IPTABLES Firewall begreppet hjälpa Bradley Porter UNIX for Dummies Frågor & Svar 1 01-02-2007 05:39
Begreppet monteringspunkten Vikas Sood UNIX for Dummies Frågor & Svar 3 06-08-2006 07:31

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 Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 08-28-2007
maverix maverix is offline
Registered User
  
 

Join Date: juni 2007
Inlägg: 12
semaforen begreppet

Hej Alla,

Jag går igenom semaforen koncept och har en tvivel om samma och hoppas att få en lösning här.

Jag har en fil som har ett antal poster.
Jag vill skriva en ansökan (i C) som kommer att kunna göra samtidiga läs / skriv på dessa poster.

Av vad jag har förstått om semaforer, jag vet att en process kan få ett lås på den kritiska delen av koden, läs / skriv till posterna, sedan släppa låset så de andra processer som väntar på att få tillgång till data kan få ett lås.

Jag är förvirrad och tenderar att tro att "Skulle inte det här konceptet leda till ett mer allvarligt problem?" som en annan process, som faktiskt vill läsa / skriva en annan post på samma fil har att vänta på låset för att få frisläppas av den process som har fått låset. Om så är fallet, tänk på en situation där vi har ett stort antal processer (t.ex. fler än 1000) vill göra ett läs / skriv på samma / olika posterna. Skulle inte detta begrepp bromsa ansökan?

Hör av dig om jag har missförstått begreppet och kasta lite ljus på detta ...

Hälsningar
maverix

Senast redigerad av maverix; 08-28-2007 vid 12:35.. Anledning: ta bort mitt namn i signaturen
  #2 (permalänk)  
Old 08-28-2007
jim McNamara jim mcnamara is offline Forum Staff  
...@...
  
 

Join Date: februari 2004
Ort: NM
Inlägg: 5.808
Du behöver inte säga vad UNIX du är på, men anser fil lås istället för semaforer.

börja med "mannen flock om du på Linux.
Annars kan man fcntl och sedan leta efter FD_SETLK eller FD_GETLK att börja.

Beroende på ditt operativsystem kan du hämta filen lås på olika nivåer, strukt flock kan ge låsa en del av en fil.

Semaforer används mest för att få tillgång till delat minne.
  #3 (permalänk)  
Old 08-28-2007
Neo's Avatar
Neo Neo is offline Forum Staff  
Administratör
  
 

Join Date: Sep 2000
Ort: Asia Pacific
Inlägg: 6.832
Semaforer inte är intimt kopplat till ett minne, processer, kod eller filer.

Semaforer är flaggor att processer, inklusive metoder för att komma åt filer eller delat minne, använder för att känna en garanterad status, som ofta kallas "atom".

Låt oss säga att du skriver ett delat minne ansökan. Du vill inte läsa eller skriva till delade minnet när en annan är att skriva på den (om den processen har skrivbehörighet). Även om du inte vill läsa en fil som har ändrats, etc. Så, du skapar en semaforen och du utse två stater:

- Semaforen set, innebär att en process med skrivbehörighet har en fil deskriptor öppen.

- Semaforen klart, innebär att det inte med skrivbehörighet tillgång till det delade minnet.

Nu är varje process som har åtkomst till delade minnet måste kontrollera status för semaforen när de (den) öppna filen (i detta fall delat minne) för tillträde.

Det finns många ansökningar om semaforer för interprocesskommunikation kommunikation, inte begränsat till delat minne, men delat minne verkligen krävs atomnummer flaggor för interprocesskommunikation kommunikation.

Tänk på detta som en person på ett enda spår av tåg spår håller en flagga. Ett tåg är på väg ner på spåret vid 200 km / tim i en riktning och andra tåget är på väg mot samma spår segment från motsatt riktning. Det finns en switch på en del av spåret där ett tåg kan vänta medan de andra går. En switchman, i de gamla dagar, skulle hålla upp en flagga (senare gjort med ljus) för att ge status åt både tåg.

Du kan se att lita på flaggor med switchman är mycket viktigt, folk kunde dör om flaggan är felaktig eller konduktören på tåget inte titta på det.

Detsamma gäller i interprocesskommunikation kommunikation och semaforer garanteras av UNIX / Linux-kärnan som skall atomnummer, döda rättighet.

Arkiv lås inte är garanterade av kärnan vara atomär, som jag minns, så använd dem med försiktighet.
  #4 (permalänk)  
Old 08-29-2007
maverix maverix is offline
Registered User
  
 

Join Date: juni 2007
Inlägg: 12
Hej Jim och Neo,

Tack för ditt svar ...

Jag använder RHEL 4.
Jag har använt lockf () och flock () för samtal och det verkar fungera bra.

Men jag vill använda semaforer för att uppnå samma effekt. För kännedom ... jag gör dessa bara för att förstå och lära sig begrepp. Dess inte en levande och industri projektet.

Använda lockf () och flock (), jag kunde låsa vissa delar av filer beroende på filen position vi tillhandahåller. Säg till exempel att ansökan är ett enkelt bank tillämpningen och databasen jag använder är en enkel fil som har många register som innehåller kontoinformation. Använda lockf () har jag kunnat låsa en viss post genom att erhålla kontonummer från användaren, så att en annan process som vill få en annan post inte hade några problem i att läsa / skriva till en annan post.

Min fråga var hur man kan få samma effekt med hjälp av semaforer. Om antalet samtidiga processer mer, varje process kommer att vara väntar på att få de semaforen ange den kritiska delen av koden, inte är det så?

hälsningar
maverix
  #5 (permalänk)  
Old 08-29-2007
Neo's Avatar
Neo Neo is offline Forum Staff  
Administratör
  
 

Join Date: Sep 2000
Ort: Asia Pacific
Inlägg: 6.832
Jag tycker att wikipedia inträde på Semaforen programmering svar på din fråga .....
  #6 (permalänk)  
Old 08-29-2007
porter porter is offline Forum Advisor  
Registered User
  
 

Join Date: Jan 2007
Inlägg: 2965
Citat:
Ursprungligen postat av maverix View Post
Jag har använt lockf () och flock () för samtal och det verkar fungera bra.

Men jag vill använda semaforer för att uppnå samma effekt. För kännedom ... jag gör dessa bara för att förstå och lära sig begrepp. Dess inte en levande och industri projektet.
En sak att vara medveten om är den typ av sak du bevakning avgör vilken typ av semphore.

Om det är en fil, sedan fillåsning är att föredra, detta sätt även om filen finns på en NFS volym, låsning och dela fortfarande arbete.

Om den är i en enda process och utbyte mellan trådar sedan använder pthread_mutex / pthread_cond et al.

Om det är delat minne eller liknande som delas av processer som är på samma maskin så kan du använda kärnan förutsättning semahores.

Jag föreslår att läsa något av W. Richard Stevens i frågan.
  #7 (permalänk)  
Old 08-30-2007
maverix maverix is offline
Registered User
  
 

Join Date: juni 2007
Inlägg: 12
Talking

Hej Alla,

Tack för din input.

Som framgår av porter, jag tror jag har att lösa med fillåsning mekanismer som jag använder en enkel fil.

Låt mig undersöka andra IPC anläggningar (ännu att börja studera :-)) och kommer att komma tillbaka till er med mer tveksam ...

hälsningar
maverix

Senast redigerad av maverix; 08-30-2007 vid 06:15.. Orsak: bort smiley URL
Closed Thread

Komihåglista

Taggar
linux

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 06:18.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0