Rylah's Study & Daily Life

01. 시스템 프로그래밍 시작 본문

Study/System Programming

01. 시스템 프로그래밍 시작

Rylah 2022. 4. 3. 18:08

시스템 프로그래밍?

- C++, Java와 같은 프로그래밍 언어가 아닌 컴퓨터 시스템에서 기능을 제공해주는 강력한 기능을 활용하기 위한 공부

- 이 강의에서 다루는 범위의 비율(컴퓨터 구조 : 10 ~ 15% , 운영체제 : 25 ~ 30 %, 시스템 프로그래밍 : 50%)

- 시스템 프로그래밍은 운영체제에 종속적일 수 밖에 없기에 운영체제에 관련된 이야기를 할 수 밖에 없다.

 

 

컴퓨터 구조에 대한 첫 번째 이야기

시스템 프로그래밍이란?

 - 시스템(컴퓨터)의 범위 : 하드웨어 + 운영체제 (묶어서 생각해야 된다.)

 - 시스템 프로그래밍

  -> 컴퓨터 시스템을 활용하는 소프트웨어 개발

  -> Windows 운영체제 자체의 기능을 활용하는 프로그래밍

 - 응용 소프트웨어 개발과의 차이점

 -> 시스템 프로그래밍은 모든 응용 프로그램에 포함되는 요소

 

 

컴퓨터 시스템의 주요 구성요소

간략적인 설명이다. 상세하게 설명했을 때는 약간의 틀린 이야기가 있다.

 

CPU, Cache

 -> 컴퓨터 하드웨어 구조에 속함

 

운영체제

 - 메인 메모리

  -> 메모리 관리 기법

 

 - 하드디스크

  -> Input / Output 

 

CPU(Central Processing Unit)

- 중앙 처리 장치

- CPU가 기본적으로 컴퓨터의 연산을 담당하는 것이다.

- 프로그램 실행의 핵심 역할, 컴퓨터의 머리

 

메인 메모리(Main Memory)

- 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역

- 프로그램은 하드디스크에서 실행되는 것이 아니라 실행하게 되면 메인 메모리에 올라가서 실행 되게 된다.

 

입/출력 버스(Input/Output Bus)

- 입/출력 버스는 컴퓨터를 구성하는 요소 사이에서 데이터를 주고 받기 위해 사용되는 경로

- 데이터 종류에 따라 다음과 같이 구성된다.

 -> 주소 버스(Address Bus)

 -> 데이터 버스 (Data Bus)

 -> 컨트롤 버스 (Control Bus)

- 위 그림에서 보듯이 HDD, RAM, CPU 등이 모두 BUS에 연결 되어 있다. 

- 이 버스를 이용해서 HDD<->RAM ,RAM <-> CPU 간의 데이터 교환이 가능한 것이다.

 

CPU(Central Processing Unit)

- 다시 한번 CPU를 자세히 살펴보자

 

ALU (Arithmetic Logic Unit)

- CPU에서 덧셈이나 뺄셈을 진행하는 주체는 ALU이다.

- ALU에서 진행하는 연산은 두 종류로 나뉜다.

- AND/OR 과 같은 논리연산, ADD/SUB와 같은 산술 연산이다.

- 어셈블리 언어에서 보았으면 알 수 있다.

 

컨트롤 유닛(Control Unit)

- ALU가 실행해야되는 명령어는 무엇을 해야되는지 해석하지 못한다.

- Control Unit은 이를 해석해서 ALU가 어떤 명령을 실행해야하는지 정해주는 역할을 한다.

 

레지스터(Register Set)

 - CPU 내에서 성능이 좋은 임시적으로 데이터를 저장하기 위한 메모리 공간

 

버스(Bus Interface)

 - 각 인터페이스에서 Input / Output 통신 동작을 역할해주는 것. 

 - 데이터 전송 방식, 프로토콜 등을 알고 있다.

 - 레지스터에 있는 데이터를 실어 보내기도 하고, 전송되어져 오는 데이터를 수신하기도 한다.

 

 

