Post

KOCW_Memory, Disk Scheduling / Caching

✅ 메모리 작동

  • 메모리: 휘발성
  • 메모리는 비어 있음
  • 컴퓨터가 켜지면, 메모리 위에 운영체제가 올라감
  • 프로그램은 디스크에 저장되어 있다가(디스크의 파일시스템)
  • CPU가 필요하면
  • 가상 메모리를 만들고(페이지)
  • 지금 당장 필요한 부분만 실제 물리적인 메모리 위에 올라가게 됨

  • 그러다가 메모리가 꽉 차면
  • 안 쓰는 프로세스 페이지는 디스크(스왑 영역)으로 쫒겨난다.

디스크 파일시스템 🆚 디스크 스왑 영역

  • 파일시스템: 파일들 저장, 컴퓨터 꺼져도 유지
  • 스왑 영역:
    • 디스크의 연장 느낌
    • 컴퓨터 꺼져도 남아는 있으나, 메모리가 사라졌기에 의미 없는 정보
  • 메모리: 휘발성

✅ 메모리 Scheduling

메모리가 꽉 찼는데, 어떤 페이지를 메모리에서 쫒아낼까?

  • 미래에 사용될 가능성이 많은 프로세스는 메모리에 두고,
  • 미래에 안 사용될 것 같은 프로세스는 쫒아내야 함

💡 LRU

Least Recently Used

  • 가장 오래 전에 사용된 페이지 삭제

💡 LFU

Least Frequently Used

  • 제일 적게 사용된 페이지 삭제

✅ 디스크 Scheduling

  • 디스크는 디스크 헤드가 이동하며 데이터를 읽어오는데,
  • 따라서 이 헤드의 이동 동선을 최소화하는게 중요함(엘레베이터처럼)
  • seek time을 최소화하는게 목표

✔️ 디스크 access time

  • 탐색 시간 seek time
  • 디스크 헤드가 해당 트랙(실린더)으로 움직이는데 걸리는 시간

  • 회전 지연 rotational latency
  • 헤드가 원하는 섹터에 회전에 도달하기까지 걸리는 시간

  • 전송 시간 transfer time
  • 실제 데이터의 전송 시간

💡 SSTF

Shortest Seek Time First

  • 큐에 들어온 데이터 중 가까운 위치부터 간다.
  • 내가 5번에 있는데 순서대로 10, 7번이 들어오면 7번부터 간다.
  • 👎🏻 Starvation: 멀리 있는 데이터는 안 감, 오래 기다림

💡 SCAN

헤드는 디스크 한쪽 끝에서 다른쪽 끝으로 쭉 이동

  • 가는 길목에 있으면 처리
  • 한 쪽에 도달하면 역방향으로 이동
  • 또 가는 길목에 있는 데이터 처리
  • 엘리베이터처럼, 1층에서 5층까지 가는데 3층에 불 들어오면 데리고 올라감

  • 👍🏻 기아현상 발생 ❌

✅ 캐싱

빠른 CPU와 느린 I/O장치 간 속도 차이를 어떻게 극복할 것인가?
caching: copying information into faster storage system

  • 여러번 요청되는 데이터는 secondary에서 primary의 캐시에 저장을 해 두고,
  • 매번 secondary에서 찾아올 필요 없이 빨리빨리 가져다 쓰자
  • 👍🏻 속도가 다른 저장장치의 완충 역할
  • 하지만 캐시는 작기 때문에 모든걸 다 저장할 수는 없음

✅ Flash Memory

  • 반도체장치
  • SSD

  • 👍🏻 nonvolatile
  • 👍🏻 low power consumption 전력소모 적음
  • 👍🏻 shock resistance 물리적 충격 잘 견딤
  • 👍🏻 작다
  • 👍🏻 가볍다
  • 👎🏻 쓰기 횟수 제약: 썻다 지웠다 일정 횟수 후에 사용 불가
  • 👎🏻 시간이 많이 지나면 데이터가 사라질 수 있음, 전하가 빠져나가서

  • 휴대폰에 임베디드
  • USB

This post is licensed under CC BY 4.0 by the author.