OS는 모든 전자기기를 운영할 때 필요한 시스템을 일컫는 말입니다. 대중적으로 사용되는 OS도 있고 각 제품 별로 필요한 만큼만 기능을 만들어둔 OS도 있습니다. 물론 OS는 사용자들이 기기를 조작하기 쉽도록 만드는 것이 목적이기 때문에 일반 사용자들이 활용할 일이 없는 곳에서는 다양한 기능을 가진 OS를 만들 필요는 없는 것입니다. 그래도 OS가 왜 필요하고 어떤 식으로 기능하는지를 알아볼 필요가 있을 것 같습니다.
OS는 왜 필요한가
컴퓨터를 워드프로세서로 사용하는 유저도 컴퓨터를 게임으로 사용하는 유저도 반드시 필요한 것은 OS라고 불리는 Operationg System이다. OS는 화면에 나오는 표시를 비롯한 키보드 입력 등 기본적인 일을 행하는 것으로 8비트나 16비트나 32비트 등 모든 컴퓨터에 반드시 필요한 존재다. 16비트나 32비트 PC에서 가장 유명한 것은 MS-DOS로 유저로부터 가장 많은 사랑을 받고 있다. 그리고 전문 분야에는 유닉스라는 OS가 널리 보급되었다. 그렇다면 이러한 OS의 필요성은 어디에 있는 것일까? 한마디로 기종 간의 통일을 이룰 수 있기 때문일 것이다. 여기서 말하는 통일이란 기종에 관계없이 프로그램이나 데이터를 읽을 수 있다. 프로그램을 어떤 기종에서도 사용할 수 있다는 점으로 적어도 같은 OS에 같은 종류의 플로피디스크드라이브를 사용한다면 기종에 관계없이 프로그램 및 데이터를 사용할 수 있다. 또한 OS가 기본적으로 지원하고 있는 기능에는 각 OS에 따라 다소 차이가 있지만 MS-DOS를 예로 들면 문자표시와 기본적인 키보드 입력과 파일 입출력과 RS-232C 입출력 등이 있다. 따라서 이들 기능만 사용한 소프트웨어는 OS가 같다면 기종을 불문하고 사용할 수 있다.
기본적으로 OS에서 지원하지 않는 기능
MS-DOS가 어디까지 지원하는지를 알아보자 예를 들어 텍스트 표시는 기본적으로 가능해도 그래픽 표시는 불가능하다는 것을 알 수 있다. 또한 보통 문자는 입력이 가능해도 펑션키의 식별은 불가능하다. 결국 워드프로세서나 스프레드 시트 등의 소프트웨어는 OS에 의존하지 않고 독자의 프로그램을 만들어 처리해야만 하는 부분이 있다. 보통 이러한 이유로 호환성을 무너뜨리는 원인 즉 워드프로세서 등이 어떤 기종 전용이 되는 이유이다. 이것은 MS-DOS에 국한된 것이 아니라 다른 OS에서도 마찬가지이다.
OS의 구조
OS는 BIOS부분과 OS 본체 부분으로 나누어진다. 이를 보면 하드웨어 사양이 A컴퓨터와 B컴퓨터가 서로 달라도 그 차이를 BIOS가 해결하고 OS 본체에서는 동일한 환경을 제공하고 있음을 알 수 있다. 앞에서 OS에 의존하지 않고 독자의 프로그램을 만들어 처리해야만 하는 부분이 있다고 했는데 애플리케이션 오른쪽 부분이 그를 위한 처리로 되어있다. 또 그 부분은 A 컴퓨터와 B 컴퓨터가 다르므로 A 컴퓨터용 소프트웨어를 B 컴퓨터에서 사용할 경우 이식작업을 할 필요가 있다. 일반적인 프로그래밍 언어와 유틸리티 등을 사용할 때의 관계일 경우 애플리케이션은 OS가 지원하고 있는 기능 밖에는 사용하지 않게 된다. 따라서 A 컴퓨터와 B 컴퓨터에서는 완전히 같은 것을 사용할 수 있다.
새로운 OS는 어떻게 나타나는가
1981년 MS-DOS의 최초버전인 PC-DOS는 IBM-PC 8088 CPU에서 사용되었는데 이 8088은 속도가 4.77 MHz였고 외부 8비트 버스인 까닭에 속도는 8비트와 거의 같거나 오히려 조금 느린 감도 있었다. 그러던 것이 1982년 1985년을 거쳐 1989년에 속도가 훨씬 빨라진 80286이나 80386을 거쳐 지금은 80486이 등장하였다. 그러면서 램 용량의 증가를 필요로 했고 이러한 현상은 새로운 OS를 요구했다. 최신 OS 경향의 하나는 새로운 CPU의 성능을 발휘하는 것이고 또 하나는 대용량 램에 대응한다는 것이다. 그리고 마지막으로는 여러 프로그램의 병렬 처리 즉 멀티태스크이다. 이것은 다음과 같이 설명할 수 있다. 여러 프로그램을 실행하고 싶다면 8088과 같은 구식 CPU에서는 불가능하다. 그러면서 새로운 CPU가 출현했고 그에 따른 램 용량이 증가하면서 새로운 OS가 출현하게 되는데 여기서 최신 OS의 궁극적인 목표는 여러 프로그램의 병렬 처리이다.
멀티태스크란 무엇인가 여러 개의 프로그램을 병행하여 실행시키는 것을 멀티태스크라 부른다. 멀티태스크는 원래 PC보다 상위기종의 컴퓨터에서는 일상적으로 사용되고 있다. 예를 들어 은행의 현금카드로 수백만 명이 돈을 인출할 수 있는 것도 멀티태스크가 가능하기 때문이다. 또한 PC통신을 예로 든다면 PC 통신에서 여러 회선이 지원되거나 채팅이나 워드프로세서로 인쇄를 하면서 다음 문장을 편집할 수 있는 것도 멀티태스크의 덕택이다. 과연 멀티태스크의 구조는 어떻게 되어있을까? 가장 위에는 스왑이라는 것이 있다. 이것은 지극히 작은 프로그램으로서 CPU가 어떠한 애플리케이션을 실행할지를 결정하는 것이다. 앞에서 병렬 처리라고 말을 했는데 CPU는 한 가지 작업밖에 할 수 없기 때문에 애플리케이션 A를 10밀리 초 동안 실행시킨 다면 다음 애플리케이션 B를 실행하고 또 10밀리 초 동안 실행된다면 다시 애플리케이션 A를 실행한다. 마지막 애플리케이션이 끝났다면 다시 반복하여 실행된다. 10밀리 초는 다소 숫자상의 차이는 없겠지만 이 정도로 시간을 세밀하게 나누었기 때문에 외부에서는 두 가지가 동시에 실행되는 것처럼 보이게 된다. 스왑이라 할지라도 실제로는 하나의 애플리케이션 프로그램을 짧은 시간이나 프로그램 교체를 위해 사용된다. 10밀리 초라는 시간을 길게 하면 병렬 처리가 실제로는 되지 않는 것처럼 보인다. 따라서 현재의 PC라면 10밀리 초가 적당할 것이다. 또 스왑의 좀 더 구체적인 처리방법이지만 그 레지스터의 내용을 전부 스택으로 옮기는 것과 다음 작업 스택에서 이전의 레지스터를 복귀시켜 점프하는 것 등이다.
지금은 멀티태스크가 당연시되는 시대이지만 당시에 멀티태스크는 가장 필요한 어려운 기능 중 하나였습니다. 멀티태스크에 큰 역할을 했던 것은 GUI OS의 등장이었습니다. 그래픽 유저 인터페이스라는 사용자들이 이미지화된 명령어 실행 체계를 단순화한 그런 OS가 등장한 것이었습니다. GUI OS로 인해 컴퓨터 사용자들은 폭발적으로 증가하게 됩니다.