ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 실습과 그림으로 배우는 리눅스 구조 2장 정리
    운영체제 2022. 10. 30. 10:01

     

    사용자 모드로 구현되는 기능

    1. 시스템 콜

    • 사용자 모드에서 동작하는 프로그램은 시스템 콜을 통해서 커널 처리를 호출한다.
      • 여기서 프로그램은 OS 라이브러리, 이외의 라이브러리, 프로세스 고유의 코드 등을 말한다.
    • 시스템 콜의 종류
      • 프로세스 생성, 삭제
      • 메모리 확보, 해제
      • IPC
      • 네트워크 
      • 파일 시스템 접근
    • 유저 모드에서 CPU 모드를 변경하려면 반드시 시스템 콜을 거쳐야 한다.
    • [strace] 커맨드를 통해서 시스템 콜 호출 목록을 조회할 수 있다.
    • [sar] 커맨드를 통해서 프로세스가 CPU를 어떤 비율로 실행하고 있는지 확인할 수 있다. 
      • 사용자 모드 = user +  nice
      • 커널 모드 = system

     

     

    2. 프로세스가 커널을 사용하는 과정

    1) 프로세스는 보통 사용자 모드로 실행되지만, 커널에 요청을 해야하는 경우 시스템 콜을 사용

    2) 시스템 콜을 호출하면 CPU에서 인터럽트 이벤트 발생

    3) 인터럽트가 발생하면 CPU는 커널 모드로 변경되어 커널이 동작

    4) 커널 동작이 끝나면 시스템 콜 처리가 종료되고, 프로세스가 사용자 모드 동작을 진행

     

     

    3. 시스템 콜의 wrapper 함수

    • 시스템 콜은 고급 언어(C 언어, java 등)에서 직접 호출이 불가능하다.
      • 시스템 콜은 어셈블리 코드를 통해서 호출해야 한다
      • 하지만 어셈블리 코드는 아키텍처 의존적이므로, 이식성이 떨어진다.
    • 그래서 OS는 내부적으로 시스템 콜 호출만 하는 시스템 콜 wrapper를 제공한다.
      • 시스템 콜 wrapper는 아키텍처별로 존재한다.
      • 사용자는 고급 프로그래밍 언어를 통해서 wrapper 함수인터페이스에 맞게 호출하기만 하면 된다.

     

     

    4. 표준 C 라이브러리

    •  보통 GNU 프로젝트에서 제공하는 glibc를 표준 C라이브러리를 사용한다.
    • 대부분의 C라이브러리들은 glibc이나 libc를 링크하고 있다.
      • [ldd] 커맨드를 통해서 어떤 라이브러리를 링크하고 있는지 확인할 수 있다. 
    • glibc는 시스템 콜 wrapper 함수를 포함하고 있다.

     

     

    Reference

    실습과 그림으로 배우는 리눅스 구조 

    반응형

    댓글

Designed by Tistory.