[넓고 얕게 배우는 컴퓨터 구조] 기억장치에 대한 이해

YUZAMIN
Hello, World! I'm YUZAMIN, a diligently endeavoring frontend developer 🐤💦
[넓고 얕게 배우는 컴퓨터 구조] 기억장치에 대한 이해

강의 영상📼

정리📝

  • 기억장치: 정보, 자료를 담아두는 저장 공간
    • 공간마다 특성(속도, 휘발성 등)이 다름

  • RAM까지가 주기억장치, 그 아래는 보조기억장치
  • 위로 갈수록 용량 크고 비용 비싸며 속도 빠름
    • 레지스터는 바이트, 캐시 메모리는 메가바이트, RAM은 기가바이트 단위
    • HDD, SSD 등은 TB~ 단위

  • CPU에서는 연산이 일어남 -> 연산을 위해 RAM 내 자료, 정보를 CPU에 가져와야 함 -> 연산 뒤 결과를 RAM에 보냄
  • RAM은 하드디스크 같은 보조기억장치의 정보를 가져와서 CPU에 가져다 주는 것
    • HDD는 영구 기억 -> 전원 꺼도 남아있음
  • HDD(도서관)에서 정보(책)을 빌려와서 RAM(책꽂이)에 꽂아 둠 -> 그 정보를 사용하기 위해 캐시(책상)에 가져옴
    • 캐시: 책꽂이에서 책을 빨리 가져오기 위해 존재함
  • 연산은 레지스터에서 일어남 -> 연산 하기 위해서는 RAM 이하의 정보를 무조건 CPU 쪽으로 가져와야 함

  • 10번에 문자 A 정보가 들어있음
  • RAM은 CPU가 관리함 -> CPU가 관리하기 위해 RAM에 번호를 붙임 -> CPU는 ‘10번에 저장된 A를 CPU에 가져와라’ 명령 -> CPU에도 A를 담아둘 공간이 필요 = 그 공간이 레지스터 -> 연산 일어남
  • 관리 체계

    • 레지스터: 이름
    • 주기억장치: 일련번호
    • 보조기억장치: 트랙 번호, 섹터 번호
  • 하드디스크 어딘가에 정보 들어있음 -> 정보 들어가 있는 위치 정보가 있음 -> 트랙 + 섹터(몇 번 트랙, 몇 번 섹터의 A를 가져와라~)
  • RAM에는 메모리 공간마다 주소가 달려있으므로 그 주소에 있는 것을 CPU 내의 레지스터로 가져오게 됨
  • EAX라는 이름을 가진 레지스터가 있음 -> RAM에서 EAX로 가져오게 됨
  • 즉, HDD의 1번 트랙 4번 섹터로 가서 그 안의 정보를 RAM으로 가져옴 -> 그 정보를 RAM 메모리의 15번에 저장해라~ -> 그 정보를 CPU 내의 EAX 레지스터에 가져와서 저장하라~

  • Format
    • HDD 사용하기 위해서는 포맷을 해야함 -> 아무 것도 없는 곳에 트랙과 섹터를 만들어서 집어 넣는 과정
    • 포맷을 하게 되면 트랙과 섹터가 생겨남

  • 파일 할당 표(FAT)
    • 파일(정보 단위)이 어떤 트랙의 어떤 섹터에 저장되어 있는지 정리된 표
    • 디스크 조각 모음
    • 정보가 하나는 1번 트랙에, 하나는 2번, 하나는 3번 트랙에 있으면 정보 읽고 쓰는 데 속도 저하됨 -> 1번 트랙 1, 2, 3섹터처럼 연속되어 저장되어 있으면 속도 빨라짐 -> 정보의 조각들을 모아 연속된 공간에 저장하여 IO 속도를 개선하는 작업 = 디스크 조각모음

  • 중복이 없는 고유번호가 붙어있는 신발장이라는 공간에 신발을 넣음
    • 신발장 = RAM
    • 신발장을 이루는 한 칸 = 1바이트
    • 신발장의 번호 = 메모리 주소(=위치 정보)
    • 신발 = 정보
  • 메모리 = RAM을 말하는 것
    • 1바이트라는 한 칸마다 일련 번호(주소 = 위치 정보)가 붙어 있음

  • 대략 42.9억개 = 2의 32승 = 32비트 = 4기가바이트

  • ALU: 컴퓨터의 핵심 연산 장치 (=전가산기)
    • 사칙 연산
    • 301번의 정보 3을 가져와서 두 번째 레지스터에 옮겨옴 -> 503번지의 4를 세 번째 레지스터에 옮겨옴
    • 옮겨오는 과정에서 캐시 메모리를 거치게 됨
    • 캐시
      • CPU는 초고속, RAM은 그냥 고속
      • CPU가 초고속으로 연산함 -> RAM은 상대적으로 느림 -> 캐시는 중간에서 CPU가 하려던 일에 필요한 정보들을 미리 가져옴
        • CPU가 연산할 때 필요한 것들을 미리 가져와 둠
        • CPU가 빨리 연산할 수 있게 RAM에서 미리 캐시로 정보 갖고 옴
  • 64비트 CPU다 = 3, 4, 7이 모두 64비트로 표현됨

    1. RAM에 가서 301번 안에 있는 정보를 가져옴
    1. 캐시에 가져옴
    1. CPU 내의 레지스터 A로 옮김
    1. ALU가 연산
    1. 연산 결과가 레지스터에 들어감
    1. 레지스터에 들어간 정보를 메모리 어딘가로 옮겨감
      • 이런 한 줄 한 줄을 수행하는 것을 코드라고 함
      • CPU(=머신)가 인식하는 코드 = 머신 코드 = 기계어 코드
      • CPU 장치는 기계어 코드를 순차적으로 계속해서 계산하는 일을 함 -> 그 결과를 RAM이든 HDD든 저장

출처