MS-DOS

**MS-DOS** (*<b>M</b>icro<b>s</b>oft <b>D</b>isk <b>O</b>perating <b>S</b>ystem*) on Microsoftin vuonna 1981 julkaisema, tekstipohjaisella komentoliittymällä varustettu käyttöjärjestelmä. Se oli ensimmäinen laajalti levinnyt käyttöjärjestelmä IBM PC -yhteensopiville tietokoneille. Viimeisin itsenäinen versio, 6.22, julkaistiin vuonna 1994, minkä jälkeen MS-DOS on sisältynyt Windows-järjestelmäpaketteihin. Windows 95, 98 ja Me perustuivat MS-DOS:iin, vaikka tämä onkin enimmäkseen käyttäjältä piilotettu. 

Windows NT:n mukana on ollut vuodesta 1993 lähtien NTVDM-komponentti 16-bittisien MS-DOS-ohjelmien suorittamiseen. NTVDM on rajattu 32-bittisille IA-32-suorittimille ja se ei ole enää tuettu x86-64 tai ARM-suorittimilla.

## Historia

IBM tilasi Microsoftilta käyttöjärjestelmän, jonka Microsoft osti valmiina Seattle Computer Products -yhtiöltä (SCP) IBM-kaupan solmimisen jälkeen. SCP:llä oli CP/M:ää muistuttava käyttöjärjestelmä QDOS. Microsoft lisensoi käyttöjärjestelmän IBM:lle, joka myi sitä IBM PC:n kanssa nimellä PC-DOS. Microsoftilla oli oikeus myydä käyttöjärjestelmää erikseen nimellä MS-DOS.

MS-DOSin komentotulkki `command.com` toimi myös pääasiallisena käyttöliittymänä käyttäjälle.

MS-DOSiin ei koskaan toteutettu moniajoa, vaikka Microsoft suunnitteli pitkään sellaista koodinimillä *286-DOS*, *MS-DOS 3* tai *MS-DOS 4*. Järjestysnumeroltaan vastaavat, perinteistä muistinhallintaa käyttävät versiot julkaistiin vuorollaan, koska OS/2 astui näyttämölle. Intelin 80386-prosessorin muistinhallintayksikön myötä tätä rajoitetta pystyttiin kuitenkin kiertämään.

MS-DOS kopioi ideoita muista käyttöjärjestelmistä. Versio 2.0 sisälsi Unixista omaksutut alihakemistot, putket ja tulostuksen uudelleenohjauksen omintakeisin toteutuksin. Versio 5.0 paransi muistinhallintaa, jolloin osa kooltaan kasvaneesta MS-DOSista voitiin siirtää 80286- ja 80386-koneissa muille muistialueille kuluttamasta DOSin kallisarvoista 640 kilotavun perusmuistia.

Versiossa 6.0 tuli mukaan defrag-levyneheytysohjelma ja DoubleSpace-levynpakkaus, joka korvattiin Microsoftin ja Stac Technologiesin välisen patenttioikeudenkäynnin jälkeen versiossa 6.22 DriveSpace-nimisellä ohjelmalla. Kesäkuussa 1994 julkaistu MS-DOS 6.22 oli myös viimeinen erikseen myytävä MS-DOS, versio 7.0 oli saatavissa ainoastaan Windows 95 -ikkunoinnin mukana. Microsoftin vakuutteluista huolimatta Windows 95:ssä MS-DOS käynnistyi automaattisesti taustalla. Käyttöjärjestelmässä olivat uutuutena mukana tuki pitkille tiedostonimille ja "CD..."- ja "CD...." -komennot.

## DOSin ohjelmia
MS-DOS peri monet CP/M:n ohjelmista, jotka sovitettiin uudelle käyttöjärjestelmälle. Jo CP/M:ssa toiminut WordStar oli ensimmäisiä suosittuja tekstinkäsittelyohjelmia. Se antoi myöhemmin tilaa WordPerfectille, joka säilyi loppuun asti DOS-ympäristön suosituimpana tekstinkäsittelyohjelmana. Sen kilpailijana – lähinnä Suomessa – oli kotimainen Teko. 

