3 분 소요

컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까

8. 시스템 공간과 사용자 공간

  • 시스템 공간과 사용자 공간은 컴퓨터에서 메모리를 분할하는 방식이다. 시스템 공간과 사용자 공간은 메모리의 보호와 효율성에 영향을 미친다.
  • 시스템 공간은 운영 체제가 사용하는 메모리의 영역이다. 시스템 공간은 커널 모드로 동작하며, 하드웨어와 직접적으로 통신하고, 시스템의 자원을 관리하고, 프로세스의 생성과 스케줄링을 수행한다.
  • 사용자 공간은 응용 프로그램이 사용하는 메모리의 영역이다. 사용자 공간은 사용자 모드로 동작하며, 하드웨어와 간접적으로 통신하고, 운영 체제의 서비스를 요청하고, 프로세스의 실행과 종료를 수행한다.
  • 시스템 공간과 사용자 공간은 다음과 같은 차이점을 가진다.
    • 접근 권한: 시스템 공간은 운영 체제만 접근할 수 있고, 사용자 공간은 응용 프로그램만 접근할 수 있다. 시스템 공간과 사용자 공간 사이의 접근은 시스템 콜이라는 특별한 인터페이스를 통해 이루어진다.
    • 주소 공간: 시스템 공간은 물리 주소로 구성되고, 사용자 공간은 가상 주소로 구성된다. 시스템 공간은 메모리의 일정한 위치에 고정되고, 사용자 공간은 메모리의 다른 위치에 재배치될 수 있다.
    • 크기: 시스템 공간은 메모리의 상위 부분에 작은 크기로 할당되고, 사용자 공간은 메모리의 하위 부분에 큰 크기로 할당된다. 시스템 공간은 운영 체제의 크기에 따라 결정되고, 사용자 공간은 프로세스의 크기에 따라 결정된다.

9. 메모리 계층과 성능

  • 메모리 계층은 컴퓨터에서 데이터를 저장하고 접근하는 장치들의 구조이다. 메모리 계층은 레지스터, 캐시 메모리, 메인 메모리, 하드 디스크, 테이프 드라이브 등으로 구성된다.
  • 메모리 계층은 용량, 속도, 비용, 접근 방식으로 구분된다. 용량은 데이터를 저장할 수 있는 크기이다. 속도는 데이터를 읽고 쓰는 시간이다. 비용은 단위 용량당 가격이다. 접근 방식은 데이터를 찾고 이동하는 방식이다.
  • 메모리 계층은 다음과 같은 특징을 가진다.
    • 용량은 계층이 낮을수록 크고, 계층이 높을수록 작다. 예를 들어, 테이프 드라이브의 용량은 레지스터의 용량보다 훨씬 크다.
    • 속도는 계층이 낮을수록 느리고, 계층이 높을수록 빠르다. 예를 들어, 테이프 드라이브의 속도는 레지스터의 속도보다 훨씬 느리다.
    • 비용은 계층이 낮을수록 저렴하고, 계층이 높을수록 비싸다. 예를 들어, 테이프 드라이브의 비용은 레지스터의 비용보다 훨씬 저렴하다.
    • 접근 방식은 계층이 낮을수록 순차적이고, 계층이 높을수록 임의적이다. 예를 들어, 테이프 드라이브는 데이터를 순서대로 찾아야 하고, 레지스터는 데이터를 임의로 찾을 수 있다.
  • 메모리 계층의 목적은 데이터의 저장과 접근을 최적화하는 것이다. 메모리 계층은 자주 사용되는 데이터를 빠르고 비싼 메모리에 저장하고, 드물게 사용되는 데이터를 느리고 저렴한 메모리에 저장한다. 메모리 계층은 지역성 원리를 이용하여 데이터의 이동을 최소화한다. 지역성 원리는 시간적 지역성과 공간적 지역성으로 구분된다. 시간적 지역성은 한 번 사용된 데이터가 다시 사용될 확률이 높다는 원리이다. 공간적 지역성은 사용된 데이터와 인접한 데이터가 사용될 확률이 높다는 원리이다.

