문자셋의 종류


SBCS(Single Byte Character Set)

- 문자를 표현하는데 1바이트를 사용한다.

ex)아스키 코드


MBCS(Multi Byte Character Set)

- 한글은 2바이트, 영문은 1바이트를 사용한다.

- Multi가 여러 바이트를 사용해서 Multi가 아니라 사용되어진 문자(한글,영어)에 따라서 결정되기 때문 Multi이다.


WBCS(Wide Byte Character Set)

- 문자를 표현하는데 2바이트를 사용한다.

ex)유니코드



여러가지 언어를 사용해서 개발해야 하는경우 효율적인 메모리 관리 때문에 MBCS만 사용하는 것이 아니라 WBCS도 사용해야 한다.

- 현재는 컴퓨터 시스템의 성능이 좋아져서 메모리 용량은 충분하다.

- WBCS는 모든 문자를 2바이트로 사용하기 때문에 안전성이 훨씬 뛰어나다.

- 프로그래밍을 할때 두가지 모두를 지원하기 위해서 typedef 선언을 통해서 프로그래밍한다.



WBCS 기반의 프로그래밍

- char -> wchar_t

- "ABC" -> L"ABC"

ex) wchar_t str[] = L"ABC";


SBCS 기반의 함수는 WBCS 기반의 함수로 변경이 가능하다.

ex) int main(int argc, char * argv[]) -> int wmain(int argc, wchar_t * argv[])

ex) strlen -> wcslen

ex) strcpy -> wcscpy

등등

컴퓨터의 모든 장치는 클럭 신호라는 것이 들어간다.


클럭 신호 : 클럭 발생기의 클럭, 일정한 간격마다 모든 장치에게 신호를 준다. 그 신호에 맟춰서 장치들은 동작을 하게 된다.


- 클럭 신호를 많이 주게 될 경우 작업을 빠르게 처리 할 수 있겠지만, 열이 발생하게 되고 높은 열은 불안전성을 유발한다. 

ex)cpu 오버클럭


이 클럭신호의 동기화가 필요한 이유


1. 연산장치가 2+3을 연산해서 결과를 Buffer에 저장한다.


2. Buffer에 있는 데이터를 출력장치가 가져 간다.


3. 만약 연산장치가 클럭이 10 이라 하고, 출력장치가 클럭이 5라 한다면, 연산장치의 클럭이 더 높으므로 출력장치가 Buffer에 5라는 데이터를 가져가기 전에 연산장치가 또다른 연산을 진행해서 출력장치는 5라는 데이터를 가져 갈 수 없게된다.


- 이러한 이유 때문에 클럭신호를 장치마다 일정하게 줘야한다.

ex)클럭신호의 동기화 기준은 연관있는 장치들의 가장 낮은 클럭 신호를 기준으로 해야한다.

CPU는 부분적으로 나누었을 때, 아래와 같이 4가지로 나눌 수 있다.


- ALU(Arithmetic Logic Unit) : 연산을 담당한다.


- 컨트롤 유닛 : 명령어를 해석하고 시그널을 보내준다.


- 레지스터 : 메모리(램)에서 얻어온 정보를 저장해준다.


- 버스 인터페이스 : 메모리(램)에 있는 정보를 CPU로 가져올 때 어떠한 방식으로 데이터를 주고 받을것인지를 정의 해둔 것이다.


연산과정은 아래와 같다.


1. 하드디스크에 있는 데이터가 입/출력 버스를 통해 메모리(램)로 이동된다.


2. 메모리로 옮겨진 데이터가 입/출력 버스를 통해 CPU로 이동하기 위해 버스 인터페이스를 거친다.


3. 버스 인터페이스가 정의해둔 데이터 처리 방식으로 전달받은 데이터를 처리하고, 레지스터에 저장해둔다.


4. 컨트롤 유닛은 레지스터에 저장되어 있는 데이터를 해석해서 ALU에게 연산을 하라는 시그널을 보내고, 피연산자를 ALU로 이동하게 만든다.


5. ALU는 직접전인 연산을 수행하고 그 결과를 레지스터에 저장한다.

+ Recent posts