정체불명의 모모
[뇌를 자극하는] 1장. 컴퓨터 구조에 대한 첫 번째 이야기 - 1 본문
본 글은 뇌를자극하는 윈도우즈 시스템 프로그래밍책을 바탕으로 작성 하였습니다.
Section 01 . 시스템 프로그래밍의 이해와 접근
시스템 프로그래밍(System Programming) 이란?
기본적인 개념 : "컴퓨터 시스템을 동작시키는 프로그램"
내용 : 대표적인 시스템 프로그램으로 있는 Windows, UNIX 와 같은 운영체제들이 있다.
이러한 소프트웨어들은 하드웨어를 모르는 사용자들이 컴퓨터를 쉽게 사용할 수 있도록 도와준다.
따라서 운영체제는 시스템 프로그램의 범주에 속하고, 이러한 운영체제 개발자들을 가르켜 시스템 프로그래머라 말할 수 있다.
결론 : "시스템 프로그램이란 하드웨어를 사용할 수 있도록 도와주는 프로그램을 말한다."
시스템 프로그래밍 폭넓은 정의 : 보통 컴퓨터 시스템이라고 하면 하드웨어만을 뜻하는 것이 아니다.
하드웨어가 실제 일을 하게끔 도와주는 운영체제를 포함하는 것이 보통이다.
따라서 Windows 시스템 프로그래밍이란 Windows 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램을 구현하는것.
(이런한 프로그램 작성을 위한 라이브러리는 Windows 운영체제에 의해 제공된다.)
최종 목표 : 시스템 프로그래밍을 제대로 공부하기 위해서는 운영체제와 컴퓨터구조를 잘 알아야 한다는 결론이 나온다.
컴퓨터 시스템의 주요 구성요서(Main Components)
: 컴퓨터 시스템을 구성하는 주요 구성요소는 다음과 같다.

Section 02. 컴퓨터 하드웨어의 구성

CPU(Central Processing Unit)
: 우리가 흔히 말하는 "중앙처리장치"가 바로 CPU이다.(연산 담당)
CPU는 컴퓨터 프로그램의 실행에 있어서 핵심적인 역할을 담당한다.
따라서 컴퓨터의 머리에 해당한다고 생각하면 된다.
메인 메모리(Main Memory)
: 램(RAM)이라는 저장장치로 구성되는 메인 메모리는 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역이라고 간단히 정의할 수 있다.
(실행을 위해 존재 하는 메모리)
입ㆍ출력 버스(Input / Output Bus)
: 입ㆍ출력 버슨느 컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로이다.
고속도로에 비유되는 것이 보통인데, 주고 받는 데이터의 종류와 역할에 따라서 어드레스 버스(Address Bus), 데이터 버스(Data Bus)
그리고 컨트롤 버스(Control Bus)이렇게 세가지로 구분이 된다.
그림에서 보여주듯이 하드 디스크 , 메인 메모리 , CPU 등등이 모두 버스에 연결되어 있다.
때문에 이런한 버스 시스템을 기반으로 하드디스크에 있는 데이터를 메인 메모리로 , 메인 메모리에 있는 데이터를 하드디스크로 전송하는것이 가능하고,
메인 메모리와 CPU 사이에서의 데이터 입ㆍ출력도 가능하다.
Section 03. CPU에 대한 이해
ALU(Arithmetic Logic Unit)
: CPU는 덧셈이나 뺄셈과 같은 연산을 진행하는 주체이다.
그런데 CPU 내부에는 실제 연산을 담당하는 ALU라는 블록이 있다.
( 그 밖에 나머지 블록들도 연산을 하는데 도움을 주는 블록들이다.)

ALU가 처리하는 기본적인 연산은 크게 두가지로 나뉜다.
◆ 산술 연산 (덧셈이나 뺄셈과 같은)
◆ AND 나 OR와 같은 논리 연산이다.
컨트롤 유닛(Control Unit)

: CPU가 처리해야 할 명령어들을 해석하는 것이다.
CPU 내부로 흘러 들어오는 명령어를 보고선 다음과 같은 결정을 내린다.
" 아하 이 명령어는 덧셈을 하라는 뜻이군! 그렇다면 ALU에게 덧셈을 하도록 신호를 보내줘야 겠어 "
이 처럼 컨트롤 유닛은 명령어를 해석하고, 그 해석된 결과에 따라 적절한 신호를 CPU의 다른 블록에 보내는 일을 한다.
CPU의 총사령관 정도로 생각하녀 된다.
CPU 내부에 존재하는 레지스터들(Register Set)
: CPU 내부에도 임시적으로 데이터를 저장하기 위한 조그마한 메모리 공간이 필요한데.
이러한 메모리가 레지스터(Register)라는 아주 작은 메모리가 CPU 내에 존재한다.
(레지스터란 CPU 내부에 존재하는 2진 데이터(Bi nary Data) 저장을 위한 저장장치이다.
크기가 큰 메인 메모리나 하드디스크와 달리 , CPU에 따라서 16 , 32, 64 비트 정도의 데이터를 저장 한다.)
버스 인터페이스(Bus Interface)
: 앞에서 명령어와 데이터들이 CPU안으로 잘 흘러 들어갔다고 가정하였는데, 이것이 가능한 이유는 버스 인터페이스가 있기 때문이다.
서로 데이터를 주고 받기 위해서는 어떠한 매개체가 있어야 할 것 인데, 이것이 바로 I/O 버스(Bus)이다.
즉, CPU 내에는 I/O 버스의 통신방식을 이해하고 있는 그 무엇인가가 있어야만 한다는 것이다.
이 역할을 해주는 것이 바로 '버스 인터페이스(Bus Interface)' 이다. 이 버스 인터페이스 장치는 버스가 어떻게 데이터를 전송하는지,
그에 대한 프로토콜 혹은 통신 방식을 알고 있는 녀석이다.
따라서 CPU는 버스 인터페이스를 통해서 CPU 내부에 저장되어 있는 데이터를 I/O 버스에 실어 보내기도 하고, I/O버스를 통해 전송되어
오는 데이터들을 수신하기도 한다.
클럭 신호(Clock Pulse)
: 클럭 신호는 CPU를 구성하는 요소는 아니다.
그러나 CPU를 구성하는 구성 요소에 제공되어야 하는 신호로서 아주 중요한 의미를 지니기에 여기서 소개를 하고자 한다.
클럭 신호는 타이밍(Timing)을 제공하기 위해서 필요한 것이다.
CPU의 클럭 속도가 높으면 초당 처리하는 명령어의 개수가 많아지므로 컴퓨터의 전체적인 성은은 좋아지기 마련이다.
" 클럭발생기에 의해 발생되는 클럭 신호(Clock Pulse)는 CPU를 구성하는 요소 요소에 제공되며, 이신호에 맞춰서 CPU가 일을 한다."
클럭 발생기에 맞춰 CPU가 일을하는것은 동기화 때문이다.
'윈도우즈 시스템 프로그래밍' 카테고리의 다른 글
[뇌를 자극하는] 1장. 컴퓨터 구조에 대한 첫 번째 이야기 - 2 (0) | 2021.06.05 |
---|