10. 코프로세서

  • 코프로세서는 컴퓨터에서 특정한 연산을 전담하는 장치이다. 코프로세서는 CPU와 병렬로 작동하며, CPU의 부하를 줄이고, 연산의 속도와 정확도를 향상시킨다.
  • 코프로세서의 종류에는 수치 코프로세서, 그래픽 코프로세서, 암호화 코프로세서, 신호 처리 코프로세서 등이 있다. 수치 코프로세서는 부동 소수점 연산을 수행한다. 그래픽 코프로세서는 2차원이나 3차원의 그래픽 연산을 수행한다. 암호화 코프로세서는 암호화와 복호화 연산을 수행한다. 신호 처리 코프로세서는 음성이나 영상과 같은 신호의 처리 연산을 수행한다.
  • 코프로세서는 CPU와 통신하기 위해 명령어, 데이터, 상태, 제어 신호를 주고받는다. 코프로세서는 CPU의 명령어 집합에 새로운 명령어를 추가하거나, 별도의 명령어 집합을 가진다. 코프로세서는 CPU와 동기적으로 혹은 비동기적으로 동작할 수 있다. 동기적으로 동작할 때는 CPU와 코프로세서가 같은 클럭을 공유하고, 비동기적으로 동작할 때는 CPU와 코프로세서가 각각의 클럭을 가진다.

11. 메모리상의 데이터 배치

  • 메모리상의 데이터 배치는 컴퓨터에서 데이터를 메모리에 저장하고 접근하는 방식이다. 메모리상의 데이터 배치는 메모리의 효율성과 성능에 영향을 미친다.
  • 메모리상의 데이터 배치는 정렬과 패딩으로 구분된다. 정렬은 데이터를 메모리의 특정한 위치에 맞추는 것이다. 패딩은 데이터와 데이터 사이에 삽입되는 빈 공간이다.
  • 메모리상의 데이터 배치는 다음과 같은 특징을 가진다.
    • 정렬은 데이터의 접근 속도와 오류 방지에 유리하다. 정렬된 데이터는 CPU가 한 번에 읽고 쓸 수 있고, 잘못된 데이터의 접근을 방지할 수 있다. 정렬의 단위는 바이트, 워드, 더블워드 등이 있다.
    • 패딩은 데이터의 정렬을 위해 필요하다. 패딩된 데이터는 메모리의 공간을 낭비하지만, 데이터의 정렬을 보장할 수 있다. 패딩의 크기는 데이터의 크기와 정렬의 단위에 따라 결정된다.

12. 프로그램 실행

  • 프로그램 실행은 컴퓨터에서 프로그램의 명령어와 데이터를 처리하는 과정이다. 프로그램 실행은 프로그램의 로딩과 실행으로 구분된다.
  • 프로그램의 로딩은 프로그램을 하드 디스크에서 메모리로 복사하는 과정이다. 프로그램의 로딩은 운영 체제가 수행하며, 프로그램의 코드와 데이터, 스택, 힙 등의 세그먼트를 메모리에 배치한다.
  • 프로그램의 실행은 프로그램의 명령어를 CPU가 해석하고 실행하는 과정이다. 프로그램의 실행은 CPU가 수행하며, 프로그램 카운터와 명령어 레지스터, 데이터 경로, 제어 장치 등을 이용한다.

13. 메모리 전력 소비

  • 메모리 전력 소비는 컴퓨터에서 메모리가 사용하는 전력의 양이다. 메모리 전력 소비는 컴퓨터의 에너지 효율성과 발열에 영향을 미친다.
  • 메모리 전력 소비는 정적 전력 소비와 동적 전력 소비로 구분된다. 정적 전력 소비는 메모리가 작동하지 않을 때도 발생하는 전력 소비이다. 동적 전력 소비는 메모리가 데이터를 읽고 쓸 때 발생하는 전력 소비이다.
  • 메모리 전력 소비는 다음과 같은 요소에 의해 결정된다.
    • 메모리의 종류: 메모리의 종류에 따라 전력 소비가 다르다. 예를 들어, SRAM은 DRAM보다 전력 소비가 적고, 플래시 메모리는 SRAM보다 전력 소비가 적다.
    • 메모리의 크기: 메모리의 크기에 따라 전력 소비가 다르다. 예를 들어, 메모리의 용량이 클수록 전력 소비가 증가하고, 메모리의 비트 폭이 넓을수록 전력 소비가 증가한다.
    • 메모리의 사용 빈도: 메모리의 사용 빈도에 따라 전력 소비가 다르다. 예를 들어, 메모리의 접근이 빈번할수록 전력 소비가 증가하고, 메모리의 변경이 많을수록 전력 소비가 증가한다.