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의 통신방식에 맞게 데이터 입/출력을 돕는 인터페이스 장치가 있어야 하며, 이 인터페이스 장치를 가리켜 컨트롤러 혹은 어댑터 라고 부른다.
※ 시스템 프로그래밍 카테고리부분은 윤성우 저자의 뇌를자극하는 시스템 프로그래밍 책을 기본으로 작성하였습니다.
'STUDY > 컴퓨터 구조' 카테고리의 다른 글
빅오(Big-O) 표기법 (0) | 2018.03.12 |
---|---|
[Context Switching] 프로세스와 쓰레드에서의 컨텍스트 스위칭 (0) | 2018.03.02 |