Lotus 1-2-3 -taulukkolaskentaohjelma oli IBM PC:n läpimurtosovellus.
1-2-3 sisälsi graafisten kuvaajien tuottomahdollisuuden. 1-2-3:n suuri suosio 1980-luvun puolivälissä oli merkittävä tekijä IBM PC:n leviämisessä yritysmaailmaan.

DOS-ohjelmat ohjelmoitiin alussa, kuten aiemminkin, lähinnä assemblyllä, mutta kehittyneet kääntäjät yleistyivät myöhemmin. Turbo Pascal ja QuickBASIC olivat suosittuja. C-kääntäjiä DOSille olivat ainakin Microsoftin QuickQ, TurboC ja Watcom. DJ Delorie siirsi myöhemmin GCC:n DOSille nimellä DJGPP. DJGPP vaati kuitenkin 386-suorittimen. MS-DOSin itsensä mukana tuli Microsoftin GW-BASIC-niminen rivinumero-BASIC (PC-DOSissa BASICA), versiosta 5.0 lähtien QuickBasicia muistuttava QBasic.

Suuri osa tietokonepeleistä julkaistiin MS-DOSille aina 1990-luvun puoliväliin asti. Pelit kuten *[[Civilization]]*, *[[Dune II]]*, *[[Command & Conquer: Tiberian Dawn|Command & Conquer]]*, *[[Doom]]* ja *[[Quake]]* julkaistiin DOSille. DOSissä pystyi myös hyödyntämään 3D-grafiikkaa tukevia näytönohjaimia, kuten 3dfx:n Voodoo Graphicsia.

IBM PC -yhteensopiville tehdyt demot tehtiin myös yksinomaan DOS-ympäristöön aina 1990-luvun loppuun asti. DOSille tehtiin myös lukuisia tracker-ohjelmia musiikin säveltämistä varten. Niiden käyttöön tarvittiin erillinen äänikortti, jota ilman ääniominaisuudet olivat olemattomat.

Internetin käyttöön tarkoitettuja ohjelmia DOSille ei ole juuri tehty, vaikka esimerkiksi Sun Microsystems kehitti yrityskäyttöön jopa PC/NFS-asiakasohjelman ja TCP/IP-pinon.
Käytännössä internetiä käytettiin soittamalla modeemilla ja pääteohjelmalla soittosarjaan, josta voi käyttää Unix-koneen shellia sähköpostin käsittelyyn, keskusteluryhmien (Usenet Newsien) lukemiseen ja verkon selaamiseen tekstipohjaisella selaimella kuten Lynx. DOS-aikana yleisin ohjelmien ja muiden tiedostojen hankkimiskeino olivat BBS:t ja erilaiset arkistot, kuten Simtel tai Funetin FTP-palvelu.

## MS-DOSin muistinhallinta

MS-DOS kehitettiin IBM PC -koneelle, joka käytti Intel 8088 -suoritinta. Ensimmäiset mallit sisälsivät 16 tai 64 kB RAM-muistia ja suoritin pystyi osoittamaan korkeintaan megatavun. IBM PC:n arkkitehtuuri suunniteltiin kuitenkin siten, että 640 kB:n kohdalta alkoivat oheislaitteiden muistialueet, joten varsinaista muistia voi lisätä vain 640 kilotavuun asti ja loput 384 kB muistiavaruudesta oli varattu oheislaitteille. Esimerkiksi alue A000016–AFFFF16 oli varattu EGA- tai VGA-näyttökortin muistille.

8086 käytti segmentoitua muistia, jossa muistia käsiteltiin 64 kilotavun lohkoissa: *lähi[[osoitin (ohjelmointi)|osoitin]]* sisälsi offsetin ja *kauko-osoitin* sisälsi segmentin sekä offsetin.

