c언어/시스템 프로그래밍

시스템 프로그래밍 1일차

시스템 엔지니어 2023. 3. 27. 21:36

시스템 프로그래밍 1일차

유튜브 강의 참고

시스템 프로그래밍 개요

  • 시스템 소프트웨어 프로그래밍 하는 것
  • 유닉스/리눅스에서 제공하는 시스템 콜을 이용해서 프로그램을 작성 하는 것이다.
  • 시스템 콜은 유닉스/리눅스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미한다.

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!