간단 지식/System Programming

01. byte 지향 메모리 조직

납작한돌맹이 2020. 9. 10. 04:05
반응형
  • 컴퓨터가 2진수를 사용하는 이유

현재 컴퓨터는 2진 체계를 사용한다. 사람의 입장에선 10진수가 더 좋아 보이는데 왜 2진수를 사용하는 걸까? 

그 이유는 10진수를 사용하면 전자/전기적 이행의 문제로 인해 저장,전송이 불편해지기 때문이다. 10진수는 10을 기수로 하는 기수법이기 때문에 10단계 신호를 부호화해야 한다. 따라서 높은 정밀도를 필요로 하며 연산과 같은 디지털 논리 기능 이행의 복잡함이 문제가 된다. 그래서 고안된 방법이 쌍안정 회로의 특징을 이용한 2진 체제이다. 더군다나 컴퓨터에는 최대 5V까지의 전류가 흐르도록 제한되어 있는데 0은 0.0V ~ 0.5V, 1은 2.8V ~ 3.3V까지 저장할 수 있다. 즉 0과 1을 오가며 부호화를 진행해도 아무 문제가 없다.

 

  • byte 지향 메모리 조직

우리가 사용하는 컴퓨터 시스템의 메모리는 byte를 지향하도록 조직되어있다. 이 byte들은 정렬되는 방식이 정해져 있는데 이를 byte ordering이라고 하며 빅엔디안, 리틀엔디안으로 총 2가지 방식이 있다. 

 

Big Endian

Sun, Mac에서 사용

MSB(Most Significant Byte) 규칙

 

Little Endian

Alpha, PC에서 사용

LSB(Least Significant Byte) 규칙

 

MSB는 최상위바이트, LSB는 최하위바이트인데 무작정 외우기보단 본질부터 이해하는 것이 좋다. byte의 이전단위인 bit를 보자. 예를 들어 8bit 10110110 에서 최상위 bit는 가장 왼쪽의 1, 최하위 bit는 가장 오른쪽의 0이다. 이런 8bit가 4개 모여 1byte 10110110 00001101 11011000 10110001 이 있다고 가정하면 최상위 byte는 10110110, 최하위 byte는 10110001 이다. 이때 아래 그림처럼 빅 엔디안 규칙에 따르면 최상위 byte부터 저장하게 되고, 리틀 엔디안 규칙에 따르면 최하위 byte부터 저장하게 된다.

(참고로 개발자는 사람이기 때문에 2진수는 활용하기 어려움이 있어 표기는 16진법을 사용한다.)

이렇게 협약이 하나로 통일되지 않아 발생하는 문제점이 통신에러이다. 빅엔디안 컴퓨터와 리틀엔디안 컴퓨터가 통신을 하면 그 사이에 오고가는 data는 파손된다. 그래서 네트워크를 통해 통신하는 data는 무조건 빅엔디안으로 변환해서 전송하는 것이 원칙이다.

 

 

 

(이 글이 도움이 됐다면 광고 한번씩만 클릭 해주시면 감사드립니다, 더 좋은 정보글 작성하도록 노력하겠습니다 :) )

반응형