Introduktion til Operativsystemer

Relaterede dokumenter
Introduktion til Computerarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Processer og tråde. dopsys 1

Maskinarkitektur. Lars Kristensen Christian Storm dmasark 1

Computere og Netværk (dcomnet)

Scheduling. Niels Olof Bouvin. Institut for Datalogi Aarhus Universitet

Operativsystemer - dopsys

Mikroarkitektur. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Computerarkitektur. - en introduktion til computerarkitektur med LINDA

uprocessorens hardware

Principper for Samtidighed og Styresystemer

Computerens Anatomi. Af Martin Arnetoft

Niveauer af abstrakte maskiner

Eksamen dcomnet Q2/2010. Navn

\ \ Computerens Anatomi / /

Speciale. Evaluering af Java til udvikling af indlejrede realtidssystemer ved brug af en eksisterende Java Optimized Processor (JOP)

PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU

3. Computerens opbygning.

CPUer og maskinkode DM534. Rolf Fagerberg

Det Digitale Niveau. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Sider og segmenter. dopsys 1

Processer og koordinering

Kursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing

Threads i Java. Denne artikel giver en introduktion til threads i Java. Den beskriver hvad tråde er og forklarer hvordan de bruges i Java

Interconnect. Front end interface

Input/Output: Brugergrænseflader. dopsys

ECE 551: Digital System * Design & Synthesis Lecture Set 5

Indhold. Maskinstruktur Kapitel 1. Assemblersprog Indledning Hop-instruktioner Input og output...

COMPUTER ANATOMI klasse 23. FEBRUAR 2015 HTX - ROSKILDE

Operativsystemer - dopsys. Erik Ernst

Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1

A Profile for Safety Critical Java

Sider og segmenter. dopsys 1

Datatekniker med programmering som speciale

Processer. DS kursusgang nr. 2: Procestræer. ps: Vis processer

Netværksalgoritmer 1

Virtuel Hukommelse. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index

Grundlæggende Algoritmer og Datastrukturer. Analyseværktøjer [CLRS, 1-3.1]

Lageradministration. dopsys

Styresystemer og tjenester

Algoritmer og Datastrukturer 1

Mikroprogrammering. Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 2

Design Systemkald. User-mode Linux, The Linux kernel/

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal

Parallelle algoritmer

Processer og koordinering. dopsys 1

Lær Python dag 1 - modul 1

Pentium IA-32 Maskinarkitekturen

Systemkald DM Obligatoriske opgave. Antal sider: 7 inkl. 2 bilag Afleveret: d. 18/ Afleveret af: Jacob Christiansen,

Arduino Programmering

VMware og dopsys-linux

Introduktion til C programmering

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Sortering fra A-Z. Henrik Dorf Chefkonsulent SAS Institute

Abstrakte datatyper C#-version

02101 Indledende Programmering Introduktion til Eclipse

Computer Literacy. En stationær bordmodel. En Bærbar Notebook, Labtop, Slæbbar, Blærebar mm.

QGIS Brugermde 9. marts Diaspora*: twitter.com/soerenbc soerenbredlundcaspersen.

Hyper-V på Windows 8 64 Bit. Indhold. Vejledning i brug af Hyper-V på en Windows 8 maskine

Bits DM534. Rolf Fagerberg, 2012

Lærebog. Datalogi 1F Forår Hvad sker hvornår? Kursusbøger. Planen for idag. Hvad er et operativsystem

INGENIØRHØJSKOLEN I ÅRHUS Elektro- og IKT-afdelingen. I3PRG3 + I3DTM3 + I3ISY1-3. semester

Opsætning af Backup. Hvis programmet registreres korrekt vises nedenstående skærmbillede. Genstart herefter programmet.

Algorithms & Architectures II

Opsætning af Backup. Dette er en guide til opsætning af backup med Octopus File Synchronizer.

Programmering i C Intro og grundlæggende C 5. marts 2007

DATALOGI 1E. Skriftlig eksamen mandag den 23. juni 2003

Morten Juul Nielsen Produktchef Microsoft Danmark

Koordinering. dopsys

Eksamen dcomnet 2012Q4. Årskortsnummer Navn

Systemkald i Unix/Linux

1 Operativsystemer oversigt

VPN VEJLEDNING TIL MAC

Programming Language Design and Analysis motivated by Hardware Evolution

Engineering of Chemical Register Machines

DM502. Peter Schneider-Kamp

Sikker kode? Gennemgang af mest almindelige hacker angreb

Microcontroller, Arduino

Komparativ analyse af IoT-boards

