System Structures

유저 모드

  • 일반적으로 프로그램을 실행 시킬 때 이 모드에서 실행된다.

인터럽트

  • 전원에 문제가 생겼을 때, I/O 작업이 완료됐을 때, CPU 할당 시간이 다 됐을 때, 0으로 나눴을 때, 잘못된 메모리 공간에 접근할 때 발생한다.

  • CPU는 인터럽트 발생 시 즉시 시스템 콜을 호출해 커널 코드를 커널 모드에서 실행한다.

시스템 콜

  • 프로그램이 OS 커널이 제공하는 서비스를 이용하고 싶을 때 시스템 콜을 호출해 실행

  • 프로세스/스레드, 파일 I/O, 소켓, 장치, 프로세스 통신 등에 관련된 작업을 처리한다.

  • 운영체제 단에서 제공해주는 시스템 콜의 종류가 있다.

  • 하드웨어나 시스템 관련 기능은 반드시 시스템 콜을 통해 사용 가능하다.

  • 예를 들어 Java에서 Thread를 시작하는 start() 메서드는 내부적으로 JNI 코드를 호출하는데, 이 JNI 코드가 OS 시스템 콜 중 하나인 clone()을 호출한다.

커널 모드

커널

  • 시스템의 전반적인 것들을 관리하고 감독한다.

  • 하드웨어와 관련된 작업을 직접 수행한다.

커널 모드의 필요성

  • 프로그램의 현재 CPU 상태를 저장하고 인터럽트나 시스템 콜을 처리한다.

  • 모든 처리가 완료되면 중단되었던 프로그램의 CPU 상태를 복원하거나, 다른 프로그램의 상태를 복원한다.

  • 각 프로세스가 시스템 자원들을 직접 접근할 수 있다면 복잡하게 점유하다가 전체 컴퓨터 시스템이 붕괴될 수 있다.

커널 모드가 하는 일

  • Process Management

    • 프로세스를 생성, 삭제, 중단, 재개

    • 프로세스 간 synchronization(동기화), IPC(Inter Process Communication) 관리

  • Memory Management

    • 어떤 부분의 메모리가 누구에게 사용되는지 추적

    • 메모리 공간 사용 가능할 때 어떤 프로세스 로드할 지 결정

    • 필요에 따라 메모리 공간 할당, 해제

  • I/O System Management

  • Secondary Storage Management

  • File System Management

    • 파일/디렉토리 생성 및 삭제

    • 파일을 secondary storage에 매핑

    • 파일을 비휘발성 저장소에 백업

  • Networking

  • Protection System

  • Command-Interpreter System

Inter Process Communication

  • 커널에서 제공되는 프로세스 간 통신을 돕는 방법

  • 종류: 익명 PIPE, Named PIPE, Message Queue, 공유 메모리, 메모리 맵

Last updated