본문 바로가기

운영체제의 큰 그림

@9ky02025. 5. 9. 17:10

역할

운영체제의 핵심 기능은 '자원 할당 및 관리'이다

 

자원은 프로그램 실행에 필요한 요소를 의미한다. '데이터'가 될 수도 있고, '부품'이 될 수도 있다.

 

운영체제는 사용자가 실행하는 응용 프로그램을 대신해 CPU, 메모리, 보조기억장치 등의 컴퓨터 부품에 접근해 효율적으로 사용하도록 관리한다. 또 응용 프로그램이 컴퓨터 부품들을 효율적으로 할당받아 문제없이 실행할 수 있도록 응용 프로그램에게 자원을 할당한다.

 

CPU 관리: 스케줄링

운영체제는 한정된 자원인 CPU를 실행 중인 모든 프로그램들이 공정하고 합리적으로 할당받도록 할당 순서와 사용 시간을 결정한다. 이것을 CPU 스케줄링이라 부른다.

메모리 관리: 가상 메모리

운영체제는 새롭게 실행하는 프로그램을 메모리에 적재하고, 종료된 프로그램을 메모리에서 삭제한다. 동시에 낭비되는 메모리 용량이 없도록 효율적으로 관리해야 한다. 이를 위해 가상 메모리 기술을 활용한다.

가상 메모리라는 메모리 관리 기법을 통해, 실제 물리적인 메모리 크기보다 더 큰 메모리를 이용할 수 있게 한다.

파일/디렉터리 관리: 파일 시스템

보조기억장치는 메모리보다 더 큰 용량을 가졌기 때문에 더욱 일목요연하게 관리해야 한다. 이를 위해 운영체제는 파일 시스템을 활용한다.

파일 시스템은 보조기억장치 내 정보를 파일 및 폴더(디렉터리) 단위로 접근, 관리할 수 있도록 만드는 운영체제 내부 프로그램이다.

프로세스 및 스레드 관리

실행 중인 프로그램은 프로세스라 하며, 이러한 프로세스를 이루는 실행 단위를 스레드라고 부른다.

메모리에는 여러 프로세스가 적재될 수 있는데, 운영체제는 이 프로세스에 필요한 자원을 할당하고, 스레드는 프로세스가 할당받은 자원을 이용해 작업을 수행한다.

운영체제는 동시다발적으로 실행되는 프로세스와 스레드가 올바르게 처리되도록 실행 순서를 제어하고 자원을 적절하게 배분할 수 있어야 한다.

같은 프로그램이어도 여러 번 실행하면 별도의 프로세스가 될 수 있음

시스템 콜, 이중 모드

운영체제 또한 프로그램이기 때문에 반드시 메모리에도 적재되어야 한다. 다만 사용자 프로그램이 메모리 내 사용자 영역에 적재되는 것과 달리, 운영체제는 커널 영역에 별도로 적재되어 실행된다. 다시 말해, 운영체제의 기능을 제공받기 위해서는 '커널 영역에 적재된 운영체제 코드를 실행해야 함'을 의미한다.

웹 브라우저나 게임과 같은 응용 프로그램은 기본적으로 CPU, 메모리 같은 자원에 직접 접근하거나 조작할 수 없다. 접근하거나 작하는 운영체제 코드를 실행해야 하는데, 이를 시스템 콜이라 부른다.

시스템 콜은 운영체제의 서비스를 제공받기 위한 인터페이스로, 일종의 함수 형태를 가진다. 따라서 어떤 기능을 제공받고자 한다면 다음과 같이 해당하는 시스템 콜을 호출하면 된다.

내부적으로 시스템 콜이 호출되면 다음과 같은 작업이 수행된다.

  1. 소프트웨어 인터럽트 발생
  2. CPU 커널 모드로 전환
  3. 운영체제 코드 실행
  4. 사용자 모드로 재전환

자원에 접근하는 입출력 명령어와 같이 운영체제가 인터럽트를 발생시키는 특정 명령어가 존재하는데, 이러한 명령어에 의해 발생하는 인터럽트를 소프트웨어 인터럽트라 부른다.

시스템 콜 또한 소프트웨어 인터럽트의 일종으로, 1. 사용자 영역을 실행하는 과정에서 시스템 콜이 호출되면 CPU는 현재 수행 중인 작업을 백업하고 2. 커널 영역 내 인터럽트를 처리하기 위한 코드를 실행한 뒤 3. 다시 사용자 영역의 코드 실행을 재개하는 루틴을 가진다.

또 CPU는 명령어를 실행하는 과정에서 사용자 영역에 적재된 코드를 실행할 때는 사용자 모드, 커널 영역에 적재된 코드를 실행할 때는 커널 모드로 구분해서 실행한다. 이렇게 2개의 모드로 구분하여 실행하는 것을 이중 모드라 부른다. 이는 플래그 레지스터 속 슈퍼아비저 플래그를 보면 알 수 있다.

사용자 모드는 운영체제 서비스를 제공받을 수 없는, 커널 영역의 코드를 실행할 수 없는 모드이다. 이 때의 CPU는 입출력 명령어와 같이 자원에 접근하는 명령어를 만나도 실행하지 않는다. 즉 원천적으로 자원에 접근하는 것을 막는다.

커널 모드는 운영체제 서비스를 제공받을 수 있는, 커널 영역의 코드를 실행할 수 있는 모드이다. 이 때의 CPU는 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다 운영체제는 이 커널 모드로 실행되기 때문에 자원에 접근할 수 있다.

 

'Computer Science > Operating System' 카테고리의 다른 글

가상 메모리  (0) 2025.10.17
프로세스와 스레드  (3) 2025.10.13
Stack 메모리 vs Heap 메모리  (0) 2025.09.25
9ky0
@9ky0 :: Hello, 9ky0!

공감하셨다면 ❤️ 구독도 환영합니다! 🤗

목차