3.1 A Historical Perspective x86이라고 불리는 Intel 프로세서 라인은 긴 발전적인 개발이 있었다. 높은 성능과 더 발전된 운영체제를 지원하기 위한 요구에 맞게 기술적인 향상에 이점을 띄었다. Intel의 프로세서는 8086 -> Pentium -> Core i7 등으로 발전하였다. Intel은 그들의 프로세서 라인에 다양한 이름을 갖고 있다. Intel Architecture 32-bit의 IA32이고 최근에는 Intel64로 x86-64로 불리고 있다. 많은 회사들이 인텔 프로세서와 호환 가능한 프로세서들을 생산하였다. 이 중의 최고는 AMD(Advanced Micro Devices)이며 늘 Intel에 기술적으로 뒤쳐졌으며 시장 점유율에서도 밀렸다. (최근에는 AMD가 엄..
2.4 Floating Point 부동 소수점(Floating Point) 표현법은 유리수를 인코딩하는 방법이다. x × 2^y 의 형태 어떻게 숫자가 IEEE 부동 소수점 표현 방식으로 표현되는 지 보자. 2.4.1 Fractional Binary Numbers 부동 소수점 수를 이해하는 첫 번째 단계는 분수값을 가지는 이진수를 고려해야 한다. '.' 은 이진 포인트(binary point) 이며 왼쪽에 비트는 2의 거듭 제곱의 값을 갖고 오른쪽은 2의 음수 거듭 제곱의 값을 갖는다. 이진 포인트를 오른쪽으로 하나 시프트하면 2를 곱하는 값의 효과를 얻는다. 유한한 길이의 인코딩으로 고려하면 1/3이나 5/7과 같은 수를 정확하게 표현할 수 없다. 1/5 같은 경우 십진 소수로 나타내면 정확히 0.02..
2.2 Integer Representations 정수를 인코딩하는 두가지 다른 방법이 있다. 하나는 부호가 없는 수, 다른 하나는 음수, 0, 양수를 표현하는 것이다. 위의 표는 어떻게 컴퓨터가 정수를 인코딩하고 연산하는 지에 대한 수학적 용어이다. 2.2.1 Integral Data Types C는 다양한 정수형 데이터 타입을 지원하며 유한한 범위의 정수를 표현한다. 다른 사이즈에 맞게 할당되는 바이트 수는 프로그램이 32비트나 64비트로 컴파일 되는지에 따라 다르게 한다. 고정 사이즈 데이터 타입을 제외하고는, 양수와 음수에 대한 대칭 범위를 요구한다. 2.2.2 Unsigned Encoding w 비트의 정수형 데이터 타입이 있다. 이진법으로 표현할 때 각 비트의 부호가 없다는 것을 포함한다. 각..
2.1 Information Storage 대부분의 컴퓨터는 메모리의 개별 비트를 접근하기 보다는 8비트, 혹은 바이트(byte) 단위로 접근한다. 기계 수준(machine-level) 프로그램은 (가상) 메모리를매우 큰 바이트 배열로 본다. 메모리의 모든 바이트는 주소(address)라고 불리는 유일한 번호로 식별되고, 주소들의 집합을 가상 주소 공간이라고 한다. 어떻게 컴파일러와 런타임 시스템이 다른 프로그램 오브젝트를 저장하는 메모리 공간을 관리할 수 있는 단위로 나눌 수 있는 가를 공부한다. 2.1.1 Hexadecimal Notation 한 단일 바이트는 8비트이다. 이진수로 00000000 ~ 11111111의 범위를 갖는다. (Decimal : 0 ~ 255) 이진수는 장황하고 복잡하기 때..
1.7 The Operating System Manages the Hardware hello 프로그램 예시에서, 쉘이 hello 프로그램을 로드하고 실행하고, hello 프로그램이 화면에 출력되면, 프로그램은 키보드, 화면, 디스크 또는 메인 메모리에 직접적으로 접근하지 않는다. 대신에 그들은 운영체제(operating system)에 의해 제공되는 서비스에 의존한다. 우리는 운영체제를 응용 프로그램과 하드웨어 사이에 있는 소프트웨어로 생각한다. 응용 프로그램에 의해 하드웨어를 조작(manipulate)를 하려는 모든 시도들은 운영체제를 거친다. 운영체제는 두 가지 기본적인 목적이 있다: 1. 애플리케이션에 의해 잘못된 사용으로부터 하드웨어 보호 2. 복잡하고 다양하게 다른 저수준 하드웨어 장치에 대한 ..
1.4 Processors Read and Interpret Instructions Strored in Memory 1.4.1 Hardware Organization Of a System hello 프로그램을 실행시킬 때 어떤 일이 벌어지는 지 알려면 시스템의 하드웨어 구조를 이해해야 한다. Buses 시스템 전체를 실행하는 것은 버스(Bus)라고 불리는 일종의 도관의 모음이다. 버스는 각 구성 요소 간의 바이트를 전달시키면 워드(word)라고 불리는 고정된 사이즈의 바이트 모음을 전달시킨다. word에 바이트 수는 근본적인 시스템 매개변수이다. 오늘날 대부분 기계들은 4바이트(32비트) or 8바이트(64비트)로 이루어져있다. I/O Devices I/O(입출력) 장치는 외부 세계와 연결하는 시스템 e..
1.1 Information Is Bits + Context 정보는 비트와 컨텍스트이다. 소스 프로그램(source program)은 0과 1로 이루어져 있는 비트들의 시퀀스이다. (8bits = 1byte) 대부분의 프로그램은 ASCII 표준을 사용하여 텍스트 문자(text character)로 표현한다. #include int main() { printf("hello, world\n"); return 0; } 위의 hello.c 프로그램 역시 바이트 시퀀스 파일(file as a sequence of bytes)로 저장이 된다. 각각의 바이트는 문자와 대응되는 정수 값을 가지고 있다. 예를 들어 '#'은 35, 'i'는 105로 대응된다. 코드 한 줄 마다 개행 문자인 '\n'으로 종료된다. 시스템에..