4. 운영체제 구조 - 시스템콜, 커널 모드

응용 프로그램, 운영체제, 컴퓨터 하드웨어 관계

  • 운영체제는 프로그램이 요청하는 메모리를 허가, 분배
  • 운영체제는 프로그램이 요청하는 CPU시간 제공
  • 운영체제는 프로그램이 요청하는 IO device 사용을 허가 제어

사용자 - 응용 프로그램 - 운영체제 - 하드웨어 이런 식으로 연결된다고 보자!

운영체제는 사용자 인터페이스를 제공한다.

쉘(Shell)

  • 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램.
  • 쉘은 GUI환경과 CLI환경으로 나뉜다.

운영체제는 응용 프로그램을 위해서도 인터페이스를 제공한다

API(aplication programming interface)

  • 프로그램이 운영체제에 뭔가를 요청할 수 있게 프로그램 안에 작성된 인터페이스
  • 일종의 요청서로 이해하자.
  • 함수로 제공된다.
  • 각 언어별 운영체제 기능 호출 인터페이스 함수

시스템 콜

  • 시스템 콜 또는 시스템 호출 인터페이스
  • 운영체제가 운영체제 각 기능을 사용할 수 있도록 시스템 콜이라는 명령 또는 함수를 제공
  • API 내부에는 시스템콜을 호출하는 형태로 만들어지는 경우가 대부분.
  • 운영체제 기능 호출 함수

운영체제를 만든다면?

  1. 운영체제를 개발한다.(kernel)
  2. 시스템 콜을 개발
  3. C API(library) 개발 - 다른언어로도 개발
  4. Shell 프로그램 개발
  5. 응용 프로그램 개발

운영체제와 시스템콜

시스템 콜의 예시(POSIX API, 윈도우 API)

CPU Protection Rings

cpu도 권한 모드라는 것을 가지고 있다.

  • 사용자 모드
  • 커널 모드 : 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케하는 모드.

    이 사진에서 ring 3이 사용자 모드다. 가운데에 있는게 커널이다.

개발자가 만든 프로그램은 맨위에서 작동한다!

시스템콜은 커널 모드로 실행

  • 커널 모드에서만 가능한 기능이 존재
  • 커널 모드로 실행하려면, 반드시 시스템콜 거쳐야함
  • 시스템콜은 운영체제 제공

왜 이렇게 나눴을까

함부로 응용 프로그램이 전체 컴퓨터 시스템을 해치지 못하게 하기 위함.

코드로 이해하기

정리

  • 운영체제는 시스템 콜 제공
  • 프로그래밍 언어 별 운영체제 기능을 활용하기 위한 시스템 콜 기반 API제공
  • 응용 프로그램은 운영체제 기능 필요시 해당 API를 사용해 프로그램 작성
  • 응용 프로그램 실행되서 운영체제 기능이 필요한 API를 호출하면, 시스템콜이 호출되서, 커널모드로 변경후, OS 내부에서 실행
Share