[시스템 프로그래밍] 1-1 시스템 프로그래밍 개요

728x90
반응형

출처 : 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 경험해보기
    • 좀 더 난이도 있는 문제 풀어보기

 

 

 

728x90
반응형