sw 사관학교 정글/컴퓨터시스템

[컴퓨터 시스템] 2장. 정보의 표현과 처리

donggyu 2022. 4. 23. 13:32
반응형

지속적으로 업데이트 합니다

  1. 정보의 저장
  2. 정수의 표시
  3. 정수의 산술연산
  4. 부동소수점

컴퓨터는 두 개의 값을 갖는 신호로 표현되는 정보를 저장하고 처리

하나의 비트는 유용하지 않다.

비트들을 묶어서 다른 가능한 비트 패턴에 의미를 부여, 특정 해석 방벅을 적용하면 유한집합의 원소들을 표시할 수 있음

컴퓨터에서 하나의 수를 인코딩하기 위해 제한된 개수의 비트 사용

어떤 연산의 경우 그 결과값을 표시 할 수 없을 정도로 커서 오버플로우를 발생

부동소수점 연산은 완전히 다른 수학적 특성을 가짐

  • 수의 제한된 정밀도 때문에 교환법칙이 성립하지 않음
  • 정수 표현은 비교적 작은 범위의 값을 인코딩하지만 매우 정밀, 부동소수점 표시는 넓은 범위의 값은 근사값으로 인코딩

수 표시 방법 학습( 표시 가능한 값의 범위, 여러 산술연산의 특성 이해)

모든 범위의 숫자들에 잇어서 정확히 동작하고 다양한 컴퓨터, OS, 컴파일러 조합에서도 동일하게 동작하는 프로그램 작성가능

많은 보안 취약성은 컴퓨터 연산의 취약성 때문에 생김

컴퓨터는 숫자를 인코딩하기 위해 여러 가지 이진수 표시를 사용

다양한 인코딩에 대해 설명, 숫자의 표현들을 어떻게 분석

숫자의 비트수준 표시방법을 직접적으로 조작하여 산술연산을 하는 여러가지 방법도출

기술 이해를 위해 산술식 계산 성능을 최적화하기 위해 컴파일러가 만들어 내는 기계어 코드를 이해하는것이 중요

핵심은 수학법칙에 근거

(표시 가능한 숫자의 범위, 비트수준 표시, 산술연산 성질) 추상적인 관점에서 살펴보는 것이 중요

2.1 정보의 저장

컴퓨터들은 메모리에서 주소지정이 가능한 최소단위인 8비트 단위의 바이트를 사용

기계 수준의 프로그램은 메모리를 가상메모리(거대한 바이트의 배열)로 취급

메모리의 각 바이트는 주소라고 하는 고유한 숫자로 식별 가능, 가상 주소공간(모든 가능한 주소들의 집합)

가상 주소공간 → 기계수준 프로그램에게 제공되는 개념적인 이미지

실제 구현은 DRAM, 플래시메모리, 디스크, 기타 하드웨어와 OS로 이주어짐, 이들을 통해서 프로그램에 주소공간이 균일한 바이트 배열인것 처럼 보이도록 함

컴파일러와 런타임 시스템이 이 메모리 공간을 보다 관리하기 적합한 크기로 분할해서 여러 가지 프로그램 객체(program object)들, 즉 프로그램 데이터, 인스트럭션, 제어정보 등을 저장하는지에 대해 공부

프로그램의 서로 다른 부분을 저장하고 할당하기 위해 여러 가지 기법이 사용됨

이런 관리기법들은 모두 가상 주소공간 내에서 수행

예를 들어, C에서 어떤 포인터 값(정수, 구조체, 프로그램 객체 등 유형에 관계없이)은 저장장치의 동일한 블록의 첫 바이트의 가상주소가 됨

C컴파일러는 각 포인터와 타입 정보를 연관시켜 포인터가 지시하는 위치에 저장된 값에 접근하기 위해 그 값의 타입에 따라 다른 기계수준 코드를 생성

C컴파일러는 이 타입 정보를 관리하지만, 컴파일러가 생성하는 실계 기계 수준 프로그램은 데이터 타입에 대한 정보를 전형 가지고 있지 않음

기계수준의 프로그램은 각 프로그램의 객체를 단순히 바이트들의 블록으로 취급, 프로그램 자신은 바이트의 연속으로 취급

2.2 정수의 표시

2.3 정수의 산술연산

2.4 부동소수점

2.5 요약

반응형