ABOUT ME

1st. CES 2nd. GBT

Today
Yesterday
Total
  • 1. Introduction
    HW & SW Interface/System Programming 2020. 5. 4. 23:19

    # Computer System

    전반적인 컴퓨터 시스템의 구조는 다음과 같으며,

    시스템 프로그래밍이란 System calls을 어떻게 사용(활용)할 것인지에 관한 것이다.

    computer system overview

    여러 운영체제 중(Windows, Linux, Mac os ..) Linux를 기반의 System Calls을 살펴볼 예정이며,

    다음은 위 그림에서 software 부분(Linux 기반)을 계층적으로 나타낸 것이다.

    바깥쪽에 위치할 수록 user level에 가까운 것이다.

    System calls은 프로그래머가 커널과 소통하기 위한 기능적인 인터페이스로, 이를 통해 커널의 다양한 영역들을 효율적으로 활용할 수 있다. 여기서 커널의 다양한 영역이란 Process/ File/ Memory/ Device 등의 관리를 뜻한다.

     

     

    # System Calls vs. Library Calls

    Library Calls은 System Calls과 마찬가지로 유저가 커널에 접근할 수 있는 인터페이스이다.

    다만,

    System Calls커널로 직접 접근하는 포인터운영체제 내에 존재하는 인터페이스이고,

    Library Calls라이브러리를 거쳐 커널에 접근하는 운영체제 밖에 존재하는 인터페이스이다.

     

    위의 계층 구조를 보면, 시스템 콜이 커널을 둘러싸고 있으며 그 밖에 라이브러리 루틴이 있음을 볼 수 있다.

    Library Calls은 유저 코드(c/ c++)를 시스템 함수(system calls)로 변환시켜주는 인터페이스로, 결국 커널에 접근하기 위해서는 System Calls을 통한다.

     

    예를 들어 우리가 C에서 작성한 함수 printf()는 stdio.h 라는 라이브러리에 있는 함수로 printf()를 호출한 것은 library calls을 한 것이다. printf()가 호출되면 시스템 내부적으로 write()라는 system calls로 바꿔 실행하게 된다.

    즉, 유저 프로그램에서 커널에 접근하기 위한 방법으로 system calls을 직접 호출하거나, libray calls을 통해 간접적으로 호출하는 두 가지 방법이 있는 것이다.

     

    ps. 처음 C언어를 배울 때 코드 상단에 #include <stdio.h>를 했던 이유를 이제서야 알았다. library calls인 printf(), scanf() 등과 같은 표준 입출력을 사용하기 위해서는 외부에서 불러와야 사용할 수 있기 때문이다.

    'HW & SW Interface > System Programming' 카테고리의 다른 글

    댓글

Designed by Tistory.