Kuuluisa 640 kB:n muistinrajoitus muodostui pian ongelmaksi ja jo 1984 kehitettiin paljon muistia vaativia taulukkolaskenta- ja tietokantaohjelmia varten EMS-määrittely (Expanded Memory Specification). Määrittelyn mukaan rakennettiin ISA-väylään liitettäviä lisäkortteja, joiden muisti näkyi oheislaitteille varatulla muistialueella. Tätä muistia voitiin käsitellä sivuittain ja osa kortilla olevasta muistista voitiin ottaa kerrallaan "näkyväksi". Hyvin harvat ohjelmat hyödynsivät kuitenkaan tätä muistia. Käytännössä liian monien laiteajurien lataaminen kulutti perusmuistia, jolloin sen liiallinen käyttö esti joidenkin ohjelmien toiminnan. Etenkin jotkin pelit saattoivat vaatia yli 600 kB vapaata perusmuistia.

Intel 80286 -suorittimen kehittyneempi muistinhallinta mahdollisti XMS-muistin (Extended Memory Specification) käytön. 80286 pystyi hyödyntämään 16 MB muistia ja monet 286-tietokoneet toimitettiin 1 MB tai 2 MB muistilla, jota päästiin käyttämään 286-suorittimen suojatussa tilassa (Protected mode). Sitä käytettäessä ei tosin pystynyt käyttämään DOSin palveluja, ja hyvin harvat ohjelmat hyödynsivät 286:n kehittyneitä ominaisuuksia. Muistia voi kuitenkin hyödyntää esimerkiksi levyvälimuistina SMARTDRV-ohjaimen avulla tai RAM-levynä. XMS-muistin käytön mahdollisti HIMEM.SYS-laiteohjain, joka tuli käyttöön MS-DOS 5.0:ssä. Myös Windows 3 pystyi hyödyntämään ylimääräistä muistia.

286-suorittimessa oli myös suunnitteluominaisuus, jonka avulla A20-osoitelinjaa käsittelemällä 286-suoritin pystyi käyttämään reaalitilassa 64 kB muistia 1 MB rajan yläpuolelta osoitteesta FFFF016 lähtien. Tästä muistialueesta käytettiin nimeä HMA (High Memory Area). MS-DOS-versiosta 5.0 lähtien osan käyttöjärjestelmästä pystyi siirtämään CONFIG.SYS-tiedoston asetuksella DOS=HIGH tälle alueelle, jolloin perusmuistia jäi vapaaksi.

386-suorittimessa oli edeltäviä malleja kehittyneempi muistinhallintayksikkö (MMU), joka mahdollisti sivutuksen. Ns. Expanded Memory Managerin avulla DOS voi käyttää XMS-muistia simuloimaan EMS-muistia 386:n Virtual 8086 -tilassa. Tekniikkaa hyödynsi ensimmäisenä Compaq DOS 3.31:n mukana tullut CEMM vuonna 1987. Microsoftin vastaava laiteohjain EMM386.EXE toimitettiin Windows/386:n ja MS-DOS 4.01:n mukana. EMM386 voi myös siirtää osan XMS-muistista tyhjiin kohtiin alueelle 640 kB – 1 MB (ns. Upper Memory Area), jolloin laiteohjaimia voi ladata tälle alueelle CONFIG.SYSissä LOADHIGH-komennolla perusmuistin vapauttamiseksi.

## Käynnistys
MS-DOSin VBR lataa muistiin ensin kolme sektoria IO.SYS-tiedostosta, joka tämän jälkeen käynnistyy ja lataa loput itsestään muistiin ja sen jälkeen MSDOS.SYS-tiedoston, joka lukee CONFIG.SYS-asetustiedoston ja sen jälkeen lataa ja käynnistää COMMAND.COM-komentotulkin, tai muun määritellyn. COMMAND.COM suorittaa juurihakemistosta  AUTOEXEC.BAT-komentojonon.

## Julkaisut

MS-DOS:stä julkaistiin seuraavat versiot:

