MS-DOS
Från Rilpedia
MS-DOS (Microsoft Disk Operating System) är ett operativsystem producerat av Microsoft som var populärt på 1980-talet och i början av 1990-talet.
MS-DOS skapades 1980 av Tim Paterson vid det lilla företaget Seattle Computer Products under namnet QDOS, senare ändrat till DOS-86 eftersom det var skrivet för Intels processor 8086. Ursprungligen var QDOS en klon av operativsystemet CP/M och lånade namn av CP/M-kommandon, som i sin tur lånade många av dem från Unix.
Microsoft köpte operativsystemet QDOS av Seattle Computer Products, anställde Tim Paterson och licensierade det till IBM som använde det i sina tidiga PC-datorer under namnet PC-DOS. Microsofts avtal med IBM skulle visa sig vara mycket fördelaktigt, då Microsoft fick behålla rättigheterna att vidareutveckla och sälja systemet till utvecklare av PC-kloner under namnet MS-DOS.
Den sista versionen av MS-DOS som såldes i affärer som en separat produkt var 6.22. Windows-versioner upp till Windows 3.11 kördes ovanpå MS-DOS (eller något annat DOS-kompatibelt operativsystem) och hanterade filsystem och systemanrop. I Windows 95 fanns MS-DOS kvar som version 7.0 men användes endast för filåtkomst och start av den grafiska miljön; Windows skötte därefter själv systemanropen. Den sista Windows-version som kördes på MS-DOS var Windows Me, där Windows även skötte systemstart.
Innehåll |
MS-DOS uppbyggnad
Microsoft DOS är ett operativsystem med text- och teckenbaserat gränssnitt, till skillnad från senare tiders grafiska. Det innebär att man får skriva in textkommandon för de olika saker man kan tänkas vilja göra.
MS-DOS är ett mycket stabilt operativsystem och detta till stor del på grund av dess största begränsning. Det är nämligen endast möjligt att ett program i taget (egentligen process; jämför multikörning). Andra begränsningar som kan nämnas är att DOS har en övre minnesgräns på 640 kB, då det var baserat på Intels 16-bitars processorserie, kombinerat med designval för vilka minnesområden som skulle reserveras för expansionskort och systemets ROM. Ett rikt utbud av program gav användare möjlighet att i olika utsträckning komma runt begränsningarna i MS-DOS.
Kommandon
Det finns två sorters kommandon i MS-DOS: interna som sköts från kommandotolken (command.com) samt externa som har en egen programfil. Det finns tre sorters programfiler som prioriteras i ordningen som följer: .EXE, .COM och .BAT. Programfilen .exe introducerades med version 2.0 av MS-DOS. En batchfil (.bat) är en textfil med diverse kommandon som körs radvis. Dessa kan kompileras till exempelvis kommandofiler för att köras fortare. Annars kan man skriva in kommandona direkt vid prompten (C:\>) och sedan trycka på enter-tangenten för att köra dem ett i taget (dvs seriellt). Vill man omdirigera utmatningen från ett kommando kan man använda pipetecknet (|) eller omdirigera med > och <. Man kan även använda kommandot Con.
För att specifiera flera filer brukar man använda sig av jokertecken (wild cards). Om man skriver ett frågetecken (?) kommer det att representera ett tecken, vilket som helst. Om man skriver en stjärna (*) kommer det att representera inget, ett eller hur många tecken som helst.
Namnkonventioner
Vidare får filnamnen högst innehålla åtta tecken samt ytterligare tre tecken som åtskiljs av de övriga med punkt, den så kallade filändelsen. Filändelsen är till för att program och användare lättare skall kunna veta vad det är för typ av fil; exempelvis står ".EXE" för exekverbar fil, ".TXT" för textfil och så vidare. Används ett modernare DOS, eller extra program, stöds VFAT och FAT32 och då är man inte begränsad till enbart 8.3-namnkonventionen.
Några tecken får inte användas varken i fil- eller katalognamn, bland andra '*', '+', '-', '?', '/', '\', '[', ']', '{', '}', '(', ')', ':', ';', '.', ',', '=', '<' och '>'. Dessutom är vissa ord reserverade, som exempelvis CON, AUX, COM 1-4, PRN, LPT 1-4 och NUL.
Katalogstruktur
I DOS arbetar man i en katalogstruktur sedan version 2. Katalogstrukturen brukar liknas vid ett upp-och-nervänt träd där roten är överst, underkatalogerna förgrenar sig nedåt och där löven representerar filer. De olika partitionerna på hårddisken (exempelvis C:) brukar kallas rot (root) och tecknet för detta är det omvända snedstrecket: \. Under roten finns moderkataloger (parent directories) som i sin tur rymmer barnkataloger (child directories) som innehåller filer (files). En sökväg i DOS kan se ut så här: C:\Moderkat\barnkat\textfil.txt
Filsystem
Filsystemet i DOS heter FAT, som är en förkortning för file allocation table (fillallokeringstabell) som innebär en tabell över placeringen av filer och kataloger. I filsystemet lagras filerna i ett kedjesystem där filallokeringstabellen är en lista över vilka block som är lediga och i vilka block det finns filer. I pekarna till de upptagna blocken finns också adressen till det block där filen fortsätter att lagras. En rotkatalog kan (beroende på version) innehålla upp till 512 kataloger/filer och miljontals underkataloger.
Minnesområden
När DOS skapades var minneskraven på operativsystem betydligt mindre krävande än idag. Detta innebar att allt eftersom DOS utvecklades tvingades man lösa hur operativsystemet skulle kunna adressera mer minne för mer minneskrävande program.
Base memory
Det konventionella minnet eller base memory som det också heter är det område i primärminnet på 640 kB som var tillgängliga för alla program att allokera minne från. Till skillnad från XMS och EMS behövdes ingen särskild drivrutin för att använda den här delen av minnet.
Upper memory
Det höga minnet eller upper memory block är utrymmet från 640 kB upp till 1 MiB (1024 kB). Detta brukar hänvisas till i DOS som HIGH. Här kan man lägga exempelvis drivrutiner och MS-DOS egna rutiner när de laddas i config.sys (DOS=UMB samt DEVICEHIGH=drivrutin) och på så sätt lämna plats för annat i det konventionella minnet. Det enda hindret mot att använda detta minne var om BIOS eller expansionskort själva ville disponera det.
Expanded memory
EMS var en variant som en del program under främst slutet av åttiotalet använde för att kunna utnyttja mer minne. Det byggde ursprungligen på speciella expansionskort med egna minneskretsar och ROM, som kunde "växla" in olika delar av EMS i vanligt minne. Det emulerades sedan ofta med EMM386 och liknande program. Denna typ av minne kunde utnyttjas av alla processortyper, inklusive 8086/88-processorn.
High memory area
HMA (high memory area) är ytterligare 64 kB ovanför de första 1024 kB. Detta är tillgängligt för processorn 80286 och högre. Även här kan man placera DOS egna rutiner i config.sys (DOS=HIGH). Området var speciellt då det enbart kunde täckas av ett minnessegment, medan övriga segment är överlagrade.
Extended memory
Det utökade minnesområdet eller XMS (extended memory specifikation) brukar man kalla allt minne ovanför HMA. Det är tillgängligt för processorn 80286 och högre.
Olika MS-DOS-versioner
MS-DOS 1.0
DOS 1.0, som kom i augusti 1981, lagrade alla filer direkt under rot på diskett. Den hade bara stöd för enkelsidig diskett, och hela operativsystemet rymdes på en sådan 5,25-tumsdiskett. Från och med 1.10 (1982) hade det stöd för dubbelsidiga disketter med lagringskapacitet på upp till 320 kB.
Tim Paterson lämnade utvecklingen våren –82 då Mark Zbikowski tog över. Än idag inleds alla EXE-filer av hans initialer i början på binärfilen.
Exempel på kommandon som fanns med i den första versionen av DOS är:
- Copy som är ett internt kommando för att kopiera filer. Med hjälp av specialfilen con kan man dessutom ändra utmatningen till en textfil (copy con namn.txt). Funktionstangenten F6 (eller Ctrl+Z) kan sedan avsluta detta, eftersom det sågs som filslut. Det var även vanligt att själva tecknet Ctrl+Z förekom i slutet av filer i tidiga DOS-versioner.
- Kommandot Date var också ett internt kommando i DOS 1.0. Det visar och kan ändra systemklockans aktuella datuminställning.
- Kommandot Time fungerade likadant men gällde tidsinställningarna istället.
- Type är ett internt kommando som skriver ut innehållet i en fil på skärmen.
- Del (internt) står för delete och används för att ta bort filer.
- Även Dir är ett internt kommando och listar filerna.
- Ren eller rename är ett internt kommando som används för att byta namn på filer.
- Diskcopy är ett externt kommando (diskcopy.com) som används för att kopiera disketter.
- Format är ett externt kommando (Format.com) som används till att formatera disketter (och med tiden hårddiskar). Växeln /s överför även systemfiler.
- Sys (Sys.com) överför systemet, det vill säga filerna IO.sys, MSDOS.sys och Command.com så att man kan boota från den enhet dit man överfört filerna.
- I DOS 1.0 medföljde även en liten radeditor som hette Edlin, föregångare till Edit.
MS-DOS 2.0
1983 kom DOS 2.0 den hade förutom stöd för diskettstation även stöd för upp till 32 MB stora hårddiskar. I DOS 2.0 infördes DOS katalogsystem där man kan lagra filer i olika kataloger. Version 2.10 var en specialversion för bärbara datorer (IBM Portable PC).
I DOS 2.0 infördes en rad nya kommandon. Exempelvis:
- Ver som var ett internt kommando som visar vilken version av MS-DOS som används, en fördel när det nu fanns två olika.
- CLS (ett internt kommando) för att rensa skärmen.
- Det interna kommandot prompt användes för att ändra utseendet på prompten.
- Fdisk (Fdisk.exe) är ett externt kommando som används för att partitionera hårddiskar.
Den nya filstrukturen förde också med sig nya kommandon:
- Tree (Tree.com) är externt och visar katalogstrukturen som ett träd.
- CD eller chdir (internt) för change directory då det nu krävdes att kunna förflytta sig mellan olika kataloger.
- RD eller rmdir är interna kommandon för att ta bort katalog.
- MD eller Mkdir är ett internt kommando för att skapa ny katalog.
- Path (internt) används för att styra sökvägarna operativsystemet använder sig av när det lokaliserar körbara program (externa kommandon, skriptfiler och andra program).
MS-DOS 3.0
1984 kom version 3.0, som klarade 1,2 MB floppydiskett. 1985 införde 3.10 stöd för nätverk, och två år senare kom stöd för enkelsidig 3,5-tumsdiskett (720 kB) i och med version 3.20. I 3.30 kom även stöd för dubbelsidiga 3,5-tumsdisketter (1,44 MB), och där har man även infört stöd för upp till 64 MB stora hårddiskar med två partitioner på högst 32 MB vardera. 1987 kom även Compaq MS-DOS 3.31 med stöd för partitioner på 512 MB på Compaqdatorer.
I trean började man använda volymetiketter på hårddiskar. I denna version tillkom också bland annat följande kommandon:
- Attrib (attrib.exe) som var ett externt kommando som kunde skrivskydda filer med attributet R för Read-Only samt attributet A för Archive som används vid backup och sätts automatiskt av systemet om en ändring gjorts sedan senaste backup.
- Label (label.exe) används för att visa eller ändra volymetiketten på hårddiskar.
- XCopy (xcopy.exe) tillkom i version 3.2. Detta kommando kan bland annat används för att kopiera en hel trädstruktur samtidigt.
MS-DOS 4.0
MS-DOS 4.0 från 1988 drogs med minnesproblem på grund av en rad minnesslukande program.
- Med hjälp av det något minnesslukande (6 kB) programmet SHARE. hade DOS nu stöd för 1 GB stora hårddiskar med 2 partitioner på upp till 512 MB vardera.
- Det grafiska skalet DOSSHELL ritade upp en enkel trädstruktur där man kunde bläddra bland filerna och katalogerna. Detta program användes ytterligare 20 kB av minnesområdet. Detta spelade förstås bara någon roll om man sedan startade andra program inifrån skalet.
- mem (mem.exe) är ett externt kommando som visar information om det konventionella minnet och tillkom för att användarna skulle ha bättre kontroll på minnesallokeringen.
MS-DOS 5.0
På grund av minnesförbrukningen i 4.0 utvecklades metoder för att få tillgång till ytterligare minne. 1991 kom DOS version 5.0. Det använder en drivrutin som heter Himem.sys och som därför kan utnyttja minnesområdet mellan 1024 och 1088 för att ladda in vissa delar av operativsystemet och därmed frigöra 64 kB av det konventionella minnet till att köra program som kräver mycket ledigt minne.
DOSSHELL förbättrades i version 5 och var bland annat mindre minnesslukande. Vidare tillät det en enkel form av multikörning som kallades task swapping där program kunde ligga vilande i bakgrunden.
Det finns stöd för upp till 2 GB stora partitioner, men i praktiken flera andra begränsningar för hur stora hårddiskar som kan adresseras.
I version 5.0 kom några nya kommandon:
- Textredigeraren Edit (Edit.com).
- Även doskey (doskey.com) kom i version 5. Det är ett program som minns alla kommandon man gett så att man med hjälp av piltangenterna kan bläddra sig fram mellan givna kommandon.
- Undelete (Undelete.exe) är ett program som återställer filer som tagits bort med kommandot del, dock med klart varierande tillförlitlighet, bland annat eftersom filen för att återställas korrekt inte fick vara fragmenterad.
Det tillkom även två nya attribut i version 5: S för system som är ett attribut som systemet sätter på filer som behövs för operativsystemet. H står för hidden och används för att göra vissa filer dolda för kommandot dir.
I och med den avsevärt förbättrade minneshanteringen blev den grafiska användarmiljön i Windows för första gången praktiskt användbar. (De tidigare versionerna hade varit allt för minneskrävande för att få en större användarskara). Det första Windows som kördes på DOS 5.0 var Windows 3. Detta är en stor anledning till att Windows 3 (och särskilt versionen med stöd för nätverk: 3.11 for Workgroups) blev en sådan försäljningsframgång.
MS-DOS 6.0
1993 kom version 6.0. Microsoft hade här införlivat en egen tolkning av diskkomprimeringsprogrammet Stacker i operativsystemet. 6.20 och 6.22 är ytterligare revideringar där bland annat programmet scandisk tillkommit. För att DOS 6.22 skall fungera bra rekommenderas minst en 8 MB stor partition för systemfilerna.
I DOS 6.0 tillkom en rad användbara kommandon:
- Dblspace var ett externt kommando (dblspace.exe) som används för att komprimera hela volymer
- Dblspace ersattes i version 6.22 av drvspace. Den ingår bland systemfilerna och överförs med exempelvis sys.com till diskett eller hårddisk.
- Ett annat användbart kommando var deltree som används för att ta bort en hel trädstruktur.
- Move (move.exe) flyttar och byter namn på filer
- Memmaker (Memmaker.exe) optimerar användningen av konventionellt minne, den redigerar automatiskt autoexec.bat och config.sys och flyttar delar av operativsystemet till HMA och UMB.
- Scandisk (Scandisk.exe) används för att korrigera fel i filsystemet. Ersätter det äldre chkdisk som dock fortfarande finns kvar.
- Msd (msd.exe) visar information om datorn.
- I version 6 tillkom även Help (help.com) som är ett externt kommando som ger information om de olika kommandona.
Version 6.22 kom att bli den sista rena DOS-versionen från Microsoft.
MS-DOS för Windows 95
Version 7.0 kom 1995 och är en integrerad del av Windows. Annars är den bara en avskalad variant av 6.22 där de flesta kommandon är borttagna. I Windows initieras DOS av kommandotolken (command.com). Vissa av kommandona (som DIR och övriga interna kommandon som hanterade filnamn) utökades för att hantera långa filnamn, när de laddades inifrån Windows. Om de kördes i rent DOS-läge fungerade de inte, eftersom den filsystemskod som laddades då inte behärskade detta. En skillnad i Windows 98 och senare versioner av Windows 95 var att den version av Drivespace som ingick var något effektivare än tidigare. Denna version hade tidigare enbart erbjudits genom Plus!-paketet.
MS-DOS för NT-baserade Windows
I Windows NT, XP, 2000 och 2003 är allt vad som behövs inbakat i Windows, och det DOS som fortfarande kan anropas är inte något "äkta" DOS, som Windows behöver för att fungera. Det finns med bara som ett "påhäng" för att möjliggöra körning av äldre, DOS-baserade program med Windows som operativsystem.
Man måste också vara medveten om att ett konsolprogram i Windows mycket väl ändå kan vara ett verkligt modernt Windows-program. cmd.exe och många av de traditionella externa kommandona i DOS är under Windows NT sådana konsolprogram.
Hur DOS startar
Bootprogrammet
När en PC startas körs först BIOS (Basic Input/Output System) (som startar CMOS) och sedan P.O.S.T. (Power On Self Test). Bootprogrammet laddar in de operativsystemspecifik kod från MBR. Denna start är identisk i alla IBM-kompatibla datorer.
IO.SYS
Är DOS installerat på datorn så laddar bootprogrammet in filen IO.SYS i primärminnet och kör den för att styra och aktivera enheter för in- och utmatning. IO.SYS kör i sin tur igång MSDOS.SYS som startar själva operativsystemet.
MSDOS.SYS
MSDOS.SYS är en dold, skrivskyddad systemfil som ser till att filen config.sys kan läsas in och därefter köra det skal som anges där (raden "shell=") eller startenhet:\command.com om raden saknas.
Filen finns även i Windows, och är då en textfil där man kan gå in och ändra ett antal konfigurationsvärden. Där är hela funktionen placerad i IO.SYS.
COMMAND.COM
När MSDOS.SYS är färdig startar den det skal som angets i config.sys, nästan alltid COMMAND.COM, som läser in de interna kommandona (ex CD, MD, RD, DIR etc.) i det konventionella minnet.
Inställningsfiler
MSDOS läser Config.sys filen efter användaranpassade inställningar och drivrutiner efter att msdos.sys lästs in.
Till sist körs Autoexec.bat av skalet som ställer in diverse användaranpassade inställningar, startar diverse program, drivrutiner och batchfiler allt efter hur man har ställt in det.
Begränsningar
I de flesta äldre DOS-versioner kan ett filnamn inte innehålla mer än åtta tecken i filnamnet och endast tre tecken i filändelsen. Tecken som : / \ * < > | " kan inte ingå i filnamnet eftersom dessa tecken används i vissa syntaxer och systemet skulle bli förvirrat om dessa skulle användas i filnamn. *.* betyder till exempel alla filer, och Filename.* betyder alla filer vid namnet Filename fast med olika filändelser. \ används för att skriva ut en sökväg och / är för att anropa kommandon etc.
I Windows 95 kan ett filnamn innehålla max 255 tecken, men öppnar man en fil i DOS med mer än åtta tecken skrivs de sex första bokstäverna och ett ~1 eller ~2 osv beroende på hur många filer som har liknande namn. Exempel: Ansökningar.doc, MS-DOS-namn: ANSÖKN~1.DOC. Om det också finns en fil med namnet Ansökningar_jobb.doc så kommer den heta ANSÖKN~2.DOC.
Filerna kan heller inte innehålla mellanslag, och heter en fil till exempel Jobb 1.doc så kommer den i MS-DOS att heta Jobb1~1.doc.