도서📚 <쉽게 배우는 운영체제>를 바탕으로 정리했습니다
운영체제 구조
프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 자동차에 비유하자면 엔진에 해당한다. 운영체제의 성능은 커널이 좌우한다.
핵심기능 | 설명 |
---|---|
프로세스 관리 | 프로세스에 CPU를 배분하고 작업에 필요한 제반 환경을 제공한다 |
메모리 관리 | 프로세스에 작업공간을 배치하고 실제 메모리보다 큰 가상공간을 제공한다 |
파일 시스템 관리 | 데이터를 저장하고 접근할 수 있는 인터페이스를 제공한다 |
입출력 관리 | 필요한 입력과 출력 서비스를 제공한다 |
프로세스 간 통신 관리 | 공동 작업을 위한 각 프로세스 간 통신 환경을 지원한다 |
자동차에는 엔진 뿐만 아니라 사람이 조작할 수 있는 핸들과 브레이크도 필요하다. 또한 현재 시속, 기어의 상태, 엔진의 온도 등을 알려주는 계기판이 있어야하는데 이를 인터페이스라고 한다. 운영체제에도 인터페이스가 있는데, 이는 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려주는 역할을 한다
시스템 호출은 커널이 자신을 보호하기 위해 만든 인터페이스로 시스템 자원의 사용과 관련된 함수이다.
운영체제는 사용자가 컴퓨터 자원에 직접 접근하는 것을 차단한다. 따라서 사용자는 자원을 이용하려면 시스템 호출이라는 인터페이스를 이용하여 접근해야 한다.
예를 들어 두개의 응용프로그램이 직접 하드디스크에 데이터를 저장한다면, 기존의 데이터가 지워지거나 나의 데이터가 다른 응용프로그램의 직접접근에 의해 지워질 수도 있다.
시스템 호출을 통해 접근한다면 커널이 제공하는 write()함수를 사용해 데이터를 저장해 달라고 요청한다. 응용프로그램은 자신의 데이터가 어디에 어떻게 저장되는지 알 수 없다. 하지만 자신이 저장한 데이터를 읽고 싶다면 read()함수로 시스템 호출을 이용해 가져올 수 있다.
응용프로그램과 커널의 인터페이스가 시스템 호출이라면 커널과 하드웨어의 인터페이스가 드라이버이다. 컴퓨터 하드웨어의 종류는 아주 않은데, 운영체제가 모든 하드웨어를 다 사용할 수 있는 환경을 제공하려면 각 하드웨어에 맞는 프로그램을 직접 개발해야 한다. 그러나 커널이 모든 하드웨어에 맞는 인터페이스를 다 개발하기는 어렵다. 또한 각 하드웨어의 특성은 하드웨어 제작자가 가장 잘 알고 있기 때문에 하드웨어 제작자가 관련 소프트웨어를 만드는 것이 더 유리하다.
커널은 입출력의 기본적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될때 함께 실행되도록 한다. 이때 하드웨어 제작자가 만든 소프트웨어를 디바이스 드라이버라고 부른다.
마우스, 키보드 등의 디바이스 드라이버는 커널에 포함되어 있어 컴퓨터에 꽂으면 동작한지만, 그래픽카드, 프린터와 같이 복잡한 디바이스 드라이버는 사용자가 직접 설치해야한다.
운영체제 역할
우리는 컴퓨터로 문서를 작성하고 음악을 듣고 웹서핑을 한다. 이때 키보드, 네트워크, 사운드 카드 등의 컴퓨터 자원을 사용하는데, 운영체제는 이러한 자원을 응용 프로그램에 나누어주어 사용자가 원활하게 작업할 수 있도록 돕는다.
컴퓨터 내 자원 관리 뿐만 아니라 악의적인 또는 미숙한 사용자로부터 자원을 보호하는 것도 중요하다. 어떤 응용 프로그램이 남의 영역을 침범한다면 다른 사람의 작업을 망치거나 데이터를 지울수도 있기 때문이다. 이러한 비정상적인 작업으로부터 컴퓨터 자원을 지키는 것도 운영체제의 역할 중 하나이다.
우리는 다양한 종류의 하드웨어를 사용한다. 마우스만 해도 버튼이 2개인 것과 3개인 것, 휠이 있는 것과 없는 것 등 다양하다. 어떤 제품을 사용할때마다 별도의 소프트웨어를 서치해야 한다면 아주 불편할텐데, 운영체제는 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다.
운영체제는 CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 지원하기 때문에 우리는 어떤 회사에서 만든 하드웨어인지 신경쓸 필요가 없다.
하드웨어 인터페이스 지원은 드라이버를 컴퓨터에 설치해야 가능하다. 드라이버는 하드웨어 장치와 상호작용하기 위해 만들어진 컴퓨터 프로그램으로 장치 드라이버, 디바이스 드라이버, 장치 제어기, 소프트웨어 드라이버라고도 부른다. 드라이버는 운영체제를 설치할때 자동으로 설치되지만, 일부 하드웨어의 경우 따로 설치해야 하는데, 이러한 드라이버를 하드웨어 인터페이스라고 부른다. 운영체제는 하드웨어 인터페이스가 자동으로 설치되게 함으로써 하드웨어의 종류와 상관없이 사용할 수 있게 해준다.
하드웨어 인터페이스가 다양한 부품을 편리하게 사용하기 위한 것이라면, 사용자 인터페이스는 사용자가 운영체제를 편리하게 사용하도록 지원하기 위한 것이다. 과거에 유닉스, MS-DOS와 같은 운영체제로 작업할 때는 마우스없이 키보드만으로 사용했기 때문에 일반 사용자가 사용법을 배우기 쉽지 않았다. 그러나 지금은 운영체제가 그래픽 사용자 인터페이스(Graphical User Interface, GUI)를 제공하므로 마우스로 대부분의 작업을 수행한다.