📌 Index
- 운영체제의 정의
- 운영체제의 구조
- 운영체제의 역할
✔️ 운영체제의 정의
운영체제(Operating System)란, 컴퓨터 하드웨어 바로 윗 단에 설치되는 소프트웨어로, 사용자 및 다른 소프트웨어와 하드웨어를 연결한다.
운영체제 자체도 하나의 소프트웨어로서 전원이 켜짐과 동시에 메모리에 올라간다. 그러나 운영체제와 같이 규모가 큰 프로그램이 모두 메모리에 올라간다면 한정된 메모리 공간의 낭비가 심할 것이고, 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려 놓는다. 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다.
이때 메모리에 상주하는 운영체제의 부븐을 커널(kernel)이라고 부르며, 운영체제의 핵심 부분이라고 할 수 있다.
✔️ 운영체제의 구조
컴퓨터는 유저 프로그램이 맨 위에 있고, 그 다음으로 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조이다. 그리고 여기서 GUI, 시스템 콜, 커널, 드라이버 부분이 바로 운영체제를 지칭한다. (참고로 GUI가 없고, CUI만 있는 리눅스 서버도 존재)
커널과 인터페이스
- 커널 : 프로세스 관리, 메모리 관리, 저장 장치와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로, 운영체제의 성능을 좌우한다. 자동차가 운영체제라고 한다면 엔진이 커널에 해당한다.
- 인터페이스(GUI 또는 CUI) : 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려주는 역할을 한다. 자동차가 운영체제라고 한다면, 핸들, 브레이크, 계기판 등이 인터페이스에 비유된다.
시스템 콜과 드라이버
- 시스템 콜 : 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다. 즉, 시스템 콜은 커널이 자신을 보호하기 위해 만든 인터페이스로, 자원을 이용하기 위해서는 시스템 콜이라는 인터페이스를 사용하여 접근해야한다.
- 드라이버 : 응용 프로그램(유저 프로그램)과 커널의 인터페이스가 시스템 호출이라면, 커널과 하드웨어의 인터페이스는 드라이버가 담당한다. 하드웨어의 종류는 다양하고 직접 각 하드웨어에 맞는 인터페이스를 개발하기는 어렵다. 따라서 커널은 입출력의 기본적인 부분만 제작하고, 하드웨어의 특성을 반영한 소프트웨어를 하드웨어 제작자에게 받아 커널이 실행될 때 함께 실행되도록 한다. 즉, 하드웨어를 제어하기 위한 소프트웨어가 드라이버이다.
✔️ 운영체제의 역할
운영체제는 CPU 스케줄링과 프로세스 관리, 메모리 관리, 디스크 파일 관리, 입출력 관리를 수행한다.
CPU 스케줄링과 프로세스 관리
CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되므로, 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리해야한다. 프로세스는 현재 실행 중인 프로그램이다.
운영체제는 CPU 소유권을 어떤 프로세스에 할당할 것인 지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 대표적인 스케줄링 기법으로는 선입선출, 라운드 로빈, 우선 수위 기법 등이 있다.
메모리 관리
메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내의 기억 장치이며, 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야한다. 이때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 메커니즘이 필요하다.
운영체제는 주소를 통해 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는 지를 파악하고,
한정된 메모리를 어떤 프로세스에 얼만큼 할당해야 하는지를 관리한다.
디스크 관리
디스크의 용량은 한정적이다. 따라서 사용자가 필요로 하는 파일을 최대한 효율적으로, 최대한 많은 양의 파일을 저장할 수 있도록 해야한다. 연속적인 공간에 저장하여 파일을 찾기 쉽게 저장할 것인지, 많은 양의 파일을 저장하기 위해 파일을 조각조각 잘라 여기저기에 저장할 것인지를 판단한다.
디스크에서 파일을 읽어올 때는 디스크에 있는 헤더가 해당 파일을 찾아 읽어온다. 이때 최소한의 움직임으로 최대한의 효율을 내기 위해 노력한다. 디스크 헤더가 읽으려는 파일의 위치로 가는 도중, 새로운 파일 요청이 들어오면 그 요청부터 수행하게된다.
즉, 운영체제는 한정적인 용량의 디스크에 파일을 어떠한 방법으로 보관할 지 관리한다.
입출력 관리
키보드, 마우스, 모니터 등 우리가 접하는 수많은 장치가 입출력(I/O) 장치이다. 이러한 I/O 디바이스들은 CPU에 상당히 느리다. 따라서 이 디바이스들과 컴퓨터가 어떠한 방식으로 정보를 주고 받는 지가 컴퓨터의 성능과 직결된다. I/O 디바이스들은 각각 I/O 디바이스 컨트롤러라는 독자적인 CPU를 갖고 있으며, 인터럽트라는 요소를 중심으로 컴퓨터와 정보를 주고 받는다.
즉, 운영체제는 I/O 디바이스와 컴퓨터 간에 데이터를 주고 받는 것을 관리한다.
Reference