본문 바로가기
시리즈/운영체제

[운영체제] 운영체제 시작하기

by 되고싶은노력가 2025. 2. 4.

운영체제란

프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 자원이라고 합니다. 이런 자원을 프로그램에 적절히 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램운영체제(Operating System)이라 합니다.

 

운영체제도 여느 프로그램과 마찬가지로 메모리에 적재되어야 합니다. 다만, 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행됩니다. 커널 영역을 제외한 나머지 영역을 사용자 영역이라 하는데 다시 말해 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 실행을 돕습니다.

 

응용 프로그램(사용자 영역에서 실행되는 프로그램)을 실행되게 하려면 반드시 CPU가 필요합니다. 여기서 CPU 사용을 어떻게 배분하는지 또한, 운영체제가 관리합니다.

 

이렇게 운영체제의 역할은 흔히 정부에 비교됩니다. 응용 프로그램에 자원을 효율적으로 배분하고, 실행할 프로그램들이 지켜야 할 규칙을 만들어 컴퓨터 시스템 전체를 관리합니다. 또한 정부가 여러 부서로 나누어져있는 것처럼 운영체제 또한 자원별로 기능이 나누어져 있습니다.


운영체제의 큰 그림

운영체제의 심장, 커널

운영체제는 현존하는 프로그램 중 규모가 가장 큰 프로그램 중 하나입니다. 그만큼 제공하는 서비스도 매우 다양한데요. 그중에서도 가장 핵심적인 서비스를 담당하는 부분을 커널이라고 합니다.

 

운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스도 있는데 대표적으로 사용자 인터페이스가 있습니다. 사용자 인터페이스는 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로입니다.

 

사용자 인터페이스의 종류에는 그래픽 유저 인터페이스커맨드 라인 인터페이스 두 가지가 있습니다.

그래픽 유저 인터페이스
커맨드 라인 인터페이스


이중 모드와 시스템 호출

운영체제는 사용자가 실행하는 응용 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지하여 자원을 보호합니다.

예를 들어 응용 프로그램이 실행 과정에서 하드 디스크에 접근하여 데이터를 저장하려면 운영체제에 도움을 요청하고 운영체제는 커널 영역 내의 하드 디스크에 데이터를 저장하는 코드를 실행하여 대신 수행해 줍니다.

 

이러한 운영체제의 문지기 역할은 이중 모드로써 구현됩니다. 이중 모드CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식입니다.

 

사용자 모드는 운영체제 서비스를 제공받을 수 없는 실행 모드 즉, 커널 영역의 코드를 실행할 수 없는 모드입니다. 반면 커널 모드는 운영체제 서비스를 제공받을 수 있는 모드입니다. 즉, 커널 영역의 코드를 실행할 수 있는 모드입니다.

 

요컨대 사용자 모드로 실행되는 프로그램이 운영체제 서비스를 제공 받으려면 운영체제에 요청을 보내 커널 모드로 전환되어야 합니다. 이때 보내는 요청을 시스템 호출(System call)이라고 합니다.

 

시스템 호출은 일종의 인터럽트로 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사하지만, 정확히는 소프트웨어적인 인터럽트입니다.

 

일반적으로 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용합니다. 그 과정에서 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행됩니다.


운영체제의 핵심 서비스

프로세스 관리

실행 중인 프로그램프로세스라 합니다. 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행할 수 있기에 CPU는 이 프로세스들을 조금씩 번갈아 가며 실행합니다.

 

자원 접근 및 할당

모든 프로세스는 실행을 위해 자원을 필요로 합니다. 그리고 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 필요한 자원을 할당해 줍니다.

 

먼저 어느 프로세스부터 CPU를 이용하게 할 것인지, 얼마나 오래 CPU를 이용하게 할지를 결정할 수 있어야 하며 이를 CPU 스케줄링이라고 합니다. 또한 메모리, 입출력 장치 등의 자원 접근과 할당을 돕습니다.

 

파일 시스템 관리

컴퓨터를 사용할 때 여러 파일을 열고, 생성하고, 삭제하고, 관리하는 등의 작업을 파일 시스템이라 합니다.