시스템콜과 사용자/커널 모드

이해하기 쉽고, 장황하지 않은 자료를 기반으로 강의를 진행합니다.
잔재미코딩 소식 공유
좀더 제약없이, IT 컨텐츠를 공유하고자, 자체 온라인 사이트와, 다음 두 채널도 오픈하였습니다
응원해주시면, 곧 좋은 컨텐츠를 만들어서 공유하겠습니다
●  잔재미코딩 뉴스레터 오픈 [구독해보기]
●  잔재미코딩 유투브 오픈 [구독해보기]

3. 시스템콜과 사용자/커널 모드

응용 프로그램, 운영체제, 컴퓨터 하드웨어(시스템 리소스) 관계

도서관으로 비유

  • 운영체제는 도서관

  • 응용 프로그램을 시민

  • 컴퓨터 하드웨어는 책

  • 운영체제의 역할

    • 시민은 도서관에 원하는 책(자원)을 요청함
    • 도서관은 적절한 책(자원)을 찾아서, 시민에게 빌려줌
    • 시민이 기한이 다 되면, 도서관이 해당 책(자원)을 회수함

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

  • 운영체제는 응용 프로그램이 요청하는 메모리를 허가하고, 분배한다.
  • 운영체제는 응용 프로그램이 요청하는 CPU 시간을 제공한다.
  • 운영체제는 응용 프로그래밍 요청하는 IO Devices 사용을 허가/제어한다.

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

No description has been provided for this image

출처: 위키피디아


운영체제는 사용자 인터페이스 제공

  • 쉘 (Shell)
    • 사용자가 운영체제 기능과 서비스를 조작할 수 있도록 인터페이스를 제공하는 프로그램
    • 쉘은 터미널 환경(CLI)과, GUI 환경 두 종류로 분류

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


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

시스템 콜

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

https://www.gnu.org/software/libc/


운영체제를 만든다면?

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

운영체제와 시스템콜

  • 시스템콜 정의 예

API: 각 언어별 운영체제 기능 호출 인터페이스 함수 (각 언어별 인터페이스) 시스템콜: 운영체제 기능을 호출하는 함수


정리

  • 운영체제는 컴퓨터 하드웨어와 응용 프로그램을 관리한다.
  • 사용자 인터페이스를 제공하기 위해 쉘 프로그램을 제공한다.
  • 응용 프로그램이 운영체제 기능을 요청하기 위해서, 운영체제는 시스템 콜을 제공한다.
    • 보통 시스템 콜을 직접 사용하기 보다는, 해당 시스템 콜을 사용해서 만든 각 언어별 라이브러리(API)를 사용한다.

운영체제 구조


CPU Protection Rings

  • CPU도 권한 모드라는 것을 가지고 있습니다.
    • 사용자 모드 (user mode by applications)
    • 커널 모드 (kernel mode by OS): 특권 명령어 실행과 원하는 작업 수행을 위한 자원 접근을 가능케 하는 모드
No description has been provided for this image

쉬었다 가시죠!

kernel 이란? - OS kernel

  1. (견과류·씨앗의) 알맹이
  2. (사상·주제의) 핵심

shell 이란?

  1. (달걀견과류 등의 딱딱한) 껍데기
  2. 고둥 껍데기 모양의 것

CPU Protection Rings

두 가지 모드

  • 사용자 모드 (user mode): 응용 프로그램이 사용
  • 커널 모드 (kernel mode): OS가 사용
No description has been provided for this image

응용 프로그램과 운영체제

  • 우리가 만드는 프로그램은 맨위에서 놀고 있습니다.
No description has been provided for this image

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

  • 커널 모드에서만 실행 가능한 기능들이 있음
  • 커널 모드로 실행하려면, 반드시 시스템 콜을 사용해야 함(거쳐야 함)
  • 시스템 콜은 운영체제 제공
No description has been provided for this image

사용자 모드와 커널 모드

  • 함부로 응용 프로그램이 전체 컴퓨터 시스템을 헤치지 못함
  • 주민등록등본은 꼭 동사무소 또는 민원24시(정부 사이트)에서 특별한 신청서를 써야만, 발급
    • 동사무소 직원분들은 특별한 권한을 가지고, 주민등록등본 출력 명령을 실행

쉬었다 가겠습니다.

  • 응용 프로그래머와 시스템 프로그래머
No description has been provided for this image

Code example1

No description has been provided for this image

Code example2

No description has been provided for this image

정리

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