반응형
시스템 프로그래밍 개요
- 시스템 프로그래밍이란?
- 운영 체제, 컴퓨터 하드웨어와 밀접하게 작동하는 소프트웨어를 개발하는 과정이다.
- 이는 컴퓨터의 기본적인 작동 원리와 효율적인 자원 관리 방법을 이해하고, 이를 바탕으로 안정적이고 빠른 시스템 소프트웨어를 만드는 데 중점을 둔다.
- 컴퓨터란?
- 컴퓨터는 프로그래밍 가능한 전자 장치로, 다양한 종류의 작업을 자동화하여 수행할 수 있다.
- 이는 복잡한 계산부터 문서 편집, 멀티미디어 처리에 이르기까지 광범위한 작업을 처리할 수 있는 범용성을 가지고 있다.
- 컴퓨터 사이언스란?
- 컴퓨터 사이언스는 계산과 정보의 이론적 기반을 탐구하고, 이를 통해 다양한 문제를 해결하는 방법을 연구하는 학문이다.
- 이는 계산 이론, 알고리즘의 설계 및 분석, 그리고 컴퓨터 시스템의 설계와 같은 분야를 포함한다.
- 컴퓨터 사이언스는 단순히 컴퓨터 자체에 대한 학문이 아니라, 컴퓨터를 사용하여 PC 뒤의 문제를 해결하는 데 필요한 논리와 규칙에 대해 배우는 것이다.
- 컴퓨터 엔지니어링이란?
- 어떻게 컴퓨터 하드웨어가 디자인 되어 있는지
- 소프트웨어가 어떻게 하드웨어를 컨트롤 하는지
- 컴퓨터 하드웨어가 어떻게 설계되고 소프트웨어가 하드웨어를 제어하는지 이해
- HW: VLSI 칩, 아날로그 센서, 혼합 신호 회로 기판 등 설계
- SW: 임베디드 마이크로컨트롤러용 소프트웨어 및 펌웨어 작성, 운영체제 설계 등
- 컴퓨터 사이언스는 소프트웨어에 집중
- 컴퓨터 엔지니어링은 하드웨어에 집중
- IT는 소프트웨어
- 소프트웨어
- 시스템이 구축되는 물리적 하드웨어와는 대조적으로 인코딩된 정보 또는 컴퓨터 명령으로 구성된 컴퓨터 시스템의 일부
- 고급 프로그래밍 언어로 쓰여짐
- 컴파일러나 인터프리터를 통해 기계어 혹은 이진수로 변환
- 소프트웨어는 기본적으로 자연어 알파벳을 사용하여 기계어를 모호하게 연상시키는 저수준 어셈블리 언어로 작성 가능
- 어셈블러가 기계어로 변환
- 가장 낮은 수준에서 실행 가능한 코드는 개별 프로세서(일반적으로 CPU)에 특정한 기계어 명령으로 구성
- 소프트웨어 개발에는 고급언어와 어셈블리어가 사용
- 소프트웨어
어셈블리 프로그래밍이란?
- 2021년 상위 10개 프로그래밍 언어로 어셈블리어도 많은 개발자가 사용
- 아두이노 혹은 MCU를 통해 어셈블리 프로그래밍 할 수 있음.
- MCU와 대화하기
- Micro Controller Unit(MUC)
- CPU, 메모리 및 I/O 인터페이스를 통합하는 단일 VLSI 칩의 소형 컴퓨터
- Micro Controller Unit(MUC)
- MCU 프로그래밍 하기
- MCU는 일반적인 컴퓨터에 비해 자원이 부족
- 느린 CPU, 작은 메모리 등등
- 이러한 자원을 효율적으로 사용하는게 중요 → 코드 최적화
- 고급 언어는 어떤가?
- 하드웨어 보다 훨씬 높은 단계의 추상화 제공
- 변수, 메서드, 클래스, 반복 등등
- 그러나 이것들은 하드웨어를 세밀하게 제어하기 힘듬
- 하드웨어 보다 훨씬 높은 단계의 추상화 제공
- 어셈블리 언어는 코드 최적화에 적합
- 어셈블리 언어는 기계어와 매우 근접
- 세밀하게 MCU 제어 가능
- 레지스터, 메모리 영역 등
- 이를 위해서는 하드웨어가 어셈블리어를 통해 어떻게 작동하는지 이해해야 함
- MCU는 일반적인 컴퓨터에 비해 자원이 부족
- MCU는 어떤 언어를 이해하는가?
어셈블리 vs. 기계어
- 각 언어는 라인 바이 라인으로 대응
- 어셈블리 언어와 기계어는 직접적으로 대응되는 언어.
- 각각의 언어 명령은 하드웨어에서 실행되는 명령에 대응됨.
- 어셈블리 언어는 사람이 이해하기 쉬운 기호로 표현되며, 기계어는 이진수 형태로 표현됨.
- 어셈블리 언어는 기계어에 비해 상대적으로 가독성이 높음.
- 예를 들어, "MOV AX, 5"와 같은 어셈블리 명령은 사람이 이해하기 쉽고, 해당 명령은 레지스터 AX에 값을 5로 이동시킴.
- 기계어는 이진수 형태로 표현되어 있어 직접 이해하기 어렵다.
- 어셈블리 언어는 기계어와 일대일 대응되는 편리한 표현 방식을 제공하여 프로그래머가 하드웨어를 보다 쉽게 제어할 수 있도록 함.
왜 어셈블리어 사용할까?
- 코드 최적화
- 테스트 및 디버깅
- 장치가 어떻게 동작하는지 실제로 볼 수 있다.
- 리버스 엔지니어링
- 소스코드 없이 프로그램을 분석할 수 있다.
효율적인 프로그래밍의 중요성
- 100k의 어셈블리어 라인을 가지고 있음
- 각 라인 실행에 CPU 1tick인 명령을 2GHz CPU에서 실행하면 50microsec 소요
- 4MHz CPU에서는 25millisec 소요
- 오늘 본 장치 중 하나는 4MHz 프로세서와 10KB RAM 및 48KB ROM
- 코드 최적화를 해야함
시스템 계층에 작업
- 시스템 프로그래밍 과정에서 설계된 대부분의 작업은 실제 응용 시스템의 "기본 계층"이 됨
- 시스템 계층의 대기 시간 및 메모리 오버헤드가 중요
2024.03.03 - [Computer Science/시스템 프로그래밍] - SIC 컴퓨터 아키텍처와 시스템 소프트웨어 설계 기초
반응형
'Computer Science > 시스템 프로그래밍' 카테고리의 다른 글
SIC/XE Assembly Program with Object Code (0) | 2024.04.20 |
---|---|
어셈블러의 작동과정 및 오브젝트 코드 생성 과정, 어셈블러 동작 메커니즘 (0) | 2024.04.19 |
SIC/XE 아키텍처: 기본 구조에서 명령어 집합까지 (2) (0) | 2024.03.03 |
SIC/XE 아키텍처: 기본 구조에서 명령어 집합까지 (1) (0) | 2024.03.03 |
SIC 컴퓨터 아키텍처와 시스템 소프트웨어 설계 기초 (0) | 2024.03.03 |