[운영체제] 레지스터란?

[운영체제] 레지스터란?


레지스터(Register)의 이해

레지스터는 CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이다.


실제로 컴퓨터에서 데이터를 영구적으로 저장하기 위해서는 하드디스크를 이용해야 하고,
임시적으로 저장하는 장소를 메모리(RAM)이라고 알고 있을 것이다.

하지만, 메모리로 연산의 결과를 보내고 영구적으로 저장할 데이터를 하드디스크에 저장해야 하는 등의 명령을 처리하기 위해서는 이들에 대한 주소와 명령의 종류를 저장할 수 있는 기억 공간이 하나 더 필요하다.
그리고 이 공간은 무리 없이 명령을 수행하기 위해 메모리보다 빨라야 한다.
바로 이런 역할들을 하는 것이 CPU옆에 붙어있는 레지스터이다.

레지스터는 공간은 작지만 CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 실제 수십 배에서 수백 배까지 빠르다.

그리고 CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에 메모리로 직접 데이터를 전송할 수 없다.
때문에 연산을 위해서는 반드시 레지스터를 거쳐야 하며, 이를 위해서 레지스터는 특정 주소를 가리키거나 값을 읽어올 수 있다.


32비트(bit)? 64비트(bit)?

요즈음 컴퓨터들은 일반적으로 32비트/64비트 시스템을 많이 사용한다.

여기서 말하는 비트 수는 명령을 한 번에 처리할 수 있는 레지스터의 비트 수이다.
쉽게 말해 하나의 레지스터가 저장 가능한 공간의 크기가 32비트인지 64비트인지를 나타내는 것

32비트 시스템이 인식 가능한 메모리가 4GB인 이유가 이와 같은데, 32비트로 한 번에 표현 할 수 있는 주소가 4GB이기 때문이다.
물론 이는 다른 알고리즘을 사용하면 더 인식할 수도 있다. 하지만 이는 여러가지 문제점이 있다.

예전에 16비트 컴퓨터는 느리고 항상 불안정했었다.
항상 16비트로 데이터를 처리하기 때문이었는데, 16비트가 표현할 수 있는 주소 공간은 매우 협소했었다.
그런데 계속적으로 멀티미디어가 발전하고, 컴퓨터 시스템의 사용자가 늘어남에 따라 프로그램의 용량은 커져야 했고 더욱 많은 메모리 공간을 필요로 했다.
메모리 공간을 아끼기 위해서는 모두 같은 메모리 공간에서 프로그램을 실행시켜야 했고, 프로그램 간의 메모리 침범은 매우 빈번했다.

그런데 32비트 프로세서는 16비트 시스템 용량 부족의 숨통을 완전히 트이게 했다.
그도 그럴 것이 주소 공간을 비교해본다면 16비트(65535)와 32비트(4294967295)의 공간차이는 어마어마했기 때문이다.

하지만 이런 대단한 발견에도 부족하고 빅데이터라던지,
데이터 사용률의 증가라는 핑계로 또 현대의 컴퓨터는 용량이 부족이라는 한계에 대면하고 있다.
그래서 나온 것이 64비트 체제인데 네트워크 주소에서의 IPv4와 IPv6를 생각하면 이해가 쉽다.


출처

댓글

이 블로그의 인기 게시물

[Python] # -*- coding: utf-8 -*-를 쓰는 이유

[소프트웨어공학] NS(Nassi-Schneiderman) 차트

[컴퓨터네트워크] Telnet이란?