소프트웨어의 계층 구조
소프트웨어에도 지층처럼 계층이 존재하며 이렇게 나눔으로써 프로그래머가 복잡성을 처리하는 데 도움이 되는 방법 중 하나이다.
- 하드웨어 - 시스템이 실행중이더라고 버스를 이용하여 장치를 추가하고 제거할 수 있다는 점을 제외하면 하드웨어는 거의 변경할 수 없다.
- 운영체제 - 엄밀히 해서 커널이라고 하며 운영체제는 하드웨어의 특수한 속성을 숨기고 애플리케이션에는 특정 하드웨어의 여러 가지 세부 사항과 독립된 인터페이스 또는 외관을 제공한다.
- 라이브러리 집합 - 프로그래머 개개인이 기능을 새로 만들어 낼 필요가 없도록 일반적으로 유용한 서비스를 제공한다. date명령어부터 암호기법 등등 다양한 범위의 라이브러리가 존재한다. 그래서 대부분의 윈도우 애플리케이션이나 기본 그래픽 요성 요소가 비슷해 보이는 것이다.
가끔은 커널, 라이브러리, 애플리케이션 간의 구분이 모호할 때가 있다. 중요한 것은 애플리케이션이 다른 애플리케이션의 동작에 간섭하지 않도록 하는 데 필요한 것은 무엇이든 운영체제의 역할에 속한다는 것이다. 같은 논리로 브라우저는 운영 체제의 일부가 아니다. 어떤 브라우저는 공유된 자원이나 제어 기능에 간섭하지 않으면서 하나 또는 여러 개가 동시에 실행될 수 이기 때문이다. 이 이야기는 미국 법무부와 마이크로소프트 간의 반독점 소송을 통해 굉장히 유명해진 이야기다.
요약
애플리케이션은 사용자가 원하는 작업을 처리한다. 운영체제는 애플리케이션이 자원을 효율적이고 공평하게 공유하면서 서로 간섭하지 않을 것을 보장하는 조정자 또는 교통경찰 역할을 한다. 기본적으로오늘날 사용되는 모든 컴퓨터는 운영체제가 있다.