[운영체제] OS, 커널, 시스템 콜, 시그널의 개념 정리

김예찬·2024년 4월 8일
0

OS

컴퓨터 자원을 효율적으로 관리 할수 있도록 도와주는 프로그램이자 컴퓨터 상에서 다양한 응용 프로그램이 실행될 수 있도록 하는 인터페이스

위 그림과 같이 하드웨어 위에 os가 있고 os상에서 다양한 애플리케이션이 동작한다.

커널(Kernel)

컴퓨터 메모리에 항상 상주하며 컴퓨터 자원을 관리하는 OS의 일부분이자 핵심.

  • 운영체제처럼 규모가 큰 프로그램이 모두 메모리에 올라가면 한정된 메모리 공간이 낭비가 심할 것이다. 따라서 운영체제 중 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고, 그렇지 않은 부분은 필요할 때 메모리에 올려서 사용하게 된다. 이때 메모리에 상주하는 운영체제의 부분을 kernel(커널)이라고 한다.

    CPU 모드

사용자 애플리케이션이 시스템을 손상시키는 것을 방지하기 위해 2가지 모드를 가짐.

cpu에 있는 mode bit으로 구분하여 0은 커널모드, 1은 사용자모드로 구동된다.

  • 사용자 모드(User mode) 사용자 모드에서는 사용자 애플리케이션 코드가 실행된다. 사용자가 접근할 수 있는 영역에 제한이 있으므로 하드웨어에 직접적으로 접근할 수 없다. 접근을 위해서는 ‘시스템 콜(System Call)을 사용해야한다.
  • 커널 모드(kernel mode) 운영체제가 cpu를 사용하는 모드, 시스템 콜을 통해 커널 모드로 전환되면 운영체제는 하드웨어를 제어하는 명령어 (Previleged Instructions)를 실행한다. Previleged Instructions는 사용자 모드에서 실행되면 exception이 발생한다.

사용자 process는 User mode에서 실행되다가 컴퓨터자원을 사용해야할 때 시스템 콜을 호출하여 커널모드로 전환하여 작업을 수행하고 다시 사용자 모드로 전환한다.

시스템콜 (System Call)

앞선 설명처럼 응용 프로그램들은 하드웨어 자원에 접근하기 위해서는 OS가 제공하는 인터페이스를 이용해야한다. 이때 이 인터페이스를 시스템 콜이라고 한다.

예를 들어 어떤 프로그램에서 파일을 열고 읽는 작업을 수행해야한다면 아래와 같은 단계를 거쳐야한다.

  1. 파일 열기: 프로그램이 파일을 열기 위해 OS에게 요청, open() 시스템 콜을 사용
  2. 파일 읽기: 열린 파일에서 데이터를 읽기 위해 OS에게 요청, read() 시스템 콜을 사용
  3. 데이터 출력: 읽은 데이터를 화면에 출력, 텍스트를 콘솔에 출력하는 print() 함수 사용

이처럼 응용 프로그램은 파일 시스템, 네트워크, 프로세스 관리 등 다양한 기능을 수행하기 위해 OS에게 시스템 콜을 사용한다. 이를 통해 응용 프로그램은 하드웨어 리소스를 직접 제어하지 않고도 OS가 제공하는 인터페이스를 통해 필요한 기능을 수행할 수 있다.

시그널이란?

OS에서 특정 이벤트가 발생했을 때 프로세스에게 전달되는 소프트웨어 인터럽트 신호

시스템콜과 시그널의 차이

시스템콜은 프로세스가 os에 특정 긴으을 요청하는것

시그널은 os가 발생한 이벤트를 프로세스에 전달하는것

📃 Ref

0개의 댓글