1. 문자셋의 종류와 특성

아스키코드(ASCII CODE) : 1바이트(256개), 알파벳과 몇몇 확장 문자를 포함.

유니코드(UNICODE) : 2바이트(65,536개), 영어가 아닌 다른언어를 표현하기 위해 등장한 코드체계.


1) SBCS(Single Byte Character Set)

1Byte만을 사용하는 방식

- 아스키 코드

 

2) MBCS(Multi Byte Character Set)

1Byte, 2Byte 를 혼용해서 사용하는 방식

-  유니코드는 MBCS에 속하지 않는다. MBCS는 SBCS를 포함한다.

- MBCS는 대부분의 문자들을 2바이트로 처리하고, 경우에 따라 1바이트로 처리한다.

- 효율적이지만 프로그램 구현시 주의가 필요하다.

 

3) WBCS(Wide Byte Character Set)

2Byte만을 사용하는 방식

- 유니코드 




시스템 프로그래밍(System Programming)

: 컴퓨터 시스템(하드웨어, 크게 보면 운영체제까지)을 컨트롤하는 프로그램을 만드는 것.

: Windows 시스템 프로그래밍이란 Windows 운영체제 기반의 컴퓨터에게 일을 시키기 위한 프로그램을 구현하는 것.



컴퓨터 시스템의 주요 구성요소



컴퓨터 하드웨어의 구성

  • CPU(Central Processing Unit): 중앙처리장치

ALU(Arithmetic Logic Unit)

: 산술 논리 연산장치, CPU 내부에 실제 연산을 담당하는 블록.

: ALU가 처리하는 연산은 크게 산술 연산과 논리 연산으로 나뉜다. (아주 복잡한 프로그램도 CPU입장에서는 대부분 이 두가지 형태의 연산으로 이뤄짐.)


컨트롤 유닛

: 실행파일에는 CPU에게 일을 시키기 위한 명령어(Binary형태)들이 저장되어 있다. 연산만 할 수 있는 ALU를 위해 명령어를 해석해주는 것이 컨트롤 유닛.


레지스터

: CPU내부에 임시적으로 데이터를 저장하기 위한 조그마한 메모리 공간 


버스 인터페이스 

: CPU, RAM,  하드디스크, 그래픽 카드등의 컴퓨터 구성 요소들이 서로 데이터를 주고 받기위한 매개체가 입출력 버스이다.

: 버스 인터페이스는 이입출력 버스를 이용하기 위한 프로토콜 혹은 통신방식을 알고 있다.

: CPU는 버스 인터페이스를 통해 CPU 내부 데이터를 I/O 버스에 송.수신한다.


클럭 신호

: CPU는 매 클럭이 발생할 때마다 그 클럭에 맞춰서 일을 한다. 

: CPU의 클럭 속도가 1.6Mhz이면 1초당 1,600,000번의 일을 하게된다.

: 클럭 신호에 맞춰서 일을 하는 이유는 컴퓨터 시스템이 동기화를 필요로 하기 때문.

 

  • 메인 메모리: RAM, 컴파일이 완료된 프로그램 코드가 올라가서 실행되는 영역, 프로그램 실행을 위해 존재하는 메모리
  • 입.출력 버스: 컴퓨터를 구성하는 구성요소 사이에서 데이터를 주고 받기 위해 사용되는 경로.


프로그램의 실행과정


폰 노이만 : 프로그램이 컴퓨터 내부에 저장되는 구조를 생각해낸 사람, Stored Program Concept


프로그램의 실행과정

: 전처리기, 컴파일러, 어셈블러, 링커를 거쳐서 만들어진 실행파일 안에는 컴퓨터에게 일을 시키기 위한 명령어(Binary)가 들어 있다.
: 명령어들이 메모리에 올라가고 난 후 CPU에 의해 순차적으로 실행된다.
: 명령어들은 CPU내부로 하나씩 이동한 다음 실행하게 된다. 이 때 3단계를 거친다.
1. Fetch: 메모리상에 존재하는 명령어를 가져오는 작업
2. Decode: 가져다 놓은 명령어를 CPU가 해석하는 단계
3. Execution: 해석된 명령어의 명령대로 CPU가 실행하는 단계 


위 이미지와 같은 프로그램의 실행과정을 좀 더 컴퓨터 구조에 맞게 그려보면 아래와 같다. 
메인 메모리에 저장된 명령어는 I/O버스를 통해 IR(Instruction Register)에 저장되고, 이 저장된 명령어는 컨트롤 유닛에 의해 해석되어서 ALU에 의해 실행된다.



버스 시스템


Data Bus: 데이터를 이동하기 위해 필요한 버스, 이때 데이터는 명령어, 피연산자 등.

Address Bus: 주소값을 이동하기 위해 필요한 버스.

Control Bus: CPU가 원하는 바를 메모리에 전달할 때 사용하는 버스.




'Tech > Windows' 카테고리의 다른 글

[Windows System Programming] 아스키코드 vs 유니코드  (0) 2016.09.23