ㅇ공부#임베디드/시스템 프로그래밍

1. 시스템 프로그래밍 개요

BrainKimDu 2023. 9. 2. 21:40

이 글은 다음의 강의를 정리 및 복습하는 글임을 밝힙니다.

http://kocw.or.kr/home/cview.do?mty=p&kemId=1223639&ar=relateCourse 

 

시스템 프로그래밍 기초

이 교과목은 컴퓨터 하드웨어 시스템과 운영체제 기반에서 프로그래밍 언어를 어떻게 사용하는지에 관한 기초에 대해서 학습한다.

www.kocw.net

 


임베디드 SW의 커리큘럼

 

Programming Language  : C언어, C++ 을 공부해야한다고 합니다.

-> 

System Programming : 코드가 컴퓨터 시스템에서 어떻게 동작되는가를 배운다고 합니다.

->

Data Structures : 자료구조

-> 

Operating Systems : 운영체제

->

Microprocessor : (하드웨어) 마이크로 프로세서

->

Computer Architecture : (하드웨어) 컴퓨터 구조

->

Algorithms : 알고리즘

->

Embedded System : 임베디드 시스템

 

 

일반적인 컴퓨터의 System Programming 

Aplications 응용  <-> Operating Systems <-> Computer hardware

임베디드 시스템의 System Programming 

User Applications <-> Embedded Operating Systems <-> Embedded hardware

 

System Programming 

이 그림은 System Programming의 과정을 보여준다. 강의에서는 생략된 부분이 많다고 하였다.

 

먼저 가장 밑의 Computer hardware 부분을 살펴보자. 이부분에서는 input, 연산, output의 과정이 이루어진다.

운영체제의 역할을 살펴보자. 

Architecture dependent kernel : 운영체제의 핵심 부분 중 하나로 하드웨어에 대한 의존성으로 하드웨어에 대한 이해와 상호 작용을 담당한다. 각각의 하드웨어 아키키텍처(x86, ARM)에 맞게 컴파일된 커널을 사용해야한다. 이 커널은 하드웨어 리소르를 효율적으로 관리하고 하드웨어 장치와 상호 작용하는데 필요한 드라이버와 모듈을 제공한다.

kernel : OS의 핵심이 되는 컴퓨터 프로그램이다. 주요한 역할 4개가 정리되어 있으며 다음과 같다
- File System : 데이터를 디스크에 저장하고 관리하는 역할을 담당한다.
- Inter-process communication : 프로세스간의 통신을 담당한다.
- I/O and device management : 입출력 장치와 상호작용한다.
- Process management : 프로세스를 생성 관리한다.

System call interface : 응용 프로그램이 운영체제 서비스를 사용할 수 있게 하는 중요한 부분이다. 시스템 콜은 운영체제 기능에 대한 접근 방법을 정의한다. API와 유사한 역할을 한다.

Libraries : 일반적으로 공동작업을 수행하는 함수의 모음으로 시스템 콜을 호출하는 것을 단순화한다.

 

전체에서 다시 본다면 사용자가 접근할 수 있는 영역은 Applications의 User applications 와 Operating Systems의 libraries라고 할 수 있다. 그 외 하드웨얼르 제외한 System call interface 와 Kernel 그리고 Architecture depencdent kernel은 Kernel의 영역이다.