Vinster med aa göra saker sam9digt Hur delas CPU? Del 1 av de tre vik9gaste resursfördelningsdelarna. Mul9programming NyAja resurser effek9vt genom aa exekvera 9llräckligt med processer för aa hålla varje resurs upptagen hela 9den. Behöver en process vänta på något växlas 9ll en ny som är redo aa jobba. Time share Genom aa ora växla mellan flera processer kan man få det aa se ut som aa de exekverar sam9digt. Processormodell Processorn består av en samling register och enheter som opererar på registren. Vi förestäler oss en processor med enbart de vik9gaste registren: Instruc9on Register (IR) Program Counter (PC) Stack Pointer (SP) General Purpose Register (GPR) Accumulator register (ACC) Flags register (FLAG) Vårt produk9onsbolag igen Resurser: En operatör som kan u^öra manuell bearbetning av produktämnet, eller flyaa ämnet mellan olika maskiner Automa9sk bearbetning av produktämnet med hjälp av 3 maskiner, A, B och C Problem: Begäran om 9llverkning om olika produkter kommer in på löpande band. Alla produkter är olika, men kan 9llverkas med de tre maskinerna, och en del manuell bearbetning. U^ör 9llverkningen så snabbt och effek9vt som möjligt. Produkt 1 1. Bearbetas i maskin A i 3 minuter 2. Bearbetas manuellt i 2 minuter 3. Bearbetas i maskin C i 5 minuter 4. Bearbetas manuellt i 1 minut Produkt 2 1. Bearbetas manuellt i 10 minuter 2. Bearbetas i maskin B i 5 minuter 3. Bearbetas i maskin A i 4 minuter 4. Bearbetas manuellt i 4 minuter 1
Produkt 3 1. Bearbetas i maskin A i 2 minuter 2. Bearbetas i maskin B i 2 minuter 3. Bearbetas i maskin C i 2 minuter 4. Bearbetas i maskin D i 2 minuter Produkt 4 1. Bearbetas manuellt i 15 minuter... Vad måste operatören hålla reda på? Vad måste operatören hålla reda på? Vilken produkt håller han på med just nu? Vilka produkter har han påbörjat 9llverkning av? Hur långt har varje påbörjad produkt hunnit? Vilka produkter är redo aa berabetas vidare? Har han fler 9llverkningar av samma produkt igång sam9digt? Operatörens arbetsordning När 9llverkning av ea produktexemplar startas tas en kopia på listan över steg som behöver u^öras. VarteRer steg blir klara stryks den bearbetning som just avslutats från listan. Nästa steg påbörjas. Listan placeras vid den maskin som används. Är maskinen upptagen läggs listan på hög vid den maskinen. När en maskin signalerar aa den är klar stryks det steget från listan, och nästa bearbetning i den maskingen fortsäaer genom aa ta nästa lista från kön. Operatören har liksom varje maskin en egen kö med produktlistor som väntar på manuell bearbetning. När sista steget stryks flyaas listan 9ll en pärm med avslutat jobb, och produkten är klar. I opera9vsystemet är CPU operatör... Rita processers livscykel...... Prata kort om...... preemp9on och schemaläggning... 2
Program En samling instruk9oner lagrade på disk som 9llsammans u^ör en bestämd uppgir. exekverbar binärkod en datamängd med ini9alvärden en datamängd utan ini9alvärden Jämför: Produkt, Bok Process En instans av ea program som exekverar. Ak9vitet pågår. Allt som är ea program Resurser som skapats eller allokerats under körning, t.ex. filer, trådar, minne, exekveringsstack, processorregister Alla resurser 9llhör endast processen, de är inte 9llgängliga för andra processer. Opera9vsystemet kontrollerar när processen får exekvera, och när och hur den får 9llgång 9ll begärda resurser. Processen kontrollerar hur den styr sin exekverings9d internt. Jämför: Produkt under 9llverkning, Läsning av bok Tråd Minsta exekveringsenheten. Håller reda på var i en sekvens instruk9oner vi jobbar just nu. en samling processorregister en exekveringsstack Exekverar inom en process (användartråd) eller inom opera9vsystemet (kerneltråd). Processen eller OS styr över när tråden får exekvera. Tråden har 9llgång 9ll alla resurser inom sin domän (OS eller process). Jämför: Kryss på arbetslista, Bokmärke TCB och PCB OS måste definiera en behållare för tråddata och processdata, samt hålla reda på en lista av trådar för varje resurs.... Rita lista, trådbyte...... OH... OS exekverar och schemalägger endast kerneltrådar. Processer körs genom aa kerneltråden återvänder från ea interrupt (och växlar därmer från kernel 9ll user mode). User- trådar körs genom aa processen internt schemalägger egna trådar och växlar mellan dem. Moderna OS kan koppla user- trådar 9ll kerneltrådar för aa öka prestanda på mul9processorer.... Rita... Exempel: Visa Pintos. Skydd av resurser Vad händer om en tråd eller process: Aldrig blir klar med CPU? Använder hårdvaruresurser på fel säa? Andra trådar eller processer blir lidande. Hårdvara kan ta skada. TimeravbroA (9mer interrupt) Bredvid CPU finns en liten enhet som varje klock9ck räknar upp en intern räknare. Räknaren har ea begränsat antal bitar. När den slår över skickas en signal 9ll CPU, och räknaren startar om på 0. Signalen genererar ea 9meravbroA (asynkront). Opera9vsystemet kan ställa in hur ora räknaren skall generera avbroa. Opera9vsystemet kan ställa in vilken kod som skall hantera avbroaet. Exempel: Visa Pintos. 3
Trådbyte När OS- koden som reagera på ea 9meravbroA exekverar så har OS möjligheten aa undersöka hur länge nuvarnde tråd exekverat och eventuellt byta 9ll en annan tråd. När OS på deaa säa tvingar en process aa släppa en resurs (i deaa fall CPU) kallas det preemp9on. DeAa är funk9onaliteten som gör aa OS kan garantera alla trådar räavis exekverings9d. Det finns enkla OS där varje tråd själv måste se 9ll aa byta 9ll en annan tråd. Dessa är inte lika säkra men duger bra där programmeraren har total kontroll på hela systemet och de trådar som kör (t.ex. ea inbyggt system). ERersom avbroaet är asynkront kan det uppstå precis var som helst i koden, och överraskande fel kan uppstå om en tråd arbetar på samma data som en annan. Mer om deaa i andra halvan av kursen. Dual- mode exekvering CPU ges två exekveringslägen: kernel mode full access 9ll alla instruk9oner och resurser user mode endast access 9ll resurser explicit 9lldelade Opera9vsystemet exekverar kerneltrådar och har all9d 9llgång 9ll kernel mode Processer exekverar i user mode och måste be opera9vsystemet u^öra resursåtkomst (inte be om lov, utan be aa få begäran u^örd av OS coh endast få 9llbaka resultatet) Systemanrop När OS u^ör en tjänst på uppdrag av en process och ger resultatet 9ll processen Processen kör hela 9den i user mode och har inte möjlighet u^öra tjänsten själv då tjänsten i fråga kräver 9llgång 9ll kernel mode Opera9vsystemet kör hela 9den i kernel mode och kontrollerar noga aa tjänsten går aa u^öra och aa eventuella indata från processen är korrekta GränssniA 9ll OS Systemanrop utgör gränssniaet 9ll OS Abstraherar skillnader i hårdvarukonfigura9on, opera9vsystemet tar hand om eventuella skillnader och presenterar all9d ea enhetligt gränssnia 9ll applika9onsprogrammeraren Program kan enklare göras portabla Opera9vsystemet 9llhandahåller ea bibliotek som presenterar systemanropen som vanliga funk9onsanrop, själva systemanropet döljs inu9 dessa funk9oner. Exempel: Visa Pintos Vanliga systemanrop Systemanrop steg 1 (user mode) Filhantering: skapa filer öppna filer läsa filer skriva filer stänga filer ta bort filer Minneshantering: allokera minne avallokera minne dela minne med andra processer Processhantering: starta processer invänta processers avslut stoppa processer visa alla exekverande processer Trådhantering: skapa trådar starta trådra pausa tråd som kör stoppa trådar synkronisera trådar Processen anropar önskad funk9on i biblioteket över systemanrop och anger räa argument Biblioteksfunk9onen placerar argumenten på processens (nu exekverande tråds) exekveringsstack Biblioteksfunk9onen placerar en kod för sia systemanrop på samma stack Biblioteksfunk9onen exekverar assemblerinstruk9onen som skapar ea mjukvaruinterrupt (synkront). 4
Systemanrop steg 2 (avbroa) CPU reagerar med aa i denna instruk9on: Växla 9ll kernel mode Spara SP temporärt Återställa SP 9ll den exekveringsstack OS använder i kernel mode (en för varje kernel- tråd) Spara alla register på exekveringsstacken så som de såg ut just innan mjukvaruinteruptet exekverades (inklusive temporärts sparade SP) ErsäAa IP och PC med adress och instruk9on på den adress opera9vsytemed specificerat för just deaa interrupt Systemanrop steg 3 (kernel mode) Nu exekvera OS- kod i kernel mode. OS kontrollerar de indata och ev. plats för utdata som placerades på processens stack. OS u^ör begäran på ea kontrollerat och effek9vt säa. OS placerar resultatet på förutbestämd plats (i register eller minne angivet av processen) OS exekverar instruk9onen för aa återvända från interrupt. Systemanrop steg 4 (återhopp) CPU reagrear med aa i en instruk9on: Återställa alla sparade register, inklusive SP, IR och PC (några kan vara manipulerade av OS) Byta 9ll user mode Nu är vi återigen i user mode Biblioteksfunk9onen fortsäaer och returnerar resultatet 9ll anropande process. Processens kod har aldrig har direkt åtkomst 9ll av OS kontrollerade resurser, endast OS kod har har det. 5