*PC DOS 1.0 - elokuu 1981 – alkuperäinen julkaisu IBM-PC:lle
*PC DOS 1.1 - toukokuu 1982 – tuki 320 kB:n kaksipuoliselle levykkeelle
*MS-DOS 1.25 - toukokuu 1982 – ensimmäinen julkaisu kloonikoneille
*MS-DOS 2.0 - maaliskuu 1983 – sisälsi alihakemistot, kahvapohjaiset tiedosto-operaatiot, komennon syötteen/tulosteen ohjauksen ja putket. Lisäsi tuen kiintolevyille ja 320 kB:n levykkeille sekä EXE-muotoisille ohjelmatiedostoille.
*PC DOS 2.1 - lokakuu 1983 – tuki IBM PCjr:lle
*MS-DOS 2.11 - maaliskuu 1984 – tuki käyttöliittymän ja päiväyksien lokalisoinnille
*MS-DOS 2.25 - lokakuu 1985 – parempi tuki kanji-merkeille ja korealaisille merkistöille
*MS-DOS 3.0 - elokuu 1984 – lisäsi tuen IBM PC/AT:lle: 1,2 MB:n levykkeet ja korkeintaan 32 MB:n kiintolevyosiot, yksi ensiöosio ja yksi looginen asema laajennetulla osiolla
*MS-DOS 3.1 - marraskuu 1984 – tuki Microsoftin lähiverkkotekniikoille
*MS-DOS 3.2 - tammikuu 1986 – tuki 3,5-tuumaisille 720 kB:n levykkeille
*PC DOS 3.3 - huhtikuu 1987 – tuki IBM PS/2:lle: 1,44 MB:n levykkeet, lisätty koodisivutuki (kansainväliset merkistöt)
*MS-DOS 3.3 - elokuu 1987 – tuki useammalle kuin yhdelle loogiselle asemalle
*MS-DOS 4.0 - kesäkuu 1988 – pohjautui IBM:n lähdekoodiin Microsoftin koodin sijaan
*PC DOS 4.0 - heinäkuu 1988 – mukana DOS Shell ja tuki yli 32 MB:n kiintolevyille
*MS-DOS 4.01 - joulukuu 1988 – korjauksia aiemman version merkittäviin ohjelmointivirheisiin
*MS-DOS 5.0 - kesäkuu 1991 – muistinhallintaohjelma, koko ruudulla toimiva tekstinmuokkain, QBasic-ohjelmointikieli, käytönaikainen ohje. DOS Shell saa tehtävänhallinnan. Mukana myös Rupp Technologylta lisensoitua tiedostonsiirtotekniikkaa.
*MS-DOS 6.0 - maaliskuu 1993 – lisätty DoubleSpace-levynpakkaus, levyn eheytys ja muita ominaisuuksia
*MS-DOS 6.2 - marraskuu 1993 – korjauksia ohjelmointivirheisiin
*MS-DOS 6.21 - helmikuu 1994 – poistettu DoubleSpace-levynpakkaus Stac Electronicsin haastettua Microsoftin oikeuteen
*PC DOS 6.3 - huhtikuu 1994
*MS-DOS 6.22 - kesäkuu 1994 – viimeinen virallinen, erikseen myytävä versio. DoubleSpace korvattu Microsoftin omalla, mutta sen kanssa yhteensopivalla DriveSpace-ohjelmistolla
*PC DOS 7.0 - huhtikuu, 1995 – mukana Stacker DriveSpacen asemesta
*MS-DOS 7.0 - elokuu 1995 – toimitettiin Windows 95:n mukana. Mukana looginen levynosoitus (LBA) ja tuki pitkille tiedostonimille
*MS-DOS 7.1 - elokuu 1996 – toimitettiin Windows 95B:n ja Windows 98:n mukana. Lisätty tuki FAT32-tiedostojärjestelmälle
*MS-DOS 8.0 - syyskuu 2000 – toimitettu Windows Me:n mukana. Viimeinen versio MS-DOS:ista. SYS-komento (jolla saattoi luoda käynnistyslevyn joko levykkeestä/optisesta tietovälineestä tai kiintolevystä) ja mahdollisuus käynnistää tietokone komentorivitilaan poistuivat.

Microsoft on julkaissut MS-DOS:in versioiden 1.25, 2.0 sekä 4.0 lähdekoodin.

## Muita MS-DOS-yhteensopivia käyttöjärjestelmiä
* DR-DOS (myös nimillä NovellDOS ja OpenDOS)
* FreeDOS
* PTS-DOS

## Katso myös
* DOSBox

## Lähteet

## Aiheesta muualla

* MS-DOS help and commands