HyeM

[윈도우즈시스템프로그래밍]_1장 컴퓨터 구조와 프로그래밍 본문

Study

[윈도우즈시스템프로그래밍]_1장 컴퓨터 구조와 프로그래밍

Hailey_HyeM207 2020. 1. 23. 20:52

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

 

[ 목차 ]

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

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

03. CPU에 대한 이해

04. 프로그램의 실행과정

05. 하드웨어 구성의 재접근

 


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

 

|   시스템 프로그램이란?

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

          ex) 운영체제

 

|  Windows시스템 프로그래밍이란?

   " Windows 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램을 구현하는 것"

 

 

 

 

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

  • CPU                  :  중앙처리장치, 핵심적인 역할
  • 메인메모리      : 프로그램 실행을 위해 존재하는 메모리 ( RAM 이라는 저장장치로 구성됨 ),   컴파일이 완료된 프로그램 코드가 올라가서  실행되는 영역
  • 입출력버스       :  컴퓨터의 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로 + 종류3가지

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 한빛미디어

 

03 . CPU에 대한 이해

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 한빛미디어

1. ALU (Arithmetic Logic Unit)

실제 연산을 담당하는 ALU 블록,   연산은 산술연산과 논리 연산 2가지로 나뉜다.

 

2. 컨트롤 유닛

명령어를 해석하고, 그 해석된 결과에 따라 적절한 신호

CPU의 다른블록에 보내는 일

   

      +실행파일 안에는 명령어가 저장되어있음. 명령어가 CPU 내부로 흘러 들어가야 CPU에게 일 시킬수 있음

 

3.  CPU 내부 레지스터들

임시적으로 데이터를 저장하기 위한 조그만한 메모리 공간. 

CPU의 종류에 따라서 그 개수와 형태가 다양함

 

     * 레지스터 : CPU 내부에 존재하는 2진 데이터 저장을 위한 저장장치

 

4. 버스 인터페이스

CPU 내에는 I/O 버스의 통신 방식을 이해하고 있는것.

( 어떻게 데이터를 전송하는지, 그에대한 프로토콜 혹은 통신방식 알고 있음  )

CPU는 버스 인터페이스를 통해서 CPU 내부에 저장되어 있는 데이터를 I/O 버스에 실어보내거나,

 I/O 버스를 통해서 전송되어 오는 데이터를 수신하기도 함

 

 

5.  클럭 신호  ( CPU의 구성요소는 x )

타이밍을 제공하기 위해 필요한 것

필요 이유 : 연산장치가 연산하는 속도 != 출력장치가 데이터를 가져가는 속도 

              => 속도가 느린 장치의 장단에 맞추기

 

 

 

 

04. 프로그램의 실행과정

 

@폰 노이만 : 컴퓨터 기본 모델을 제시한 人
   " 프로그램이라는 것이 존재하고, 이 프로그램은 컴퓨터 내부에 저장되어서 순차적으로 실행됨
    'Stored Program Concept' : 실행되어야 할 프로그램이 컴퓨터 내부에 저장됨

 

@프로그램 실행과정

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 한빛미디어

 

더보기

단계 1 전처리기에 의한 치환작업
             : #으로 시작하는 지시자의 지시에 따라서 소스코드 변경

단계 2 : 컴파일러에 의한 번역
             : 소스코드는 컴파일러에 의해서 어셈블리 코드로 변역됨
             + 어셈블리 코드 : CPU에게 일을 시키기 위한 명령을 조합해서 만들어진 프로그램언어

단계 3 : 어셈블러에 의한 바이너리 코드 생성

             +바이너리 코드 : 텍스트 코드에 상대; 1과 0으로만 구성 
             +어셈블리 프로그래밍 : ADD MIN NUL 같은 방식으로 프로그램을 구현한 것 
             + 어셈블러 : 어셈블리 코드를  CPU가 이해할수 있는 바이어리 코드로 바꾸어주는 프로그램

단계 4: 링커에 의한 연결과 결합 
             프로그램 내에서 참조하는 함수나 라이브러리들을 하나로 묶는 (연결) 하는 작업

끝 : 이 과정이 끝나면 실제로 실행 가능한 실행파일 생성 ( 바이너리 코드로 구성됨)

 

      => 프로그램의 기본 실행은 Fetch, Decode, Execution 

      Fetch : 메모리상에 존재하는 명령어를 CPU로 가져옴 
      Decode : 가져다 놓은 명령어를 CPU가 해석(분석)하는 단계 
      Execution : 해석된 명령어의 명령대로 CPU 실행하는 단계

 

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 한빛미디어

 

05.  하드웨어 구성의 재접근  [ 버스 시스템 ]

[ 버스 시스템 ] I/0버스


             Q. 명령어의 Fetch를 위한 데이터 전송 경로가 어떻게 되나?
               => 버스시스템 ( 데이터를 이동하는데 있어서 사용되는 전송 경로 )

I/0버스 _ 여러 장치들이 데이터를 주고 받기 위한 통로
        ex) Fetch연산 (메모리 -> CPU), CPU의 레지스터에 저장되어 있는 데이터를 메인 메모리에 저장( CPU -> 메모리)

 

종류 :

- 데이터버스 : 데이터(명령어 & 피연산자 ) 이동을 위한 버스

- 어드레스 버스 : 주소값을 이동하기 위한 버스 ( cpu가 0x1024의 데이터를 읽으려고 할때, 메모리영역에 주소값을 먼저 전달해야함 ; 메모리니는 해당 주소의 데이터를 전송하는 컨트롤러가 포함되어 있음 )
- 컨트롤 버스 : CPU가 원하는 바(사인)를 메모리에 전달할때 사용

 

 

 

정리 :

           1. CPU가 메모리에 sign 전달 => 컨트롤버스
                  " 데이터를 보내라 / 데이터가 간다 !  "


           2. 주소값을 주고 받음 => 어드레스버스

                   " s 0x1200에 있는걸로 / 0x1204번지에   "


           3.실제 데이터 전송 => 데이터 버스

 

 

 


전체 정리 그림

뇌를 자극하는 윈도우즈 시스템 프로그래밍 - 한빛미디어



 

위 글은 '뇌를 자극하는 윈도우즈 시스템 프로그래밍' 책을 참고하여 정리한 글 입니다.

 

 

 

 

'Study' 카테고리의 다른 글

네트워크 함수정리  (0) 2020.03.11
Comments