클럭 신호(Clock Pulse)

- 클럭 신호는 Timing을 제공하기 위해서 필요하다.

- CPU에서 우리가 흔히 4.0GHz라고 부르는 것은 1초당 4,000,000,000번의 클럭을 발생시키는 것이다.

- CPU는 매 클럭이 발생할 때마다 그 클럭에 맞춰서 일을 한다.

- 흔히 오버클럭해서 5.0GHz를 노린다는 것은 이러한 클럭 주기를 당긴다고 생각하면 된다.

- 동기화 작업이 필요하다.

- 장치마다 클럭을 발생해야되는게 다르고, 오류가 발생하기 쉽다.

- 시스템에서 필요한 것 중 가장 낮은 클럭을 기준으로 동기화를 제공한다.

 

 

프로그램 실행 과정

- 전처리기

 -> #include, #define과 같이 시작하는 지시자를 통한 치환 작업

- 컴파일러

 -> 컴파일러로 CPU의 명령어로 번역

- 어셈블러

 -> CPU 명령어를 바이너리 코드로 변경

- 링커

 -> 라이브러리와의 결합

 

 

Stored Program Concept

- Fetch

 -> CPU 내부로 명령어가 이동 됨

 

- Decode

 -> 명령어를 해석, 컨트롤 유닛

 

- Execution

 -> 연산을 진행 -> 보통은 ALU

 

1. HDD -> RAM

2. RAM -> IO BUS -> Register

3. Register -> Control Unit (해석)

4. ALU ! (Calc)

 

데이터 이동 기반 버스 시스템

CPU와 메모리 관점의 버스

- 데이터 버스 : Data 

- 어드레스 버스 : Address

- 컨트롤 버스 : Control 신호

 

 

정리

1. ALU와 Control Unit의 기능적 역할

- 명령어가 CPU로 입력 되었을 때 ALU와 컨트롤 유닛(Control Unit) 역할을 기억하자. 명령어의 내용대로 연산을 하는 주 요소는 ALU이지만, 명령어를 분석해서 해야할 일을 결정하는 요소는 Control Unit이다.

 

2. Register의 필요성

 - 레지스터의 역할은 앞으로 조금 더 깊게 알게 된다. 그러나 기본적으로 레지스터는 CPU 내에 존재하는 저장 장치이다.

 

3. Clock Pulse의 필요성

 - 클럭은 동기화를 위해서 필요한 장치이다. CPU는 인가되는 펄스에 맞춰서 일을 한다.

 

4. Fetch, Decode, Execution

 - Stored Program Concept의 명령어 실행 단계는 Fetch, Decode, Execution이다. 메인 메모리에 저장되어 있는 명령어를 CPU 내부로 가져오고(Fetch), 컨트롤 유닛에 의해 분석된 다음(Decode), ALU에 의해 연산이 이뤄진다.(Execution)

 

5. 버스 인터페이스(Bus Interface)

 - CPU 내부 및 외부에 있는 요소들은 서로 Input/Output BUS를 통해서 데이터를 주고 받는다. BUS를 통해서 데이터를 주고 받기 위해서는 BUS의 통신 방식에 맞게 데이터 입 출력을 돕는 인터페이스 장치가 있어야 한다. 이 장치를 컨트롤러 혹은 어댑터라고 한다.

 

 

 


책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍 (저자 : 윤성우)

http://www.yes24.com/Product/Goods/2502445

 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - YES24

프로그래머라면 반드시 알아야 하는 컴퓨터 구조, 운영체제, 시스템 프로그래밍!윤성우만의 명쾌한 설명과 인터넷 강의가 여러분을 도와 드립니다.이 책은 거의 모든 개발자가 궁금해 하면서도

www.yes24.com

출처 : https://youtu.be/GVX-m3RF-K0

 

'Study > System Programming' 카테고리의 다른 글

04. 컴퓨터 구조 (2)  (0) 2022.04.05
03. 64비트 기반 프로그래밍  (0) 2022.04.04
02. 아스키 코드 vs 유니코드  (0) 2022.04.04