1. 프로그램의 작동 원리
1
2
3
|
int a;
a = 1 + 2;
printf("%d\n", a);
|
cs |
① 프로그래머가 C언어 등의 고급 언어로 소스 코드를 작성한다.
1
2
3
4
|
0100101000010111
0011010010100010
0010100100001100
...
|
cs |
② 그 소스 코드를 컴파일해 기계어인 실행 파일(.exe)로 변환한다.
③ 프로그램이 실행될 때 실행 파일의 복사본이 메모리(보통 주기억장치)에 올려진다.
④ CPU가 메모리 상에 있는 exe 파일을 해석하고 실행한다.
2. CPU의 구조
CPU와 메모리는 실제로는 IC(Integrated Circuit) 로 불리는 전자 부품이다.
IC는 많은 수의 *트랜지스터로 구성된 전자 회로로, 마이크로 칩이라고도 불린다.
*트랜지스터: 반도체 3개(p-n-p 또는 n-p-n)를 이어붙인 것. 증폭 작용과 스위치 작용을 한다.
기능 면에서 볼 때 CPU는 다음과 같이 네 가지 요소로 이루어진다.
레지스터(register): 명령어와 데이터를 보관하는 영역. 일종의 메모리와 같다.
CPU에는 대략 20~100개 정도의 레지스터가 존재한다.
제어 장치(CU, Control Unit): 메모리의 명령어와 데이터를 읽어와 레지스터에 넣는다.
연산 장치(ALU, Arithmetic Logical Unit): 메모리로부터 읽은 데이터에 대해
산술 및 논리 연산을 한다.
클록 제너레이터(clock genarator): **쿼츠 무브먼트와 IC 칩으로 구성되며,
***클록 신호를 발생시킨다.
**쿼츠 무브먼트(Quartz movement): 쿼츠 시계에 쓰이는 무브먼트.
석영(quartz) 결정을 절단해 만든 작은 조각 양끝에 전극을 달고,
그에 전압을 걸면 주기가 일정한 진동이 일어난다.
***클록 신호(clock signal): CPU에 가해지는 전기적 진동(0 또는 1)의 속도를 나타내는 단위로, Hz로 표기한다.
클록 펄스라고도 하며, 클록 신호의 주파수가 클수록 CPU가 빠르게 작동한다.
3. 메모리
프로그래밍 언어에서 변수는 다음을 의미한다.
어떤 값을 저장할 수 있는 메모리 공간에 붙은 이름. 또는 그 메모리 공간 자체.
여기서 메모리 공간이란 보통 ****메인 메모리를 말한다.
이 메모리는 CPU와 연결되어 있고 명령어와 데이터를 저장하는 역할을 한다.
메인 메모리는 1바이트 단위로 구분되어 있는데, 이렇게 구분된 단위에는
주소, 번지 또는 어드레스(address)라고 부르는 숫자가 할당되어 있다.
따라서 CPU는 어드레스를 지정해 메인 메모리에 데이터를 읽고 쓴다.
****메인 메모리: 주기억장치. 프로그램이나 데이터를 보관하는 역할을 한다.
보통 DRAM(Dynamic Random Access Memory) 칩을 사용한다.
DRAM은 모든 주소에 대해 데이터를 읽고 쓸 수 있지만,
전원이 끊기면 모든 데이터가 사라진다는 단점이 있다.
정리하면, 프로그램이 실행되는 구조는 다음과 같다.
프로그램이 실행되면 제어 장치가 클록 신호에 맞춰 메모리부터 명령이나 데이터를 읽는다.
제어 장치가 명령어를 해석하고 실행하면서 연산 장치에서 데이터가 연산되고,
그 결과에 따라 제어 장치가 컴퓨터 전체를 제어한다.
여기서 제어란 보통 데이터의 연산을 제외한 처리 과정을 말하는데,
주로 데이터의 입출력 시점을 맞추는 것을 말한다.
키보드로부터의 입력이나 모니터로의 출력도 제어의 일종이다.
'Programming > Basis' 카테고리의 다른 글
비트 연산 (0) | 2019.03.04 |
---|---|
컴퓨터가 2진수를 사용하는 이유 (0) | 2019.03.03 |
CPU가 수행하는 작업 (0) | 2019.02.27 |
조건 분기와 함수 호출 (0) | 2019.02.27 |
레지스터 (0) | 2019.02.27 |