CS/운영체제

[운영체제] 운영체제란?(커널, 이중모드, 시스템콜)

연듀 2022. 9. 29. 10:05

 

운영체제란?

  • 프로그램 실행에 필요한 자원을 할당하고 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
  • 컴퓨터가 부팅될 때 메모리 내 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 올바르게 실행되도록 도움
  • 실행할 프로그램을 메모리에 적재하고 삭제하며 지속적으로 메모리 자원을 관리
  • 여러 프로그램에 CPU 자원을 공정하게 할당
  • 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원 할당, 올바르게 실행되도록 관리
  • 관리할 자원별로 기능이 나눠져 있다. (메모리 관리, CPU관리, 디스크 관리...)

 

운영체제 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음

운영체제를 통해 하드웨어와 프로그램을 더 깊이 이해할 수 있음

 

 

운영체제의 핵심 서비스

  1. 프로세스 관리
  2. 자원 접근 및 할당
    • CPU 스케줄링
    • 프로세스가 메모리에 적재될 주소 결정
    • 인터럽트 서비스 루틴 제공해 입출력 작업 수행
  3. 파일 시스템 관리

 

 

운영체제의 큰 그림

 

인터페이스

커널에 사용자 명령어를 전달하고, 사용자에게 실행 결과를 알려주는 역할

ex) GUI(그래픽 기반으로 컴퓨터와 상호작용), CLI(명령어 기반으로 컴퓨터와 상호작용)

 

커널

  • 운영체제의 핵심 서비스를 담당하는 부분
  • 프로세스 관리, 메모리 관리, 입출력 장치 관리, 파일 관리 등
  • 사용자 인터페이스(GUI, CLI)는 커널에 포함되지 않음
  • 커널의 성능이 운영체제의 성능을 좌우

 

드라이버

하드웨어를 제어하기 위한 소프트웨어

 

 

시스템 콜

  • 운영체제 서비스를 제공받기 위해 운영체제에 요청을 보내 커널 모드로 전환하는 방법
  • 일종의 소프트웨어 인터럽트
  • 응용 프로그램은 빈번하게 시스템 호출을 발생시키고 사용자 모드와 커널 모드를 오가며 실행

 

이중 모드

CPU가 명령어를 실행하는 모드를 사용자 모드와 커널 모드로 구분하는 방식

운영체제는 응용 프로그램의 요청을 받아 응용 프로그램 대신 자원에 접근하여 작업을 수행하고 하드웨어 자원을 보호하는데, 이는 이중 모드로 구현된다.

 

  • 사용자 모드
    • 운영체제 서비스를 제공받을 수 없는 실행 모드
    • 커널 영역의 모드 실행 불가능
    • 일반적인 응용 프로그램
  • 커널 모드
    • 운영체제 서비스를 제공받을 수 있는 실행 모드
    • 커널 영역 모드 실행 가능

 

시스템 콜이 작동될 때 modebit를 참고해 유저 모드와 커널 모드를 구분한다. 

 

1. 유저 프로그램이 하드웨어에 접근하여 파일을 열려고 하면 시스템 콜이 호출

2. 트랩(소프트웨어 인터럽트)이 발생되고 modebit가 0으로 전환

3. 커널 모드에서 파일에 접근해 로직 수행

4. 다시 modebit를 1로 변경하고 유저 모드로 전환

 

 

 

 

 

 

 

정리

운영체제의 핵심 서비스를 제공하는 부분은 커널이다. 
사용자 프로세스가 커널의 서비스를 제공받기 위해서는(커널 영역의 코드를 실행하기 위해서는) 사용자 모드에서 커널 모드로 전환해야 하고, 이는 시스템 호출을 통해 이루어진다.
즉, 시스템 호출은 커널 모드로써 운영체제의 서비스를 제공받을 수 있는 방법이다.
커널의 대표적인 서비스로는 프로세스 관리, 자원 접근 및 할당, 파일 시스템 관리가 있다.