MS-DOS

MS-DOS (Microsoft Disk Operating System) 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.OldOS.org, haettu 20.6.2008  "In a project starting as early as 1983, Microsoft began work on MS-DOS 3, a multitasking version of DOS (it was known as DOS 3 as the Real Mode DOS 2 was currently shipping). When the 'real' mode DOS 3 shipped, the project changed name to DOS 4. By 1987, in the text, 'Exploiting MS-DOS', the project was the subject of heavy speculation, with one possible name being banded around was 286-DOS, with Microsoft promising full, pre-emptive multi-tasking and full network support, and have Xenix support. However, by this time, IBM and Microsoft had already signed their Joint Development Agreement; the infant steps in OS/2's birth were taken. OS/2 version 1.0 was released in December 1987, coinciding with the launch of IBM's PS/2 Computer." 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, 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.O'Reilly, Managing NFS and NIS, 2nd Edition, Chapter 10. PC/NFS Clients docstore.mik.ua/orelly/networking_2ndEd/nfs/ch10_01.htm 
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.The 640 K Barrier, Jimmy Maher on April 14, 2017 in Digital Antiquaria, luettu 2017-04-22

8086 käytti segmentoitua muistia, jossa muistia käsiteltiin 64 kilotavun lohkoissa: lähiosoitin 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.https://github.com/microsoft/MS-DOS

 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

Luokka:DOS
Luokka:Microsoftin ohjelmistot
Luokka:Seulonnan keskeiset artikkelit