3 minute read

‘혼자 공부하는 컴퓨터구조+운영체제 - 강민철’ 책을 참고하여 작성한 포스트입니다.

운영체제(Operating System)란?

프로그램 실행에 필요한 요소들인 시스템 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 운영체제

  • 운영체제도 프로그램이므로 실행되기 위해서 메모리에 적재되어 있어야 한다.
  • 다만, 운영체제는 매우 특별한 프로그램이므로 항상 컴퓨터가 부팅될 때 메모리 내 커널 영역(kernel space) 이라는 공간에 따로 적재되어 실행된다.
  • 커널 영역을 제외한 나머지 영역은 사용자가 이용하는 응용 프로그램이 적재되는 영역이며 사용자 영역(user space) 라고 부른다.
  • 운영체제가 없다면 하드웨어를 조작하는 코드를 개발자가 모두 직접 작성해야 하므로 없어서는 안되는 프로그램이다!

응용 프로그램(application software)은 사용자가 특정 목적을 위해 사용하는 일반 프로그램을 의미한다.

  • 운영체제는 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이다.
  • 운영체제를 통해 하드웨어와 프로그램을 이해하고 문제 해결의 실마리를 찾을 수 있다.

커널(kernel)

커널은 운영체제의 핵심 서비스를 담당하는 부분이다.
핵심 서비스에는, 자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능 등이 있다.

  • 운영체제를 지칭할 때 대부분 커널을 지칭한다고 봐도 무방하다.
  • 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스에는 대표적으로 사용자 인터페이스가 있다.
  • 사용자 인터페이스(UI, user interface)
    • 그래픽 유저 인터페이스(GUI, graphical user interface)
      • 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
    • 커맨드 라인 인터페이스(CLI, command line interface)
      • 명령어를 기반으로 컴퓨터와 상호작용하는 인터페이스

이중 모드와 시스템 호출

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

이중모드

  • 운영체제는 응용 프로그램의 요청을 받고 대신 자원에 접근하여 요청받은 작업을 수행한다.
  • 운영체제의 역할은 이중 모드(dual mode) 로써 구현된다.
  • 이중모드란 CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식이다.
    1. 사용자 모드(user mode)
      • 커널 영역의 코드를 실행할 수 없는 모드이다.
      • 일반적인 응용 프로그램은 기본적으로 사용자 모드로 실행된다.
      • 자원에 접근이 불가능하다.
    2. 커널 모드(kernel mode)
      • 커널 영역의 코드를 실행할 수 있는 모드
      • CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있다.

CPU가 사용자 모드인지, 커널 모드인지는 플래그 레지스터 속 슈퍼바이저 플래그를 통해 확인이 가능하다.

시스템 호출

  • 운영체제 서비스를 제공받기 위한 요청을 시스템 호출(system call) 이라고 한다.
  • 시스템 호출은 일종의 인터럽트이며, 정확히는 소프트웨어적인 인터럽트이다.
  • 특정 명령어에 의해 발생하는 인터럽트를 소프트웨어 인터럽트 라고 한다.
  • 일반적인 응용 프로그램은 실행 과정에서 운영체제 서비스들을 매우 빈번하게 이용하며, 그 과정에서 시스템 호출을 빈번하게 발생시킨다.

시스템 호출 과정

  1. 응용 프로그램은 운영체제의 서비스가 필요 시, 시스템 호출을 발생시켜 커널 모드로 전환한다.
  2. 운영체제 내의 코드를 실행한다.
  3. 필요 작업이 완료되면 다시 사용자 모드로 복귀해 실행을 계속해 나간다.

운영체제의 핵심 서비스

운영체제의 핵심 서비스에는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리 등이 있다.

프로세스 관리

  • 실행중인 프로그램을 프로세스(process) 라고 한다.
  • 일반적으로 하나의 CPU는 한 번에 하나의 프로세스만 실행이 가능하므로 CPU는 여러 프로세스들을 조금씩 번갈아 가며 실행한다.
  • 다양한 프로세스를 일목요연하게 관리하고 실행되게 해 주는 것이 핵심 서비스 중 하나다.

자원 접근 및 할당

  • 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 준다.

CPU

  • 일반적으로 메모리에는 여러 프로세스가 적재되고, 하나의 CPU는 한 번에 하나의 프로세스만 실행 가능하다.
  • 운영체제는 프로세스들에 공정하게 CPU를 할당해 주는 역할을 한다.
    (자세한 것은 나중에 포스트)

메모리

  • 운영체제는 새로운 프로세스가 적재될 때마다 어느 주소에 어떻게 적재할지 결정한다.
    (자세한 것은 나중에 포스트)

입출력 장치

  • 인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널 영역에 있다.
  • 입출력장치가 발생시키는 하드웨어 인터럽트도 마찬가지다.
  • CPU에 하드웨어 인터럽트 요청 신호를 보내면 CPU는 하던 일을 백업한 뒤 커널 영역에 있는 인터럽트 서비스 루틴을 실행한다.
    (자세한 것은 나중에 포스트)

파일 시스템(file system) 관리

  • 운영체제는 보조기억장치 속 데이터를 파일과 디렉터리로 관리한다.
    (자세한 것은 나중에 포스트)

가상 머신과 이중 모드의 발전

  • 가상 머신(virtual machine) 이란 소프트웨어적으로 만들어낸 가상 컴퓨터이다.
  • 설치된 운영체제에 가상 머신을 실치 및 실행한다면, 그 가상 머신 또한 응용 프로그램이며, 따라서 사용자 모드로 작동한다.
  • 문제는 가상 머신에 설치된 응용프로그램이 운영체제 서비스를 제공받기 위해 커널 모드로 전환되어야 하는데, 가상 머신에 설치된 운영체제도 사용자 모드로 작동하면 운영체제 서비스를 제공받기 어렵다.
  • 그래서 가상화를 지원하는 CPU는 가상 머신을 위한 모드인 하이퍼 바이저 모드를 따로 둬서 가상 머신 상의 응용 프로그램들은 하이퍼바이저 모드로 운영체제 서비스를 받게 한다.

정리

  • 커널은 운영체제의 핵심 기능을 담당한다
  • 이중 모드는 CPU가 명령어를 실행하는 모드를 커널 모드와 사용자 모드로 구분하는 방식이다
  • 시스템 호출은 운영체제의 서비스를 제공받기 위해 커널 모드로 전환하는 방법이다
  • 대표적인 운영체제 서비스로 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있다.

Tags:

Categories:

Updated:

Leave a comment