티스토리 뷰

IT

윈도우즈 프로그래밍 역사

siren911 2016. 9. 4. 06:05

오늘날 윈도우즈는 별도의 소개가 필요 없을 정도로 쉽습니다. 오히려 이런 점 때문에 윈도우즈가 사무실과 가정의 데스크탑 컴퓨터에 가져온 변화를 간과하게 됩니다. 





초창기에 윈도우즈는 험난한 시절을 겪었고, 오늘날과 같은 데스크탑 시장을 석권하리라고는 기대할 수 없었습니다. 윈도우 프로그래밍을 하기에 앞서 이러한 윈도우의 역사에 관해 알아 보겠습니다.

 

윈도우의 기본이 되는 윈도우 창입니다.

 

1981년 가을에 IBM PC가 출시된 이후 MS-DOS가 주요한 PC 운영체제가 되리라는 것은 명백해 보였씁니다. MS-DOS는 최소한의 기능을 제공하는 운영체제였습니다. 사용자에게는 명령행 인터페이스를 제공함으로써 DIR이나 TYPE과 같은 명령을 내릴 수 있게 하였고, 애플리케이션을 메모리에 로드하여 실행하는 기능을 제공하였습니다. 또한 애플리케이션 프로그래머에게는 파일 입출력을 위한 함수 정도만 제공하였습니다. 그밖의 작업을 하기 위해서는 각 애플리케이션이 PC 하드웨어에 직접 접근하였습니다.




 

메모리와 하드웨어 성능의 제약으로 인해, 세련된 그래픽 환경이 소형 컴퓨터에 도입되기까지는 상당한 시간이 걸렸습니다, 애플 컴퓨터는 문자 모드 환경의 대안으로 1983년 1월에 리사를 발표하였고, 1984년 1월에 매킨토시를 발표함으로써 그래픽 환경의 표준을 확립했습니다. 맥은 시장 점유율이 날로 줄어듦에도 불구하고 여전히 그래픽 환경을 평가하는 기준이 되고 있습니다. 매킨토시와 윈도우즈를 포함한 모든 그래픽 환경은 1970년대 중반에 제록스의 팔로 알토 연구 센터에서 이루어진 선구적인 연구에 기반하고 있습니다.

 

윈도우즈는 1983년(리사보다는 나중이고 매킨토시보다는 먼저임)에 마이크로소프트가 처음으로 발표하였고, 실제로 발매된 것은 2년 후인 1985년 11월이었습니다. 이로부터 2년 동안 윈도우즈 1.0에 대한 몇 번의 업데이트가 이루어졌는데, 국제 시장과 추가적인 하드웨어 지원을 위한 것이었습니다.

 

1987년에는 윈도우즈 2.0이 발표되었습니다. 이 버전에서는 사용자 인터페이스를 일부 수정하였습니다. 이 중 가장 중요한 변화는 중첩 윈도우의 도입입니다.(윈도우즈 1.0에서는 각 윈도우가 중첩되지 못하고 화면을 분할하여 사용하였습니다.) 윈도우즈 2.0은 키보드와 마우스 인터페이스에 대한 향상된 기능을 포함하였는데, 특히 메뉴와 대화상자를 좀더 편리하게 다룰 수 있었습니다.

 

이때까지만 해도 윈도우즈는 8086 마이크로프로세서의 '리얼 모드'로 실행되었기 때문에 1MB의 메모리에 접근할 수 있었습니다. 반면에, 윈도우즈 2.0 직후에 발표된 윈도우즈/386은 인텔 386 마이크로프로세서의 '가상 86 모드'를 사용함으로써 여러 도스 프로그램을 서로 다른 윈도우즈에서 실행하면서 각 프로그램이 하드웨어에 직접 접근할 수 있었습니다. 이후 발표된 윈도우즈 2.1은 일관성을 위해 윈도우즈/286으로 명명되었습니다.

 

윈도우즈 3.0은 1990년 3월 22일에 발표되었습니다. 이전의 윈도우즈/286과 윈도우즈/386은 윈도우즈 2.0에 이르러 하나의 제품으로 통합되었습니다. 윈도우즈 3.0의 큰 변화는 인텔 286, 386, 486 마이크로프로세서의 16비트 보호 모드 지원이었습니다. 이로 인해 윈도우즈와 윈도우즈 애플리케이션은 16MB의 메모리에 접근할 수 있었습니다. 또한 프로그램을 실행하고 파일을 관리하는 윈도우즈 '셸' 프로그램을 새롭게 단장하였습니다. 윈도우즈 3.0의 발표로 윈도우즈는 가정과 사무실 PC의 운영체제로 발판을 마련하였습니다.

 

윈도우즈 역사를 얘기할 때 OS/2를 빼놓을 수는 없습니다. OS/2는 도스와 윈도우즈의 대안으로 마이크로소프트가 IBM과 협력하여 개발한 운영체제입니다. OS/2 1.0은 1987년 말에 발표되었는데, 인텔 286 이상 마이크로프로세서에서 실행되었고 문자 모드 환경만 지원하였습니다. 그래픽 환경을 지원하는 프리젠테이션 관리자는 1988년 10월에 발표된 OS/2 1.1부터 포함되었습니다. 원래 PM의 그래픽 API 차이로 인해 소프트웨어 제조사가 두 플랫폼을 지원하기 어려웠기 때문입니다.

 

