[CS] 운영체제의 큰 그림

정은아·2024년 1월 19일
post-thumbnail

💡 커널이란 무엇인지 이해하고, 응용프로그램이 어떻게 운영체제의 도움을 받으며 실행되는지, 운영체제가 응용프로그램에 어떤 서비스를 제공하는지도 알아보자!

커널(kernel)

  • 운영체제의 핵심 서비스를 담당하는 부분이다.
  • 운영체제가 설치된 모든 기기에는 커널이 존재한다.
  • 어떤 커널을 사용하는지에 따라 응용 프로그램이 하드웨어를 이용하는 방법이 달라지고, 컴퓨터의 성능도 달라지게 된다.

사용자 인터페이스(UI / User Interface)

  • 운영체제가 제공하는 서비스 중 커널에는 포함되지 않는 서비스를 말한다.
    • ex. 사용자가 컴퓨터와 상호작용할 수 있는 통로 = 윈도우 바탕화면
  • 사용자 인터페이스에는 그래픽 유저 인터페이스커맨드라인 인터페이스가 있다.

그래픽 유저 인터페이스(GUI / Graphic User Interface)

  • 그래픽을 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스를 말한다.

커맨드라인 인터페이스(CLI / Command Line Interface)

  • 명령어 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스를 말한다.

이중 모드와 시스템 호출

  • 운영체제는 응용 프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록하여 자원을 보호한다. 일종의 문지기 역할을 수행하는 것이다. 이러한 운영체제의 문지기 역할은 이중모드로써 구현된다.
  • 이중 모드(dual mode) : CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식.
  • 사용자 모드(user mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드.
    커널 영역의 코드를 실행할 수 없다.
  • 커널 모드(kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드.
    커널 영역의 코드 실행 가능하다.
  • 시스템 호출(system call) : 시스템 콜이라고 하며, 사용자 모드로 실행되는 프로그램이 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 요청.
    소프트웨어 인터럽트에 포함된다.
    • 소프트웨어 인터럽트 : 입출력장치에 의해 발생하기도 하지만, 인터럽트를 발생시키는 특정 명령어에 의해 발생한다.

운영체제의 핵심 서비스

프로세스 관리

  • 실행 중인 프로그램을 프로세스(process)라고 한다.
  • CPU는 한 번에 하나의 프로세스만 실행할 수 있기 때문에 여러 프로세스들을 번갈아 가며 실행한다.

자원 접근 및 할당

  • 운영체제는 프로세스들이 사용할 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당.

💡 운영체제가 CPU, 메모리, (보조기억장치와) 입출력장치를 어떻게 관리하고, 결과적으로 어떤 기능을 하는지 알아보자!

1. CPU

  • 운영체제는 프로세스들에 공정하게 CPU를 할당하기 위해 어떤 프로세스부터 CPU를 이용하게 할 것 인지, 얼마나 오래 이용하게 할 것인지 CPU 스케줄링을 통해 할당한다.

2. 메모리

  • 운영체제는 새로운 프로세스가 적재될 때 마다 어느 주소에 적재해야 할지를 결정.

3. 입출력장치

  • 인터럽트 서비스 루틴은 운영체제가 제공하는 기능으로 커널 영역에 존재한다.

파일 시스템(file system) 관리

  • 운영체제는 보조기억장치 속 데이터를 파일과 디렉터리로 관리한다.

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

  • 소프트웨어가 만들어낸 가상 컴퓨터를 가상 머신(virtual machine) 이라고한다.
  • 새로운 운영체제와 응용 프로그램을 설치하고 실행할 수 있다.
  • 가상 머신 또한 응용 프로그램이다.
  • 가상 머신에서 실행된 응용 프로그램은 하이퍼바이저 모드로 실행되어 운영체제 서비스를 받도록 할 수 있다.

시스템 호출의 종류

profile
꾸준함의 가치를 믿는 개발자

0개의 댓글