내일배움캠프 Node.js 스탠다드 반 - 9

김선우·2024년 11월 10일
post-thumbnail

메모리

개념

  • CPU가 연산을 하거나 명령을 실행하는데 있어서 필요한 정보를 저장해두는 공간.
    => CPU = 컴퓨터의 뇌이기 떄문에 가격이 비싸다. - 내부에 메모리들을 배치해 CPU가 필요할 때 데이터를 제공하는 역할을 수행함.

구조

  • 위쪽이 Low Address, 아래쪽이 High Address.
  • 코드 영역: 말그대로 실행할 코드가 저장되는 영역이다.
  • 데이터 영역: 프로그램 실행에 사용되는 전역 변수 와 정적 변수 등이 저장되는 곳이다.
  • 힙 영역: 사용자(코드 개발자)에 의하여 할당되고, 해제되는 영역이다. Low Address → High Address의 방향으로 메모리가 찬다.
  • 스택 영역: 프로그램이 자동으로 사용하는 영역으로 함수가 호출될때 사용되고 바로 비워지는 아주 빠른 영역이다. 하지만, 컴파일할 때 크기가 결정되며 그 크기를 넘어서는 확장은 불가능하다. High Address → Low Address의 방향으로 메모리가 찬다.

구성 요소

하드디스크

  • 보조기억장치로서 전원이 꺼져도 데이터가 지워지지 않는 장기기억을 담당하는 장치.

메인 메모리

  • 주기억장치로서 속도가 빠르지만 전원이 꺼지면 데이터가 지워져서, 당장 급하게 실행해야 하는 프로그램 또는 처리중인 데이터에 대한 결과를 저장하고, 하드디스크로부터 일정 데이터를 받아 저장해 CPU가 필요로 할 때 바로바로 보내주는 역할.

캐시 메모리

  • 메인메모리와 CPU의 속도차이를 보완하는 역할로, CPU와 가장 가까이 위치해 빠른 속도를 자랑함.

CPU 레지스터

  • CPU 내부에서 컴퓨터 실행에 중추적으로 중요한 프로그램 데이터 내용들을 필수적인 내용들만 저장하는 역할.

주소 공간(address space)

  • 실행 중인 프로그램이 가정하는 메모리의 모습.
  • 각 프로세스의 데이터를 보호하는 방향으로 사용하기 쉬운 메모리 개념.
  • 실행 프로그램의 모든 메모리 상태를 가짐.

메모리 가상화

  • 실행중인 프로그램은 자신이 특정 주소의 메모리에 탑재되고 매우 큰 주소 공간(32비트, 64비트)을 가지고 있다고 생각한다.

가상 메모리의 주요 목표

    1. 투명성(transparency)
    • 운영체제는 실행 중인 프로그램이 가상 메모리의 존재를 인지하지 못하도록 가상 메모리 시스템을 구현해야 한다.
    • 프로그램은 자신이 전용 물리 메모리를 소유한 것처럼 행동해야 한다.
    • 프로그래머는 메모리 주소를 신경쓰지 않아도 된다.
    1. 효율성(efficiency)
    • 운영체제는 가상화가 시간과 공간 측면에서 효율적이도록 해야 한다.
    • 시간적으로는 프로그램이 너무 느리게 실행되서는 안되고, 공간적으로는 가상화를 지원하기 위한 구조를 위해 너무 많은 메모리를 사용해서는 안 된다.
    1. 보호(protection)
    • 운영체제는 프로세스를 다른 프로세스로부터 보호해야 하고 운영체제 자신도 프로세스로부터 보호해야 한다.
    • 프로세스가 탑재, 저장 혹은 명령어 반입 등을 실행할 때 어떤 방법으로든 다른 프로세스나 운영체제의 메모리 내용에 접근하거나 영향을 줄 수 있어서는 안 된다. 즉, 자신의 주소 공간 밖의 어느 것도 접근할 수 있어서는 안 된다.
    • 보호 성질을 이용하여 프로세스들을 서로 격리(isolate) 시킬 수 있다.

0개의 댓글