1990년 9월경, IBM과 마이크로소프트의 갈등이 극에 달했고 결과적으로 두 회사는 갈라서게 되었습니다. IBM은 OS/2를 인수했고, 마이크로소프트는 윈도우즈가 자신의 전략적 운영체제의 핵심임을 분명히 하였습니다. 여전히 OS/2의 열렬한 추종자가 있기는 했지만 윈도우즈만큼 대중적이지는 못했습니다.

 

윈도우즈 3.1은 1992년 4월에 발표되었습니다. 몇 가지 중요한 변화를 나열하면, 트루타입 폰트, 멀티미디어, OLE, 그리고 표준화된 대화상자를 들 수 있습니다. 이전 버전과 달리 윈도우즈 3.1은 보호 모드로만 실행되었고, 최소 !MB의 메모리가 장착된 286 또는 386 프로세서가 필요하였습니다.

 

1993년 7월에 발표된 윈도우즈 NT는 인텔 386, 486, 펜티엄 마이크로프로세서를 지원하는 최초의 32비트 운영체제였습니다. 윈도우즈 NT에서 실행되는 프로그램은 32비트 주소 공간에 접근할 수 있었고, 32비트 명령 셋을 사용하였습니다. 윈도우즈 NT는 인텔 계열 이외의 프로세서에도 이식할 수 있게 설계되었으므로 몇몇 RISC 기반 워크스테이션에서도 동작하였습니다.

 

윈도우즈 95는 1995년 8월에 발표되었습니다. 윈도우즈 NT와 마찬가지로 윈도우즈 95는 인텔 386이상 프로세서의 32비트 모드를 지원하였습니다. 윈도우즈 95는 윈도우즈 NT의 몇 가지 특징(예를들면 고수준 보안, RISC 기반 기계어로의 이식성 등)이 누락되었지만 상대적으로 적은 하드웨어 자원을 요구한다는 장점이 있었습니다.

 

1996년 8월에는 윈도우즈 NT 4.0이 발표되었습니다. 윈도우즈 NT 4.0은 윈도우즈 95와 동일한 사용자 인터페이스에 윈도우즈 NT 3.x의 안정성을 이어받고 새로운 기능을 추가함으로써 상업적으로도 상당한 성공을 거두었습니다. 윈도우즈 NT 4.0은 제공하는 기능과 목적에 따라 총 4개의 버전(워크스테이션, 서버, 엔터프라이즈 서버, 터미널 서버)이 있습니다.

 

윈도우즈 98은 1998년 6월에 발표되었는데 이전 버전과 비교할 때 수행 성능과 하드웨어 지원, 그리고 인터네과 WWW(World Wide Web)의 긴밀한 통합 등 여러 측면이 향상되었습니다.

 

1999년 5월에 발표된 윈도우즈 98 SE(Second Edition)은 윈도우즈 98의 안정성을 강화하면서 몇 가지 기능을 추가하였습니다. 그 중 대표적인 것은 인터넷 연결 공유 기능이었습니다. 윈도우즈 9x 계열의 마지막 버전인 윈도우즈 ME(Millennium Edition)는 2000년 6월에 발표되었는데, 윈도우즈 98의 사용자 인터페이스를 약간 변경하였고, 새로운 시스템 기능과 유용한 소프트웨어를 추가하였습니다.

 

윈도우즈 ME와 같은 해 2월에 발표된 윈도우즈 2000은 윈도우즈 ME와 동일한 사용자 인터페이스에 윈도우즈 NT 4.0의 안정성을 이어받고 새로운 기능을 추가함으로써 워크스테이션과 서버시장에서 성공을 거두었습니다. 윈도우즈 2000은 제공하는 기능과 목적에 따라 총 4개의 버전(프로페셔널, 서버, 어드밴스드 서버, 데이터센터 서버)이 있습니다.

 

윈도우즈 9x 계열과 윈도우즈 NT/2000은 2001년 10월에 발표된 윈도우즈 XP에 이르러 완전히 통합되었습니다. 윈도우즈 XP는 새로운 사용자 인터페이스와 다양하고 편리한 기능, 그리고 윈도우즈 NT/2000과 같은 안정성을 제공합니다. 또한 제공하는 기능과 목적 그리고 하드웨어에 따라 다양한 버전(홈, 프로페셔널, 미디어 센터, 임베디드, 태블릿 PC 등)이 존재합니다.

 

윈도우즈 2000 서버의 뒤를 이은 윈도우즈 서버 2003은 2003년 3월에 발표되었습니다. 윈도우즈 서버 2003은 윈도우즈 XP와 (거의) 동일한 기능을 제공할 뿐만 아니라 서버에 최적화된 운영체제 기능과 각종 소프트웨어를 제공합니다.




'IT' 카테고리의 다른 글

아이폰 OS를 알아보자  (0) 2016.09.11
아두이노 프로그래밍 시작하기  (0) 2016.09.10
타이젠 os 알아보기  (0) 2016.09.04
GCC 컴파일 시작하기  (0) 2016.09.03
안드로이드 앱 만들기 특징과 구조  (0) 2016.09.02
댓글