행복한 연어의 이야기

(윈도우 시스템) 1. 컴퓨터 구조 첫번째 본문

IT/윈도우 시스템 프로그래밍

(윈도우 시스템) 1. 컴퓨터 구조 첫번째

해피살몬 2021. 7. 19. 19:32

1. 시스템 프로그래밍 이해와 접근

시스템 프로그래밍이란?

컴퓨터 시스템을 동작시키는 프로그램

그렇다면 윈도우 시스템 프로그래밍이란 ?

윈도우 체제 기반 컴퓨터에게 일을 시키기 위한 프로그램을 구현하는 것

그러기 위해서는 윈도우 운영체제와 컴퓨터구조에 대한 기본적인 지식도 필요하다.

 

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

CPU = 컴퓨터 구조

캐시(Cache) = 컴퓨터 구조

메인 메모리(Main Memory) = 운영체제

하드디스크(Hard Disk) = 운영체제

 

2. 컴퓨터 하드웨어의 구성 

CPU

중앙처리 장치, 연산을 담당하는 중요한 부분

메인메모리 (Main Memory)

램(RAM)

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

입출력버스(Input/Output Bus)

장치와 장치 사이에 데이터를 주고 받기 위해서 사용되는 경로

데이터 종류와 역할에 따라 

어드레스 버스, 데이터 버스, 컨트롤 버스로 구분이 된다.

 

3. CPU 에 대한 이해 (구성요소)

ALU (Arithmetic Logic Unit)

실제 연산을 담당하는 부분

덧셈 뺄셈 AND OR 연산을 담당합니다.

컨트롤 유닛 (Control Unit)

ALU 에게 덧셈 인지 뺄셈인지 논리 연산인지 명령어를 해석해서 넘겨주는 역할

CPU 내부 레지스터들 (Register)

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

CPU 종류에 따라서 개수와 형태가 다양하다.

버스 인터페이스 (Bus Interface)

입출력버스의 통신방식을 알고있는 장치

클럭 신호 (Clock Pulse)

클럭 신호는 CPU를 구성하는 요소는 아니지만 중요하기 때문에 여기에 같이 서술합니다.

클럭발생기에 의해 발생되는 클럭신호는 CPU를 구성하는 요소 요소에 제공 되며 이 신호에 맞춰 CPU가 일을 합니다.

CPU는 다루는 요소중에 가장 느린 요소에 맞춰 일을 하게 됩니다.

 

4, 프로그램 생성 및 실행 과정

프로그램 생성 과정

1) 전처리기에 의한 치환작업

#Include, #define 같이 # 으로 시작하는 지시자의 내용을 소스소드로 변환합니다.

2) 컴파일러에 의한 어셈블리어로 번역

소스코드를 컴파일러에 의해서 어셈블리 코드로 번역합니다.

(어셈블리 코드는 CPU 에게 일을 시키기 위한 명령어)

3) 어셈블리에 의한 바이너리 코드 생성

어셈블리 코드를 CPU가 이해할 수 있는 바이너리 코드로 변환하는 작업

4) 링커에 의한 연결과 결합

프로그램내에서 참조하는 함수나 라이브러리들을 연결시키는 작업

 

링커 단계까지 완료 되면 실행파일이 생성됩니다.

 

프로그램 실행 과정

실행파일을 실행하면 그 실행파일의 명령어들이 메모리에 올라갑니다.

1) Fetch

메모리에 있는 명령어를 CPU에 있는 레지스터로 가져옵니다.

메모리와 CPU는 다른 장치 이므로 입출력버스를 통해 가져오게 됩니다.

데이터 버스(Data Bus) - 데이터를 이동시킵니다.

어드레스 버스(Address Bus) - 주소값을 이동시킵니다.

컨트롤 버스(Control Bus) - 어떤 명령인지 전달합니다.

2) Decode

가져온 명령어를 CPU 의 컨트롤 유닛이 해석합니다. 

3) Execution

해석한 내용대로 CPU의 ALU 가 연산합니다.

 

알고 넘어가야할 것

1. ALU 와 컨트롤 유닛의 기능적 역할

2. 레지스터의 필요성

3. 클럭 펄스의 필요성

4. Fetch, Decode, Execution

5. 버스 인터페이스

 

'윤성우 저자'님의 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 책을 보고 정리한 내용입니다.

 

Comments