시스템 콜은 유닉스/리눅스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미한다.
System
하나의 목적을 위해 결합 된 자원(HW/SW)들의 집합
System program
시스템을 구성하는 자원을 다루는 프로그램
응용프로그램에 서비스를 제공하는 프로그램
OS, firmware, compilers, I/O routines, scheduler 등
System call Interface
시스템 프로그램이 제공하는 기능을 사용하기 위한 통로
System call과 라이브러리 차이
라이브러리랑 시스템콜은 다르다.
어떻게 보면 유사하지만 내부적으로 살펴보면 다르다.
왜 시스템 프로그래밍을 해야하는가?
시스템 적으로 더 많은 것을 할 수 있게 된다.
높은 성능 더 효율적인 프로그램을 만들 수 있다.
목표
시스템을 (효율적으로) 활용하는 능력 함양
시스템 자원에 대한 이해 향상
Unix/Linux 개요
Unix/Linux 아키텍처
Kernel
OS의 핵심 기능을 모아 놓은 것
System call
OS의 기능 중 응용프로그램이 사용하도록 허락된 기능을의 집합
Shell
사용자와 OS 사이의 인터페이스
사용자의 입력을 해석하여 커널의 함수 호출
우분투 구성
sudo apt-get install g++
sudo apt-get install gcc
Linux 기초 명령어
Unix/Linux 시스템 사용 설명서
Shell Command(1)
System call(2)
standard library(3)
man [options] [sections] page
- page: 검색하려는 명령어/함수 이름
- section: page의 소속 구분
- 1: shell cmd, 2: system call, 3: Std. library
- $ man -s (# of section) page
VI 사용
# vi helloLinux.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
printf("Hello linux!\n");
exit(0);
}
# ./hello.out
Hello linux!