728x90

컴퓨터의 동작 방법

C 언어로 프로그램을 작성하는 방법을 배우기 전에, 컴퓨터가 어떻게 동작하는지 조금 알아두는 것이 좋습니다.
이 지식은 C 프로그램을 작성하는 것뿐만 아니라, 작성한 프로그램을 실행시킬 때 어떤 일이 일어나는지까지 이해하는 데 도움을 줍니다.

컴퓨터는 여러 가지 다양한 요소로 구성되어 있습니다.
    ▶ CPU는 컴퓨터가 하는 일의 대부분을 처리합니다.
    ▶ RAM은 프로그램과 파일들을 담는 저장공간의 역할을 합니다.
    ▶ 하드디스크 장치는 컴퓨터 전원이 꺼져 있을 때도 프로그램과 파일들을 기억합니다.
    ▶ 키보드, 마우스 등과 같은 주변 장치는 컴퓨터와 사용자가 의사소통하는 장치입니다.

프로그램을 제어하는 CPU
CPU가 하는 일은 생각보다 단순합니다. 메모리에서 명령을 하나 가져와서 실행한 뒤, 다음 명령을 가져와 실행합니다. 그리고 또 그다음 명령을 가져와 실행하는 이 작업을 계속 반복합니다.

CPU는 하나의 수를 저장할 수 있는 레지스터로 구성된 작업공간을 가지고 있습니다. 그중 한 레지스터에서 다음에 실행할 명령이 있는 메모리 주소를 저장하고 CPU는 이 정보를 이용해서 다음에 실행할 명령을 가져옵니다. CPU는 가져온 명령을 다른 레지스터에 저장하고, 주소를 저장한 레지스터에 그다음에 실행할 명령이 있는 주소로 갱신합니다.

CPU는 명령들을 모아놓은 명령 리스트를 갖고 있으며, 이 리스트에 있는 명령만 이해할 수 있습니다. CPU의 종류에 따라 이 명령 리스트가 다릅니다.

이 상황에서 알 수 있는 것이 두 가지 있습니다.

1. 컴퓨터에 저장되는 모든 것들은 하나의 수로 저장이 됩니다.
     - 수는 당연히 수로 저장이 됩니다.
     - 알파벳과 같은 문자들과 컴퓨터가 레지스터로 가져오는 명령들도 수로 저장이 됩니다.
     - 명령 집합에 속해 있는 각각의 명령들 또한 하나의 수치 코드를 갖고 있습니다.
2. 컴퓨터 프로그램은 최종적으로 이러한 수치 코드 명령으로 표현되어야 합니다.
     - 이것을 기계어(machine language)라 부릅니다.

컴퓨터의 동작 방식에 대해 정리하면 다음과 같습니다. 컴퓨터에 어떤 일을 시키려면, 해야 할 일이 무엇인지 그 일을 어떻게 하는지 지시하는 명령 리스트를 컴퓨터에 제공해야 합니다. 즉, 컴퓨터가 이해할 수 있는 언어(기계어)로 프로그램을 만들어 제공해야 한다는 것인데, 이것은 상당히 지루하고 힘든 작업입니다.

기계어로 명령을 적을 때는 두 수를 더하는 간단한 작업도 여러 단계로 쪼개서 해야 합니다.

1. 메모리 주소 100(임의의 주소)에 있는 수를 레지스터 1에 복사
2. 메모리 주소 104(임의의 주소)에 있는 수를 레지스터 2에 복사
3. 레지스터 1의 내용과 레지스터 2의 내용을 더한 뒤, 그 결과를 레지스터 1에 저장
4. 레지스터 1의 내용을 메모리 주소 108에 복사

두 수를 더하려면 위의 각 명령을 수치 코드로 나타내야 합니다.

728x90
728x90