시스템 프로그래밍 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!
'c언어 > 시스템 프로그래밍' 카테고리의 다른 글
시스템프로그래밍 - 4일차 (0) | 2023.04.08 |
---|---|
시스템 프로그래밍 3일차 (0) | 2023.03.31 |
시스템 프로그래밍 2일차 (0) | 2023.03.30 |