Encoding
: 대상 information을 code로 변환하는 과정 또는 규칙Decoding
: code로부터 원래의 information으로 얻는 과정 또는 규칙ASCII
의 7bit base를 8bit로 확장한 codeANSI
를 활용한 대표적 한글 code는 CP949
ANSI
를 한글 지원을 위해 확장한 형태로 모든 한글을 표현하진 못함.Unicode
는 엄밀히 말해, code이지 encoding이 아님.Unicode
기반의 encoding은 UTF-8
(가변길이) , UTF-16
(가변길이) , UTF-32
(고정길이) 등이 있기 때문에 사용한 encoding 방식에 따라 저장되는 byte가 달라지게 됨.ANSI
, ASCII
는 code에 해당하는 바이트가 그대로 저장되기 때문에 code이자 encoding으로 볼 수 있음.UTF-16
혹은 ANSI
계열의 encoding이 사용됨.UTF-8
이 등장하며 단일 encoding으로 다국어가 처리가 가능해짐.UTF-8
을 기본으로 사용하며 실질적인 표준이 됨.UTF-32
는 고정형으로 어찌보면 가장 처리가 쉬운 방식이지만 문자 하나에 4bytes를 쓴다는 단점이 있음.UTF-8(Universal Coded Character Set+Transformation Format-8bit
한 문자를 표현하는데 1~4bytes를 사용하며 하위 1byte는ASCII
와 호환.
한글의 경우, 한 글자를 나타내는데 대부분 3bytes가 사용되어 효율성이 떨어지는 편.
- 1byte만 사용하는 경우
MSB
가0
으로 시작- 2bytes 사용하는 경우 상위 byte는
110
으로 시작, 하위 byte는10
으로 시작- 3bytes 사용하는 경우 상위 byte는
1110
으로, 나머지 하위 byte들은10
으로 시작- 4bytes 사용하는 경우 상위 byte는
11110
으로, 나머지 하위 byte들은10
으로 시작
=
을 붙임단,
ASCII
의 printable character들은 사실상 7bit로 그대로 전송TAB
, SPACE
와 QP encoding에서 사용하는 =
은 예외로 각 ASCII 코드값에 =
을 붙여 전송
TAB
:=09
,SPACE
:=20
,=
:=3D
=
로 끝남
- 1byte가 3개의 글자로 표시되므로 전부 non-ascii인 한글 글자의 UTF-8 encoding된 byte의 경우, 25문자가 한 line에 표시됨.
- 이며 soft linebreak를 더해 76글자
+
, -
문자들을 사용=
문자로 padding
을 하여 3의 배수로 맞춰줌.escape sequence
(특별한 의미를 가진 문자)를 그냥 문자 그대로 사용하기 위해서 해당 문자의 ASCII 값을 16진수로 표현하고 이를 %
뒤에 붙여서 기재함.%
를 붙여 변환됨.%
와 16진수 숫자 2개로 바꾸어 처리함.Interpreter language
- line단위로 컴파일 없이 시행되는 언어
- 컴파일 없이 라인 단위 실행이 가능하기 때문에 개발단계에서 적은 양의 수정에 대한 결과 쉽게 확인 가능
Python
,Java Script
etc...
Virtual Machine
- HW의 발전으로 가능해진 것으로 마치 여러 application에서 시분할 기술을 통해 단일 OS에서 실행하는 것처럼, 여러 OS를 단일 물리적 시스템에서 시분할로 실행하는 방법
- OS는 HW에서 수행되는 instruction set이 있고 HW와 상호작용 하기 때문에 "실제 물리적 시스템의 HW에서 해당 작업을 담당하는 “Host OS" 와 "VM 내의 OS" 사이에서 VM 내 OS 요청을 Host OS가 수행할 수 있는 요청으로 변환해주는 중간자가 필요함
- 이는 일종의
interpreter
라고 볼 수 있음.- 클라우드 환경을 이루는 데이터 센터에서 가장 유용하게 사용됨.
Reference:
1) https://shaeod.tistory.com/228
2) https://dsaint31.me/mkdocs_site/CE