Programmering i C. Lektion september 2009

Uniprocessor Scheduling

WINDCHILL THE NEXT STEPS

computerens_udvikling

XProtect-klienter Tilgå din overvågning

Operativsystemer - dopsys. Erik Ernst

Softwareudvikling: Miljøer

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Lidt orientering om, hvad en computer består af

Real-time programming safety in Java and Ada

Velkommen på kursus hos Microworld

University of Southern Denmark Syddansk Universitet. DM503 Forelæsning 11

Planen for idag. Datalogi 1F Forår Hvad er en proces? Livscyklus for en proces. Hvad består en proces af?

Mobilitet og anvendelse af smartphones

Internt interrupt - Arduino

Netværk & elektronik

Lageret i maskinarkitekturen. Beregningsenhed, lagre (registre, RAM, disk), ydre enheder

Lærevejledning. - en introduktion til maskinarkitektur. faraz@butt.dk Faraz Butt mads@danquah.dk Mads Danquah doktor@dyregod.dk Ulf Holm Nielsen

Lageradministration Intel Pentium og Unix/Linux

Transkript:

Introduktion til Operativsystemer 1 Niels Olof Bouvin Institut for Datalogi Aarhus Universitet

Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 2

Formål Introduktion af de basale egenskaber ved moderne operativsystemer, såsom - Processer, tråde og deres planmæssige udførsel - Hukommelseshåndtering og virtuel hukommelse 3

Udfordring Datalogerne havde dcomark sidste år IT erne får dcomark i næste kvarter Så hvordan fungerer computere? 4

Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 5

Hvad er en computer? En maskine, der udfører beregninger angivet som instruktioner i et program 6

Hvad er en computer? Maskine - opbygget af alt fra mekanik, relæer, radiorør, og (i nutiden) transistorer. Fremtidens maskiner kan være optiske, carbonnanofibre, DNA eller superpositioner af afkølede atomer i kvantecomputere Instruktioner - simple operationer: Læg to tal sammen, sammenlign to værdier, flyt en værdi fra ét sted til et andet, Program - en sekvens af instruktioner. Skabt direkte af et menneske, eller (typisk) indirekte v.hj.a. en oversætter eller fortolker 7

Computergenerationer 0. generation: - Mekaniske computere (1642-1945) 1. generation: - Radiorør (1945-55) 2. generation: - Transistorer (1955-65) 3. generation: - Integrerede kredsløb (IC) (1965-80) 4. generation: - Højt integrerede kredsløb (VLSI) (1980- ) 5. generation: - Lav energi, pervasive computing, IT i alting (nu og altid) 8

Moore s lov (bedre: kurve) CPUer og hukommelse opbygges af transistorer - Grundet bedre produktionsformer fordobles transistortætheden ca. hver 18. måned Det giver dobbel kapacitet, og ~40% højere hastighed - da transistorerne kommer tættere på hinanden 9

Multilevel maskiner Vi ønsker at programmere computere, men ikke på computerens præmisser - dvs. den rå hardware bestående af gates og transistorer addresseret med nuller og ettaller (eller kabler og kontakter) Løsning: Skab en virtuel maskine, der er enklere, og som kan køre på maskinen - den skal skrives én gang per maskine - En virtuel maskine definerer instruktioner og datatyper, og er blot endnu en computer, som vi kan skrive virtuelle maskiner til, som var dén en fysisk computer - som bliver mere og mere lettilgængelig - samt langsommere og langsommere, som vi putter lag på lag af abstraktioner 10

Virtuelle/Abstrakte maskiner Level n Virtual machine Mn, with machine language Ln Programs in Ln are either interpreted by an interpreter running on a lower machine, or are translated to the machine language of a lower machine Level 3 Level 2 Level 1 Level 0 Virtual machine M3, with machine language L3 Virtual machine M2, with machine language L2 Virtual machine M1, with machine language L1 Actual machine M0, with machine language L0 Programs in L2 are either interpreted by interpreters running on M1 or M0, or are translated to L0. Programs in L1 are either interpreted by interpreters running on M0, or are translated to L0. Programs in L0 can be executed directly by the electronic circuits 11

Multilevel maskiner Hardware og software er logisk ækvivalente 12

Moore s lov og multilevel maskiner Med den øgede hastighed og kapacitet har man igennem computerens historie gradvist kunnet skabe højere og højere lag af abstraktioner I udvikling - brug af højniveau programmeringssprog I anvendelse - rige grafiske grænseflade med mange forskellige modaliteter og interaktionsformer Man har også flyttet funktionalitet fra ét niveau til et andet - ofte fra hardware til software og tilbage igen 13

Det digitale niveau Begreber - transistorer, porte (gates), kombinatoriske kredsløb, lagerkredse, høj og lav strøm, bit, digitale værdier, Fordele - hurtigt Ulemper - meget tidskrævende at udvikle Level 5 Level 4 Level 3 Level 2 Level 1 Level 0 Problem-oriented language level Translation (compiler) Assembly language level Translation (assembler) Operating system machine level Partial interpretation (operating system) Instruction set architecture level Interpretation (microprogram) or direct execution Micro-architecture level Hardware Digital logic level 14

Typisk opbygning af en computer Memory von Neumann maskinarkitektur (1946) Central Processing Unit (CPU) Control Unit Arithmetic Logic Unit Accumulator Input Output Control Unit Afvikler programmer gemt i lageret Arithmetic Logic Unit (ALU) Registers Main Memory Input/Output devices Disk Printer Bus 15

von Neumann maskinen Begreber - ALU, registre, Program Counter, instruktion sæt, program (i form af maskinkode) og data gemt i hukommelse, ydre enheder tilgået over bus - Programmer er data, der hentes fra lageret og fortolkes af CPUen - Der er, basalt set, ikke sket noget med computeres arkitektur siden - udover at de er blevet lidt hurtigere, en anelse billigere og har opnået en vis popularitet/udbredelse A A + B A B ALU A + B B Registers ALU Input registers ALU input bus ALU output register 16

Instruktionssætniveauet Begreber - lager, lagerceller, registre, ordrer, ordreformat, Programmer i symbolsk maskinsprog oversættes til absolut maskinkode - Program lagres som en sekvens af bitmønstre (absolut maskinkode) - Den absolutte maskinkode fortolkes enten af et mikroprogram eller udføres direkte på processorens hardware 17 Level 5 Level 4 Level 3 Level 2 Level 1 Level 0 Problem-oriented language level Translation (compiler) Assembly language level Translation (assembler) Operating system machine level Partial interpretation (operating system) Instruction set architecture level Interpretation (microprogram) or direct execution Micro-architecture level Hardware Digital logic level

Symbolsk maskinsprog Begreber - lager, lagerceller, registre, - ordrer, systemkald, Fordele - lettere end absolut maskinkode - tilbyder (i princippet) den højeste ydelse for udvikleren Ulemper - meget lavt niveau i forhold til alm. programmeringssprog - bundet til den enkelte CPU familie Level 5 Level 4 Level 3 Level 2 Level 1 Level 0 Problem-oriented language level Translation (compiler) Assembly language level Translation (assembler) Operating system machine level Partial interpretation (operating system) Instruction set architecture level Interpretation (microprogram) or direct execution Micro-architecture level Hardware Digital logic level 18

Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 19

Operativsystemets rolle En computer består af en stor mængde forskellige komponenter og ressourcer Et operativsystems opgave er at styre adgangen til disse resourcer, således - flere programmer kan tilgå og dele ressourcer (tilsyneladende) simultant på kontrolleret vis - programmer kan samarbejde lokalt og over netværk 20

Operativsystemets rolle Application Application networking Application Application Operating System Operating System File (a) (b) Operativsystemer er ikke nødvendige - f.eks. kan simple indlejrede systemer klare sig uden Men de gør computere langt mere brugbare for både udviklere og brugere 21

Typiske OS begreber Tråde Processer Hukommelse Filer Input/output (skærme, mus, netværk, ) Alt styret med rettigheder, så programmer kan sameksistere og samarbejde sikkert 22

Operativsystemer igennem tiden Store systemer (mainframes og minier ) - OS/360 z/os (IBM), VMS (DEC VAX), Workstations og servere - Unix (AT&T), BSD (Berkeley), GNU/ Linux (Linus Torvalds, Richard Stallman, mv), OS X (NeXT/Apple) Personlige computere - CP/M (Digital Research), MS-DOS, Windows (Microsoft), Mac OS (Apple) 23 Håndholdte computere - Symbian (Nokia) - PalmOS (Palm) - Android (Google) - ios (Apple) - Windows Mobile (Microsoft) - Diverse Linux varianter Indlejrede systemer - TinyOS - RTLinux - Windows CE

Operativsystemet Et softwarelag ( kernel ), der - forsyner udvikleren med et abstraktionslag ovenpå hardware - tillader kontrolleret interaktion mellem programmer lokalt eller over netværk Brugergrænseflade operativsystem - blot én komponent ovenpå operativsystemet, der gør operativsystemets services tilgængelige til brugeren 24

Middleware Et softwarelag, der - forsyner udvikleren med services, der tillader kontrolleret interaktion mellem programmer lokalt eller over netværk Disse services bygger på operativsystemet - ikke direkte på hardwaren Eksempler: DNS, SAMBA, SQL database 25

Oversigt Formål Hvad er en computer? Operativsystemets rolle Multitasking 26

Illusionen af samtidighed Den primære rolle for et operativsystem er at stille computerens ressourcer til rådighed på en måde, så mange ting tilsyneladende kan ske samtidigt Moderne computere har typisk 2-4 CPUer, så hvordan kan mere end fire ting ske simultant? 27

Programmer, tråde og processer Et program består af udførbar kode ( instruktioner ) En tråd er en række af instruktioner fra et program, der udføres på en CPU En proces er den omgivelse, hvori tråden udføres - mindst én tråd per proces, men ofte flere 28

Hvorfor multitrådet udførsel? På serveren - muliggør at serveren kan besvare mange simultane henvendelser fra f.eks. webbrowsere På klienten - muliggør en responsiv grænseflade, samtidigt med at maskinen arbejder dels med brugerprogrammer, dels med systemopgaver 29

Fordele ved multitrådet udførsel Bedre udnyttelse af maskinens ressourcer - flere CPUer kan anvendes parallelt - programmer kan have forskellige behov, og kan uden (særlig) konflikt køre samtidigt Bedre svartider og brugeroplevelser - en langsommelig opgave holder ikke serveren tilbage - grænsefladen og andre programmer fortsætter med at virke, selvom et program arbejder 30

Enkeltrådede programmer Thread Thread A Thread B Programmernes instruktioner udføres sekventielt i én tråd Hver kørsel af programmet er en separat tråd 31

Enkeltrådet program (i C) #include <unistd.h> #include <stdio.h> int main(int argc, char *argv[]){ sleep(3); printf("has been sleeping for 3 seconds.\n"); sleep(5); printf("has been sleeping for 5 seconds.\n"); return 0; } vent apple time./simple2tasks Has been sleeping for 3 seconds. Has been sleeping for 5 seconds. apple cc simple2tasks.c -o simple2tasks apple./simple2tasks Has been sleeping for 3 seconds. Has been sleeping for 5 seconds. apple 32 real user sys apple 0m8.011s 0m0.001s 0m0.002s

Flertrådede programmer Spawn Thread A Thread A Thread B Thread B En tråd kan starte andre tråde, og derved gøre flere ting samtidig, eller måske vente i én tråd, og arbejde videre i andre tråde Enkeltrådede programmer kan startes og køre parallelt uden konflikt 33

Flertrådet program (i C) #include <pthread.h> #include <unistd.h> #include <stdio.h> static void *child(void *ignored){ sleep(3); printf("child is done sleeping 3 seconds.\n"); return NULL; } int main(int argc, char *argv[]){ pthread_t child_thread; int code; } vent code = pthread_create(&child_thread, NULL, child, NULL); if(code){ fprintf(stderr, "pthread_create failed with code %d\n", code); } sleep(5); printf("parent is done sleeping 5 seconds.\n"); return 0; skab & start tråd apple time./simple2threads Child is done sleeping 3 seconds. Parent is done sleeping 5 seconds. apple cc simple2threads.c -o simple2threads apple./simple2threads Child is done sleeping 3 seconds. Parent is done sleeping 5 seconds. apple 34 real user sys apple 0m5.004s 0m0.001s 0m0.002s

Flertrådet program (i Java) public class Simple2Threads { public static void main(string args[]){ Thread childthread = new Thread(new Runnable(){ public void run(){ sleep(3000); System.out.println("Child is done sleeping 3 seconds."); } }); childthread.start(); sleep(5000); System.out.println("Parent is done sleeping 5 seconds."); } vent skab tråd } private static void sleep(int milliseconds){ try{ Thread.sleep(milliseconds); } catch(interruptedexception e){ // ignore this exception; it won't happen anyhow } } start tråd apple time java Simple2Threads Child is done sleeping 3 seconds. Parent is done sleeping 5 seconds. apple javac Simple2Threads.java apple java Simple2Threads Child is done sleeping 3 seconds. Parent is done sleeping 5 seconds. apple 35 real user sys apple 0m5.114s 0m0.088s 0m0.031s

Udfordringer for flere tråde Hvis vi har n tråde og n CPUer, burde ting være simple (i princippet!) Men hvis vi har flere tråde end CPUer - hver tråd har sin egen kontekst (registre, stak, ) - hver tråd skal tildeles en vis, fair, tid på CPUen - der er behov for en mekanisme for trådskifte 36

Kooperativt trådskift Antag, at vi har to tråde A og B, der skiftes til at køre De kan skifte med switchfromto() Udvikleren har selv indsat disse skift i koden A og B kan således dele CPUen 37 Tråd A A1 A2 A3 switchfromto(a,b) A4 A5 switchfromto(a,b) Tråd B B1 B2 B3 switchfromto(b,a) B4 B5

switchfromto(a,b) Hvad skal gemmes mellem trådskift? - hvad er indholdet af CPUens (relevante) registre? - de anvendte områder i hukommelsen (stakken) skal beskyttes (SP) - hvad er (adressen på) den næste instruktion? (IP) - Når trådskiftet foretages, gemmes disse ting for A på A s stak, og de tilsvarende værdier for B findes på B s stak - IP og SP gemmes i Thread Control Block (TCB) 38

switchfromto(outgoing,next) push each register on the (outgoing thread s) stack store the stack pointer into outgoing->sp load the stack pointer from next->sp store label L s address into outgoing->ip load in next->ip and jump to that address L: pop each register from the (resumed outgoing thread s) stack IP and SP registers Other registers A s TCB A s resumption IP and SP A s IP and SP A s data A s stack A s saved registers B s TCB B s IP and SP B s data B s stack B s resumption IP and SP A s IP and SP A s data B s saved registers 39

Linux kernel! (x86 assembler) pushfl # pushes the flags on outgoing s stack pushl %ebp # pushes %ebp on outgoing s stack movl %esp,816(%ebx) # stores outgoing s stack pointer movl 816(%esi),%esp # loads next s stack pointer movl $1f,812(%ebx) # stores label 1 s address, # where outgoing will resume pushl 812(%esi) # pushes the instruction address # where next resumes ret # pops and jumps to that address 1: popl %ebp # upon later resuming outgoing, # restores %ebp popfl # and restores the flags %ebp skal gemmes, %esp er stakpointer %ebx indeholder outgoing, %esi next 816 og 812 udpeger stak og IP i TCBs 40

yield() yield() { outgoing = current; next = choosenextthread(); current = next; // so the global variable will be right switchfromto(outgoing, next); } Hvis vi har en central datastruktur, der gemmer samtlige trådes TCB, og vi kender den aktuelle (current) tråd, kan vi skifte fra en tråd til den næste med yield() choosenextthread()? Næste gang! 41

Ulemper ved kooperativ trådskift Det virker, men - udvikleren skal selv bestemme tidspunkt for trådskift - hvis der er fejl i programmet, såsom uendelige løkker, skiftes der aldrig, og så er computeren låst - tunge programmer kan komme til at sulte andre programmer for adgang til CPUen Tidlige operativsystemer brugte kooperativ multitasking, men så fandt man på noget bedre 42

Præemptiv multitasking I stedet for at overlade det til de enkelte tråde at afgive (yield) kontrol, lad operativsystemet bestemme, hvornår der skal skiftes tråd - f.eks. når der er input klar til en bestemt tråd - eller når en tråd har kørt længe nok Dette kræver en mekanisme for at kunne give operativsystemet kontrollen tilbage 43

Afbrydelser Der vil ofte være tidspunkter, hvor en CPU har behov for at afbryde den nuværende aktivitet for at tage sig af en anden opgave - input ankommer fra en ydre enhed - en timer er blevet færdig - der er sket en fejl Dette kan opnås med interrupts 44

Hardware interrupts Tråd Operativsystem Timer Interrupt signal Overfører kontrol Ydre enhed Returnerer Interrupts understøttes direkte af CPUen Når de bliver kaldt, overdrages kontrollen til en interrupt handler, der gemmer den nuværende tilstand, gør det nødvendige og siden returnerer kontrollen til den samme eller en anden tråd 45

Hardware interrupt & multitasking CPUer understøtter timers, der kan udløse et interrupt Med en sådan funktionalitet kan man lave simpel multitasking, idet man deler CPUen mellem de tilgængelige tråde, så hver tråd får lige meget tid Dette kaldes round robin og er den simpleste form for scheduling 46

Sammenfatning Et operativsystems opgave er at styre adgangen til computerens hardware, således at - flere programmer kan tilgå og dele ressourcer (tilsyneladende) simultant på kontrolleret vis - programmer kan samarbejde lokalt og over netværk Centralt er understøttelsen af multitasking gennem multiple tråde og processer 47