본문 바로가기

STUDY/컴퓨터 구조

컴퓨터 구조 1

1. 시스템 프로그래밍 / 프로그래밍


시스템프로그래밍이란 H.W를 모르는 사람도 컴퓨터를 사용할 수 있게 만든것이다. 

Window나 Unix에서 제공하는 lib를 사용하는 개발자도 시스템 프로그래머라 말할 수 있다.



2. 하드웨어의 구성 


> CPU : 레지스터 + ALU + 컨트롤유닛 + Bus Interface로 구성.

> 메인메모리 : RAM으로 구성. 컴파일된 프로그램 코드가 올라가서 실행되는 영역을 말한다.

  프로그램 실행을 위해 존재하는 메모리이다.

> I/O Bus : 하드디스크, 메인메모리, CPU와 연결되어 데이터 연결을 도와준다.


3. CPU 알아보기

> ALU : CPU에서 실제 연산을 담당하는 부분. (논리연산 / 산술연산)

> 컨트롤 유닛 : ALU는 명령어 자체를 이해해서 수행하지 못한다. 명령어를 해석해서 ALU에게 알려주는 부분이 컨트롤유닛. 

> 레지스터 : CPU에 명령어가 왔지만, ALU와 컨트롤유닛이 다른 작업 중일수도 있다. 

이 때, 임시적으로 data를 저장하는 CPU내의 작은 메모리가 레지스터이다. CPU에 여러개 존재한다.

>Bus Interface(Adapter) : I/O Bus의 통신을 가능하게 해주는 장치이다. 

CPU가 데이터를 버스에 싣거나 버스로부터 데이터를 받아오게 해준다. 

(통신방식에 맞게 data의 입출력을 도와준다.)

> 클럭 신호? 클럭은 빠르면 성능이 높아진다. 

 하지만 컴퓨터 시스템은 '동기화'가 되어야한다.  속도가 느린 장치의 장단에 맞춰주어야한다. 


4. 프로그램의 실행과정 


> 1. 전처리기 : '#'으로 시작하는 지시자에 따라 소스코드 변경. 

> 2. 컴파일러 : 컴파일러에 의한 어셈블리어로의 변경 

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

> 4. 링커 : 링커에 의한 연결, 결합. 프로그램내에서 참조하는 lib와 함수 등을 하나로 묶는 작업. -> exe파일 생성


--> 이과정을 거치면 실행파일이 생성되고, 메모리에 load 됨. 


> 1. Fetch : CPU의 레지스터로 명령어를 가져온다.     - 레지스터

> 2. Decode : 가져온 명령어를 해석한다.                 - 컨트롤 유닛

> 3. Execution : 해석된 명령어대로 CPU가 실행한다   - ALU



* 3번과 4번을 함께 연결해서 공부하면 좋습니다. 



5. Bus System


 Address Bus / Data bus / Control bus ... 


CPU 와 Main memory를 연결



* POINT ! 


-> ALU VS CONTROL UNIT  ?


 :  명령어의 내용대로 연산을 하는 주 요소는 ALU이지만 명령어를 분석해서 해야 할 일을 결정하는 요소는 CONTROL UNIT. 


->레지스터의 필요성 ?


 :  기본적으로 레지스터는 CPU에 존재하는 저장장치이다. 

  

-> 클럭 펄스의 필요성 


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


-> FETCH, DECODE, EXECUTION


 :  명령어의 실행단계는 메인메모리에 저장되어 있는 명령어를 CPU내부 REGISTER로 가져오고 ( FETCH ), 컨트롤 유닛에 의해 분석된 다음( DECODE ), ALU에 의해 연산이 이뤄진다 (EXECUTION)


-> BUS INTERFACE? 


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




※ 시스템 프로그래밍 카테고리부분은 윤성우 저자의 뇌를자극하는 시스템 프로그래밍 책을 기본으로 작성하였습니다.