본문 바로가기
IT story

컴퓨터 구조 3장 - 프로그램 밑의 세계 -

by ChocoPeanut 2017. 4. 12.

컴퓨터 구조 3

- 프로그램 밑의 세계 -

 

컴퓨터는 하드웨어적으로 소프트웨어적으로 어떻게 구성이 되어 있을까?

 

먼저 하드웨어적인 부분을 생각해보도록 하자.


컴퓨터의 고전적 구성 요소 다섯 가지는 입력, 출력, 메모리, 데이터패스, 제어 유닛이다. 데이터패스와 제어 유닛을 합쳐 프로세서라고 부른다. 우리가 가진 컴퓨터를 한 번 뜯어보도록 하자. 우선 본체를 뜯어보기 전에 우리는 먼저 입력 장치와 출력 장치를 볼 수 있다. 마이크나 키보드 등이 입력 장치이고 스피커나 디스플레이와 같은 것이 출력 장치가 될 수 있다. 최근에는 터치스크린을 많이 사용하여 입출력을 동시에 작동한다. 터치스크린은 정전용량 감지 기법을 사용하여 만들어진다.


이제는 컴퓨터의 상자를 한 번 열어보자. 본체를 뜯으면 집적회로 또는 칩이라고 불리는 장치들이 있는데 컴퓨터의 원동력이라고 할 수 있다. 여기에 프로세스가 존재하는 우리는 쉽게 CPU라고 부른다. 입출력장치로부터 신호를 받거나 보내면서 작동을 지시하는 역할을 한다. 또한 컴퓨터의 계산과 검사에 대한 역할도 한다. 이러한 CPU는 연산을 수행하는 데이터패스와 지시하는 역할을 하는 제어 유닛으로 나눌 수 있다. 다른 부분에는 메모리가 존재한다. 실행 중인 프로그램과 프로그램이 필요한 데이터를 기억하는 것이 바로 메모리이다. 메모리에도 여러 가지 종류가 존재한다. DRAM으로 이루어진 메모리가 있고 캐시 메모리와 같이 SRAM으로 이루어진 메모리도 있다. 앞선 장의 위대한 아이디어 중 메모리 계층 구조를 통해 다양한 메모리가 유기적으로 동작을 하게 된다.


하드웨어의 설계에서는 추상화가 큰 역할을 한다. 하드웨어와 최하위 소프트웨어 간의 인터페이스에 추상화를 적용시킨다. 이러한 인터페이스를 명령어 집합 구조라고 명명한다. 입출력 작업, 메모리 할당 및 기타 저수준 시스템 기능의 세부사항은 운영체제가 감추어서 응용 프로그래머가 이러한 세세한 부분을 걱정하지 않아도 되도록 해 주는 것이 일반적이다. 우리가 코딩을 하는 것이 컴퓨터에 인식되는 과정이 바로 추상화 과정이다.

 

이제 소프트웨어 부분을 살펴보자. 하드웨어 마지막 부분에 잠깐 소프트웨어가 나오긴 했지만 지금부터는 자세히 알아볼 것이다.


우리는 다양한 상위 버전의 툴들을 이용하여 프로그램을 작성한다. 그러면 이러한 프로그램을 컴퓨터는 어떻게 인식을 할 것인가에 대해 생각을 해보아야한다. 여기는 추상화라를 개념이 매우 크게 적용된다. 우리는 컴퓨터가 인식하는 언어가 비트 언어라는 것을 이미 알고 있을 것이다. 컴퓨터는 01의 세계로 모든 것을 인식하고 판별한다. 초기 프로그래머들은 이러한 기계어를 통해 컴퓨터와 대화를 하였다. 하지만 현재는 다양한 상위 버전의 언어들이 나와 있고 컴퓨터가 자체적으로 알아서 기계어로 바꾸어 해석을 한다. 우리는 01의 세계에 대해 자세히 모르더라도 프로그램을 만들 수 있는 이유가 바로 추상화 때문인 것이다.


시스템 소프트웨어에서 가장 큰 부분은 운영체제컴파일러이다. 운영체제는 사용자 프로그램과 하드웨어 간의 인터페이스 역할을 하면서 각종 서비스와 감독 기능을 제공한다. 기본적 입출력 작업 처리, 메모리 할당 등 다양한 역할을 하는 것이 운영체제이다. 컴파일러는 명령어를 번역하는 역할을 한다. 상위 버전의 언어를 인식해서 어셈블리 언어로 만들어 준다. 하지만 어셈블리 언어도 사용자가 알 수 있는 언어이다. 이런 언어를 컴퓨터의 언어인 기계어로 바꾸어 주는 것이 어셈블러이다. 뒤의 장들에서 우리는 어셈블리 언어인 MIPS에 대해서도 배울 예정이다. 그러면 어떻게 명령어가 해석되어 컴퓨터가 인지하는지를 이해할 수 있을 것이다.