Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Shared memory problem (teorija, info)

[es] :: C/C++ programiranje :: Shared memory problem (teorija, info)

[ Pregleda: 2597 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Shared memory problem (teorija, info)12.08.2006. u 07:07 - pre 215 meseci
Imam ovako dvije aplikacije:

Prva koja alocira neku memoriju na heapu, ispisuje adresu alociranog prostora i onda ceka.
Code:
int main( void )
{
    int *ptr = new int[3];
    ptr[0] = 13;
    ptr[1] = 14;
    ptr[2] = 15;
    
    cout << "Data Adress = " << ptr << endl;

    // na ovoj pauzi se ukljuci drugi program koji izmjeni memoriju pod 'ptr'
    system( "pause" );

    cout << "Current state:" << endl;
    cout << setw( 4 ) << ptr[0]  << setw( 4 ) << ptr[1] <<  setw( 4 ) << ptr[2] << endl;
    
    system( "pause" );
     
    delete[] ptr;

   return 0;
}


Druga koja pokusava preko adrese memorije iz gornje izmjeniti sadrzaj. Pokrene se dok gornja ceka.
Code:
int main( void )
{
    int add;
    cout << "Give me an adress: ";
    cin >> add;
    
    int* ptr;
    ptr = add;
    
    ptr[0] = 113;
    ptr[1] = 114;
    ptr[2] = 115;

   system( "pause" );
   return 0;
}


- Prva greska: ne mogu explicitno dodijeliti adresu pokazivacu.
- Druga sumnja: Nesto mi govori da ovakav pristup nece raditi iz cisto sigurnosnih zastita koje provode operativni sistemi.

Koliko znam OS (bar win) dodijeli aplikacijama memorijski prozor van kojega ne mogu ici (opet sigurnost). U njemu onda adrese mogu biti relativne na pocetak tog prozora, a ne u ondnosu na pocetak globane memorije....

Pitanje se namece: Kako cu dijeliti memoriju medju procesima?

Hvala.
 
Odgovor na temu

kiklop74
Darko Miletić
Buenos Aires

Član broj: 78422
Poruke: 569
*.fibertel.com.ar.

Sajt: ar.linkedin.com/pub/darko..


+13 Profil

icon Re: Shared memory problem (teorija, info)12.08.2006. u 18:18 - pre 215 meseci
Kao sto si i sam rekao takav nacin deljenja memorije nije moguc.

Zajednicka memorija za vise procesa (shared memory) postoji ali je veoma vezana za samu platformu tj. operativni sistem.

Generalno taj problem se resava sa memorijski mapiranim fajlovima.

Za one koji rade na *NIX platformama jedan od linkova je ovaj:

http://fscked.org/writings/SHM/shm.html

Za windows evo takodje nekih linkova:

http://msdn.microsoft.com/libr...us/dnanchor/html/memoryank.asp

http://msdn2.microsoft.com/en-us/library/h90dkhs0.aspx

http://www.codeproject.com/threads/SharedMemory_IPC_Threads.asp

U sustini sistem je sledeci - kreira se memorijski mapirani fajl sa paarmetrima za deljenje. Svaki program pre nego sto krene nesto da radi sa tim delom memorije treba da proveri da li je mutex slobodan, tj. da li neko drugi nesto radi sa tim delom memorije. Ako jeste program kreira svoju instancu mutexa i tako efektivno slignalizira ostalim procesima da je memorija nedostupna za izmene. Kada zavrsi sa radom oslobodi se mutex.


Tko leti vrijedi
 
Odgovor na temu

NrmMyth
Ivan Maček
Split

Član broj: 63456
Poruke: 849
*.cmu.carnet.hr.

Sajt: www.dump.hr


Profil

icon Re: Shared memory problem (teorija, info)12.08.2006. u 21:16 - pre 215 meseci
Informirati cu se.
Jedno pitanje ovako unaprijed: Dali se kod tih mapiranih fajlova radi bas o fajlovima ili RAM memoriji. Interesira me zbog performansa.
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.verat.net.



+9 Profil

icon Re: Shared memory problem (teorija, info)12.08.2006. u 22:26 - pre 215 meseci
Ono gde zapravo pišeš jeste file descriptor, ali je ta deljena memorija u RAM-u...
 
Odgovor na temu

JagodaV

Član broj: 86247
Poruke: 26
*.cmu.carnet.hr.

Jabber: jagoda@elitesecurity.org


Profil

icon Re: Shared memory problem (teorija, info)13.08.2006. u 06:32 - pre 215 meseci
Da, deljena memorija se nalazi u RAM-u. Na UNIX sistemima se jos koristi i IPC za koordinaciju medju procesima.
FBzP

 
Odgovor na temu

[es] :: C/C++ programiranje :: Shared memory problem (teorija, info)

[ Pregleda: 2597 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.