14. marts 2004 - 11:09Der 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?
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?
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?
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
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 ?
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
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.