'기초'에 해당되는 글 2

  1. 2008.04.01 GRANULARITY in Kernel
  2. 2008.04.01 2의 보수에 대한 이해

GRANULARITY in Kernel

사전에는 "입도/단위" 라고 되어있다.
kernel 개념에서는 그렇다면 GRANULARITY 라는 단어는 어떤 의미로 쓰였을가?

Kernel에는 여러가지 단위가 존재한다.
예를 들어 시간과 관련된 것에는

Micro-seconds, Milli-Seconds, Nano-Seconds 등등
하지만 이런 것들은 단위가 비슷하면서도 다르다.

위의 요소들은 CPU의 Ticks의 값에 의해 좌우된다.
같이 비교할 수 있는 공통 요소가 있는 셈이다.

이때 Ticks는 GRANULARITY의 의미를 취할 수 있다.
예가 좀 부실하다...

다른 예를 들어볼까?

초코파이가 Box가 있다.
A Box는 20개로 구성된 Box고, B Box는 12개로 구성된 Box 다.

앗! 이미 우리는 Box 를 설명하면서 초코파이 1개를 기준으로 제시하고 있다.
쓰윽 보기엔 다른 단위이지만, 비교를 위한 초코파이 1개의 단위는...
위에서 계속 설명하는 GRANULARITY의 개념을 보여주고 있다.

이 예시에서 GRANULARITY는 초코파이 1개가 된다. 

2의 보수에 대한 이해

일반 프로그램이나 컴퓨터에서 음수의 표현은 하이픈(-) 을 숫자에 앞에 붙이는 것으로
표현한다.

하지만  기계어 수준으로 내려간다면 단순히 0과1로 구성된 이진수 체계로 구성되어 있는데,
이때는 하이픈(-)이라는 표시를 어떻게 표현해야할까?

기계어 수준에서는 2의 보수라는 것을 이용한다.

예를들어, 5 의 경우 2의 보수는. 다음과 같은 과정을 거친다.

(1) 일단 1의 보수를 만들고

    5의 이진수는 0000000000000101(2)
    위의 값을 0은 1로, 1은 0으로 바꾸는 것으로 1의 보수화를 한다.
    결과는 따라서
1111111111111010(2)

(2) 1의 보수에 1을 더한다.

    5에대한 1의 보수 + 1
    = 1111111111111010(2) + 1(2)
    = 1111111111111011(2)

(3) 5에 대한 2의 보수를 구했다.

    1111111111111011(2) 가 5에 대한 2의 보수이다.

(4) 5에 대한 2의 보수와 5의 이진수 값을 더하면, 마이너스와 같은 역할을 한다.

    0000000000000101(2) + 1111111111111011(2)
    = 1000000000000000(2)

(5) 최상휘 비트에 대한 올림의 경우 해당 변수의 영역을 넘어섬으로,
    무시된다.

어떤가 알고나니 신기하지 않은가....? ^^