Avatar billede dark. Nybegynder
14. marts 2004 - 11:09 Der er 17 kommentarer og
1 løsning

Eksekvering af kommando samtidig

(Er ikke sikker på at det er den rigtige kategori.)
Jeg har lavet et systemkald som skriver noget data til memory vha copy_from_user() operationen. Men hvad sker der egentlig hvis denne operation bliver udført 2 gange på nøjagtig samme tid, fx hvis den udføres fra to forskellige computere på en server?
bliver processerne sat i kø, eller hvordan foregår det?
Avatar billede dark. Nybegynder
14. marts 2004 - 11:10 #1
Det er på en linux platform
Avatar billede arne_v Ekspert
14. marts 2004 - 11:37 #2
Hvis hver bruger har sin egen kopi, så er det uafhængigt.

Hvis det er en delt kopi og der ikke laves synkronisering så er
resultatet unpredictable.

Hvsi det er en delt kopi og der laves korrekt synkronisering,
så venter den ene på den anden.
Avatar billede dark. Nybegynder
14. marts 2004 - 12:57 #3
Du har sikkert ret, men jeg er ikke helt med på hvad du mener med, at hver bruger kan have sin egen kopi (kopi af hvad?)
de to copy_from_user bliver kørt på nøjagtig samme tid om på samme "memory".
ang korrekt synkronisering: Er det mig som udvikler af systemkaldet som skal sørge for korrekt synkronisering, eller er det noget der er indbygget i operativsystemet?
Avatar billede arne_v Ekspert
14. marts 2004 - 13:06 #4
Jeg mener om "til" er det samme memory eller ej.

Kørt på nøjagtig samme tid ? D.v.s. at det er et 2 CPU system du kører på !?
Avatar billede segmose Nybegynder
14. marts 2004 - 13:21 #5
Har du en man-page på den copy_from_user kald?
Avatar billede dark. Nybegynder
14. marts 2004 - 13:24 #6
ja det er til samme memory.
Problemstillingen: Der er 2 pc'er(pc1 og pc2) som udfører
copy_from_user(to_adr,from_adr,n) hvor to_adr er en adresse på en helt 3. pc og from_adr er en adresse på henholdsvis pc1 og pc2. 2 brugere udfører så på samme tid(fra hver sin computer) copy_from_user(to_adr,from_adr,n)
Hvad sker der så?
Har styresystemet en planlægger som tager sig af problemet, eller hvordan foregår det?
Avatar billede dark. Nybegynder
14. marts 2004 - 13:26 #7
nej, kan desværre ikke finde en man page til copy_from_user(to_adr, from_adr, n).
Den kopierer n bytes fra user adressen "to_adr" til kernel adressen to_adr
Avatar billede arne_v Ekspert
14. marts 2004 - 13:27 #8
"hvor to_adr er en adresse på en helt 3. pc" ??

Nu kender jeg ikke copy_from_user, men kan du forklare lidt om det ?
Avatar billede arne_v Ekspert
14. marts 2004 - 13:27 #9
Normalt kan man kun kopiere til memory på samme PC.
Avatar billede dark. Nybegynder
14. marts 2004 - 13:27 #10
om igen :-)
Den kopierer n bytes fra user adressen "from_adr" til kernel adressen "to_adr"
Avatar billede dark. Nybegynder
14. marts 2004 - 13:38 #11
http://www.gelato.unsw.edu.au/~dsw/public-files/kernel-docs/kernel-api/r4081.html

Det kan godt være du har ret i, at man ikke kan kopiere til memory fra en anden PC, det var bare en problemstilling jeg kom til at tænke på, og ikke mente jeg havde taget højde for i mit systemkald. 
Men hvad sker der hvis 2 processer(på samme pc) nøjagtig samtidig udfører mit systemkald ?
Avatar billede dark. Nybegynder
14. marts 2004 - 13:39 #12
dvs at der på nøjagtig samme tid forsøges, af to forskellige processer(ikke processor :D), at skrives til samme memory adresse.
Avatar billede arne_v Ekspert
14. marts 2004 - 13:42 #13
Så er vi tilbage hvor jeg startede.

ingen synkronisering => kaos

system call eller din kode synkroniserer => virker
Avatar billede arne_v Ekspert
14. marts 2004 - 13:43 #14
Og nej - jeg ved ikke om copy_from_user synkroniserer
Avatar billede dark. Nybegynder
14. marts 2004 - 13:58 #15
tænkte godt du havde ret :) Men vil det sige at styresystemet ikke går ind og sætter processerne i kø ? syntes bare jeg havde habde læst det et sted, men jeg husker nok forkert
Avatar billede arne_v Ekspert
14. marts 2004 - 14:06 #16
Der er ikke noget magi som sikrer mod samtidigheds problemer.

Det er muligt at copy_from_user synkroniserer, men der skal have
fat i noget bedre dokumentation på funktionen.
Avatar billede dark. Nybegynder
14. marts 2004 - 14:11 #17
ok. Tak for hjælpen (skriv lige et svar)
Avatar billede arne_v Ekspert
14. marts 2004 - 14:13 #18
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester