Page 1 of 5 Systembeskrivning Projektets namn: Educational Operating System (EOS) Uppdragsgivare: Virtutech Gruppmedlemmar: Jens Lind (Projektledare) Peter Wåhlander (Sekreterare) Åke Wallebom Gilbert Netzer Daniel Eklöf Karl Berglund Daniel Felke Hemsida: http://www.nada.kth.se/projects/proj03/eos/ Systemskiss fig. 1: EOS moduler och hur de hänger ihop. Moduler Här följer en kort beskrivning av vad de olika modulerna i fig. 1 innehåller. Användarprogram Innehåller alla användarprogram. Biblioteksfiler Den här modulen består av tre filer: stdlib.h, stdio.h och string.h. Filerna innehåller funktioner som t.ex. printf(), new och delete. Modulen är gränssnittet mellan användarprogram och operativsystemet. Systemanrop Systemanrop består av ett antal funktioner som gör det möjligt för användaren att ta del av operativsystemets tjänster. Det är med hjälp av systemanrop som funktionerna i standard biblioteket kan ta sig från userspace till kernelspace. Till
Page 2 of 5 exempel finns det systemanrop för att få operativsystemet att skriva ut ett antal tecken på skärmen eller skapa en ny tråd. Virtuell minneshanterare Varje trådgrupp har en egen 4 GB stor minnesrymd. Virtuella minneshanterarens uppgift är att mappa fysiskt minne till en virtuell adress om en tråd begär mer minne. Den ska också se till att allt mappat fysiskt minne returneras till systemet om en tråd avslutas. Mycket av den virtuella minneshanteringen sker i MMU:n som är en h årdvaruenhet i processorn [X86]. Fysisk minneshanterare Fysiska minnehanteraren hanterar systemets tillgängliga RAM-minne. Den måste veta hur mycket minne som finns tillgängligt och vilket av det som används eller eventuellt är reserverat och vilket som är ledigt. Input/Output I/O-modulen ger operativsystemet möjlighet att skriva tecken till monitorn och läsa tecken från tangentbordet. Schemaläggare Schemaläggaren har funktioner för att skapa och avsluta trådar och trådgrupper. Trådarna kan ges en viss prioritet som avgör hur ofta de kommer få tillg ång till processorn. Schemaläggaren gör det också möjligt att blockera trådar eller säga åt dem att v änta en viss tid. Avbrottshanterare Den här modulen tar hand om mjukvaru- och hårdvaruavbrott. Sådana avbrott kan uppkomma då en användarprogram ger upphov till ett systemanrop (mjukvaruavbrott) eller när en division med noll sker i processorn (hårdvaruavbrott). Efter ett avbrott har hanterats återgår systemt till vad de höll på med innan avbrottet. Nanokärna Nanok ärnan är den enda modulen som är processorarkitektursberoende, och dess uppgift är att abstrahera hårdvaran så pass mycket att de övriga modulerna utan (eller med liten) modifiering kan köras på vilken processortyp som helst. Systemdesigndokument Systemdesigndokumentet är genererat av Doxygen [DOX] från EOS källkod. Här följer en beskrivning av vad man kan hitta i de sidorna. Doxygen genererar dokument på engelska d ärför är rubrikerna p å engelska. Systemdesigndokumentet [SYS] är väldigt stort, därför b ör det läsas online och inte skrivas ut. Generellt sett gäller det att man från en sida kan nå informationen p å de andra sidorna, men den här strukturen förenklar sökandet och skapar en mer överskådlig modell av systemet. Speciellt intressant kan det vara att se diagram över hur klasser förhåller sig till varandra och vilka andra metoder och attribut en viss metoder använder sig av. Sådan information hjälper både n är man ska söka i, debugga eller utöka koden. Main page För tillfället fyller den här sidan ingen annan funktion än att visa vilken version av EOS Doxygen-genererade dokument det här är. Namespace list En lista med alla namespaces som finns i EOS. Här går det att få information om vilka klasser och attribut ett namespace inneh åller samt ytterligare information om de klasserna och attributen. Class hierarchy Den här sidan visar alla klasser som finns i EOS och hur de förh åller sig till varandra. Man kan antingen få se det som ett diagram där det finns pilar som visar samband mellan olika klasser eller som en lista där arv visas med hjälp av sublistor. Från den här sidan kan man sedan få information för varje klass. Informationen består av beskrivning av metoder och
Page 3 of 5 attribut samt ett diagram över hur valda klassen förhåller sig till andra klasser. Alphabetical list En sida som listar alla EOS klasser sorterade i bokstavsordning. För klasserna g år det att få exakt samma information som för sidan med class hierarchy. Compound list På den här sidan kan man se alla klasser, strukturer och unioner som finns i EOS kod. File list Rätt uppenbart: en lista av filerna som EOS består av. Här går det att se koden som en fil innehåller eller få information om vilka metoder som finns deklarerade i en fil samt en graf med olika beroenden mellan den här filens medlemmar och andra filers klasser och attribut. Namespace members En lista sorterade i alfabetisk ordning med metoder och attribut som tillhör ett namespace. H är går det att få samma information om ett visst namespace som på sidan med namespace list. Compound members En alfabetiskt sorterad lista med alla metoder och attribut som finns i EOS. Det går förstås att få information om klassen ett visst attribut eller en viss metod tillhör. File members En sida som namespace members, men här med metoder och attribut som tillhör en viss fil. Härifrån går det att få samma information om filerna som för sidan med file list. Related pages Den här sidan har externa länkar. Referenser [DOX] Doxygen, http://www.stack.nl/~dimitri/doxygen/, 2003-05-13 [SYS] EOS Systemdesigndokument, http://www.nada.kth.se/projects/proj03/eos/doc/eos/index.html, 2003-05 -15 [X86] Intel Pentium 4 Processor, http://developer.intel.com/design/pentium4/manuals/, 2003-05-15 [PRO] EOS Projektpresentation, http://www.nada.kth.se/projects/proj03/eos/doc/projektpresentation.html, 2003-05-13 [ANV] EOS Användarhandledning, http://www.nada.kth.se/projects/proj03/eos/doc/anvandarhandledning.html, 2003-05-13 Appendix A: Begrepp och akronymer Begrepp & akronymer Begrepp Virtutech
Page 4 of 5 Simics Företaget som står bakom projektet. De tillhandah åller också Simics (se nedan). En datorsimulator. Kan simulera en antal olika CPU:er och hårdvarukonfigurationer. Tanken är att EOS skall utvecklas med hjälp av detta program. Boota Att starta datorn. För att ladda in vårt OS vid start använder vi oss av GRUB, som är en 'Boot-Loader'. Interface 1. Det användaren av datorn ser av operativsystemet (t.ex. en textprompt) 2. De (system)funktioner som kan anropas ifrån andra program Nanok ärna Den processor-arkitekturs-känsliga delen av kärnan. Också den delen som implementeras i assembler. Tanken är att hålla denna del så liten som möjligt, för att förenkla eventuella konverteringar av EOS till andra arkitekturer. Kontextbyte Att växla program som körs. EOS skall kunna köra flera program "samtidigt". Eftersom det bara går att exekvera ett program i taget, måste systemet med jämna mellanrum byta program som k örs, för att på så sätt simulera att programmen körs samtidigt. Interrupthantering En dators komponenter genererar interrupts. Dessa måste EOS ta hand om på rätt sätt. T.ex. g öra ett kontextbyte vid ett timer-interrupt, eller läsa/skriva till hårddisken när den är "redo". Trådhantering Program körs i "trådar". EOS måste kunna hålla reda på alla program/trådar som k örs, för att t.ex. kunna göra kontextbyten, allokera/frigöra minne mm. Minneshantering Eftersom EOS är operativsystemet, måste EOS tillhandahålla minnesfunktioner såsom 'malloc', 'free' etc. EOS måste också tillhandahålla en (vrituell) addressrymd som ser likadan ut för alla program. Viktigt är också kopplingen riktigt minne - virtuellt minne (mappningen mellan ett programs virtuella minne och det fysiska minnet som faktiskt finns i datorn). Input/output Skärm, tangentbord, h årddisk mm. EOS måste ha drivrutiner för dessa (till en början endast skärm/tangentbord). Schemaläggare/scheduler Den rutin som ser till att alla trådar får processortid, dvs. faktiskt får exekvera. Mini-stdlib Då delar av EOS kommer att implementeras i C/C++, kommer ett antal funktioner från C/C++ standardbibliotek att behöva implementeras. Den mängd nödv ändiga funktioner utgör vårt mini-stdlib. Byggmiljö EOS måste kompileras, och kompileras på rätt sätt, vilket g ör att vi behöver en väldefinierad milj ö (samling program mm.) som är likadan för allihopa. Fulkod Kod som av någon anledning inte är snygg. Det kan vara sättet på vilket ett problem har lösts, eller helt enkelt hur koden ser ut, dvs. dålig eller ingen användning av "coding convensions". Akronymer OS EOS Operating System. Den mjukvara som abstraherar hårdvaran för applikationerna som användaren skriver/kör. Educational Operating System
Page 5 of 5 x86 MM VMM MMU I/O CVS Intel/AMD's processor arkitektur, för vilken EOS utvecklas. Memory Manager Virtual Memory Manager Memory Management Unit Input Output Concurrent Versions System $Id: acronyms.html,v 1.5 2003/03/22 15:38:42 d00-awa Exp $