출처 : https://www.youtube.com/watch?v=Hq1IGX4TRPg&list=PLBrGAFAIyf5pIIFQv_U1dG36L5rylTvbx
시스템 프로그래밍이란 컴퓨터 시스템 소프트웨어를 프로그래밍하는 활동이다.
시스템 프로그래밍의 목적은 소프트웨어와 다른 소프트웨어에게 서비스를 제공하는 소프트웨어 플랫폼을 생산하는 것이다.
-위키피디아-
유닉스 시스템 프로그래밍은 유닉스에서 제공하는 시스템 호출을 이용해서 프로그램을 작성하는 것이다.
시스템 호출은 유닉스 시스템이 제공하는 서비스를 프로그램에서 이용할 수 있도록 지원하는 프로그래밍 인터페이스를 의미한다.
-유닉스 시스템 프로그래밍, 한빛 아카데미-
시스템 : 어떤 목적(서비스)을 달성하기위해 필요한 하드웨어 / 소프트웨어 자원들을 모아놓은 것
System call & System SW
우리는 운영체제를 통해 하드웨어 자원을 효율적으로 관리해서 사용자가 원하는 서비스를 제공한다.
하지만 우리가 운영체제의 코드를 직접 만들면서 하기에는 너무 어렵기 때문에 운영체제에서 제공하는 기능들을 사용한다. 이 운영체제가 제공하는 기능들을 요청하는 것을 System Call 이라하고, System Call을 사용하기 위한 통로가 바로 System Call Interface 이다.
사용자(혹은 어플리케이션)가 운영체제를 쉽게 사용할 수 있도록 원하는 기능을 모아서 원활하게 사용할 수 있도록 중재해주는 소프트웨어를 System SW 라고 한다.
이 System SW를 통해서 사용자는 운영체제를 쉽게 제어하고, 서비스를 제공받게 만들어줄 수 있다.
System Programming : system program을 만드는 것
- System
- 하나의 목적을 위해 결합된 자원(HW / SW)들의 집합
- System program
- 시스템을 구성하는 자원을 다루는 프로그램
- 응용프로그램(사용자, App)에 서비스를 제공하는 프로그램
- OS, firmware, compilers, I/O routines, 스케줄러 등
- System call interface
- 시스템 프로그램(OS)이 제공하는 기능을 사용하기 위한 통로(예, 함수)
System Programming
- 시스템에 대한 이해를 가지고 하는 프로그래밍
- 시스템을 구성하는 자원 및 동작 방식에 대한 이해를 바탕으로 효율적인 프로그램 작성
- 시스템 자원의 기능을 활용하는 프로그래밍
- 시스템 자원을 직(간)접적으로 제어
- System call 활용
- 시스템 자원을 직(간)접적으로 제어
System call vs Library function
System call과 Library function 둘 다 함수 형태로 사용하게 된다.
하지만,
- System call interface
- 시스템의 기능(서비스)을 이용 / 제어하는 통로
- 커널 내 모듈을 직접 호출
- Library function
- 미리 컴파일 된 함수
- 자주 사용되는 기능을 독립적으로 구현
- 프로그램 개발을 빠르고 쉽게 하도록 도와 줌
- 내부적으로 System call을 활용
- 미리 컴파일 된 함수
즉, system call interface와 library function은 목적과 기능에 차이가 있다.
System call은 system call interface를 통해 바로 커널(OS)에 접근해서 필요한 서비스를 받게 된다.
반면에, Library function은 함수 안에 system call을 사용해서 더 하위 레벨에 서비스를 제공하고, system call을 사용해서 system call interface를 통해 커널에 접근하고 돌아와서 라이브러리 함수에서 제공하는 기능을 수행하게 된다.
Why system programming? 왜 시스템 프로그래밍을 해야할까?
- 더 많은 것들을 할 수 있기 때문에. 우리가 시스템 프로그래밍을 직접할 수 있다면, 더 많은 기능과 서비스를 요구할 수 있다.
- 더 높은 성능을 얻을 수 있다.
본 과정의 목표
- 시스템을 (효율적으로) 활용하는 능력 함양
- Unix / Linux 기반 시스템 및 새로 만나는 시스템
- 시스템 자원에 대한 이해 향상
- File / Directory
- System information
- Process
- Signal
- Memory
- Communication interface
- C Programming 연습 & Unix/Linux 경험해보기
- 좀 더 난이도 있는 문제 풀어보기
'Study > 시스템 프로그래밍' 카테고리의 다른 글
[시스템 프로그래밍] 1-3. Linux 기초 명령어 (1) | 2023.11.28 |
---|---|
[시스템 프로그래밍] 1-2. Unix / Linux 개요 (0) | 2023.11.28 |