운영체제 (CSE30101) - 1. Introduction #4

‍정진철·2022년 9월 13일
0

DMA transfer

DMA (직접 메모리 접근) - 특정 하드웨어 하위 시스템이 CPU와 독립적으로 메인 시스템 메모리에 접근할 수 있게 해주는 컴퓨터 시스템의 기능이다.

과정: Device Driver를 통해 특정 주소번지에 해당 데이터를 옮겨달라 명령내림 -> 명령을 받은 Device Driver는 Disk Controller에게 명령 전달 -> 하지만 다량의 데이터 처리에 있어 부담될시 Disk Controller는 DMA Controller에게 도움 요청 (CPU를 거치지 않고 곧바로 메모리에 접근 가능토록) -> DMA Controller는 CPU에게 요청을 전달 후 CPU의 수락이 떨어지면 Disk Controller는 바로 다이렉트로 데이터를 옮길 수 있음.

  • 동작을 실행토록 명령을 내리는건 CPU의 고유권한. 따라서 특정 공간에서 특정 데이터를 전송할 때 CPU를 거쳐 보내야 하는데 레지스터는 제한적이므로 역할을 분담시킬 필요성이 있음. (DMA Controller)\

저장 장치 계층 구조

  • 위로 올라갈 수록 비싸고 빠름.
  • 아래로 내려갈 수록 느리고 저렴함.

• ROM(Read Only Memory) vs RAM(Random Access Memory)
-> ROM은 재사용 불가 (일회용) , 내장된 데이터는 소멸되지 않음.
즉 전력공급이 끊겨도 데이터가 살아있음. (따라서 BIOS/Bootloader에 사용됨)
-> RAM은 데이터 썼다 지웠다 반복 가능 , 전기공급 끊기면 내장된 데이터 모두 소실

• SRAM vs DRAM
S: Static , D: Dynamic

  • Dynamic RAM은 저장돼있는 데이터에 관해 전기공급이 이루어질 때 데이터 존재가 유지가돼야 하지만 소자 특성상 '리프레시'를 해주지 않으면 데이터가 뭉개짐(1의 데이터가 내려가고 0의 데이터가 올라오는..) 따라서 조그마한 소자에 전기를 지속적으로 공급필요.
    -> 리프레시 과정중엔 접근이 불가해서 메인메모리나 SDD에 활용됨 (속도는 느리고 가격은 저렴)

  • Static RAM은 최초 데이터가 적재되면 리프레시 없이 기본적인 전기공급만 충족이 되면 데이터가 어그러지지 않음. 따라서 캐시나 레지스터에 사용됨

메모리 계층 구조 존재 이유

  • I/O 장치가 가장 느림 -> I/O 단에서 처리해야 될게 오래걸리면 나머지 CPU 메모리는 기다려야함 -> 퍼포먼스 떨어짐
  • 캐싱의 기본적인 방향은 최근에 가장 많이 사용된 데이터 명령어를 다시 사용될 가능성이 높다는 가정을 적용시킴.
  • 속도가 느린 메모리에서의 데이터는 킵 해놓고 가장 오래된 영역부터 덮어쓰기. 덮어쓰기 전에 특정 데이터를 access하기 위해서 한 번 훑어보면 남아있는 녀석들을 가져올 수 있으니 병목현상 줄어듬
  • 캐싱 하는 과정에서 로드 할 때는 문제없으나 write-back 문제에서 coherency문제 발생.
  • 사용자 입장에서는 빠르고 저장 용량이 큰 걸 원함.
  • 하지만 속도를 높이며 레지스터 용량이 부족하고 용량을 높이면 속도가 느려짐.
  • 따라서 속도와 성능을 상호보완 하기 위한 방법으로 메모리 계층 구조 등장.
  • 메모리 용량이 너무 큼 -> 메모리 크기 줄이고 속도 높임 -> 필요 이상 너무 줄이게됨 -> 다시 메모리 크기 늘려 -> .....
  • 메모리 마지노선의 크기의 기준은 메인메모리

CPU가 접근 가능한 메모리
1) CPU 내 레지스터 메모리
2) CPU와 메인메모리 사이에 존재하는 캐시
3) 메인 메모리


캐싱(Caching)

  • Cache management policy
    1) Write- through
    -> CPU가 데이터를 사용하면 캐시에 저장되게 되는데, 데이터가 캐시 됨과 동시에 주기억장치 또는 디스크로 기입되는 방식을 지원하는 구조의 캐시이다. 즉, 캐시와 메모리 둘다에 업데이트 하는 방식.

     장점 : 캐시와 메모리에 업데이트를 같이 하여, 데이터 일관성을 유지 가능.
    단점 : 속도가 느린 주기억장치 또는 보조기억장치에 데이터를 기록시 CPU의 대기시간으로 인한 비효율성 발생.
  • 데이터 로스가 발생하면 안되는 상황에서는 Write Through 추천.

2) Write-back
-> CPU 데이터 사용시 데이터는 먼저 캐시로 기록되는데 캐시 내에 일시적으로 저장된 후에 블록 단위에 캐시로부터 해제되는 때(캐시안에 있는 내용을 버릴시) 에만 주기억장치 또는 보조기억장치에 기록되는 방식. 즉, 데이터를 쓸 때 메모리에는 쓰지 않고 캐시에만 업데이트를 하다가 필요할 때에만 주기억장치나 보조기억장치에 기록하는 방법.

장점: write-throgh 보다 속도측면에서 우수하다.
단점: 캐시에 업데이트 후 바로 메모리에 옮기지 않으므로 저장되는 정보의 상이성 발생 가능.
  • 빠른 서비스 구현시 추천됨.
  • 대체로 이 방법을 채택함.

Physical hard disk structure

  • Platters: 실제 데이터 저장 공간
  • Surfaces:
  • Tracks: 플로피 디스크와 하드디스크의 기록단위.
  • Sectors: 트랙을 나눈 단위.
  • Cylinders : 다수개의 플래터의 트랙을 수직적으로 관통하는 3차원 적인 스택
  • Arm : 헤드의 이동
    -> Arm에서 데이터를 읽는데 시간 가장 많이 소요.
    -> 속도를 빠르게 하기 위해 디스크 조각 모음 (only HDD , SSD(X))
    -> 실린더 내 동일한 트랙에 분산시켜 저장.
    -> 하드디스크 성능 높임.
  • heads
    -> 플래터 표면에 코팅된 자성체를 자화 또는 소거를 하여 정보를 저장 또는 삭제를 하는 장치 또한 저장된 정보를 읽는 역할.
    일반적으로 해더의 수는 플래터의 수의 2배.
    플래터는 양면이기 때문에 한장의 플래터는 2개의 면으로 되어 있기 때문에 각면에 하나씩 총 2개의 헤드 필요.

SSD (Solid State Drive)

  • CPU, 메모리 등의 빠른 속도를 하드디스크가 감동 못함.
  • 그에 대한 방안으로 SSD 등장
  • 반도체로 이루어짐
  • 비휘발성 메모리 (플래시메모리 방식)
  • 기억장치.
  • HDD는 자기 디스크, SSD는 플래시 메모리로 구성됨.
  • 장점: 입/출력 속도
  • 가벼움

NAND Flash Memory

  • 비휘발성 메모리
  • 셀이 직렬로 돼있으며 쓰기 속도가 빠름.
  • 또한 셀을 수직으로 배열하기 때문에 좁은 면적에 많은 셀을 만들 수 있어 대용량화에 적합.
  • 대신 읽기 속도는 가장 느림.
  • 블럭 하나에 수정생기면 데이터를 갱신하는게 아니라 데이터를 저장 시키는 유닛을 disble 시켜놓고 블럭에 새로 write.
  • 블럭 재활용 하기 위해서 한번에 clear 수행
  • 블럭 당 clear 가능 횟수 정해져 있음.

Flash Controller

출처 : https://news.skhynix.co.kr/post/magic-controller

  • OS 회사마다 속도가 다른 이유는 '컨트롤러 기술' 차이
  • SSD는 낸드플래시로 만드는 저장장치지만 단순히 낸드플래시를 조립한 제품이 아니라 컨트롤러라는 일종의 시스템반도체를 붙여 만듬.
  • 이런 컨트롤러는 자료처리순서를 정하는 등 SSD의 두뇌 역할.
  • 낸드가 책을 꽂아놓는 서재라면 컨트롤러는 어떤 책을 언제 어디에 넣고 끄집어낼지를 결정하는 사서 같은 역할.
  • 또 에러•불량섹터를 막아줘 제품 수명을 연장해주고, 셀 간 간섭현상을 줄이는 신호처리 등의 역할도 맡음.
  • 블럭을 골고루 사용하기 위해서 Flash Contorlloer 내는 하드웨어로 구현됨.
  • 복잡한 처리를 요하므로 Flash Controll에는 ARM코어 , DMA 존재.

FTL ( Flash Translation Layer)

  • 일반적인 운영체제의 파일 시스템을 기반으로 하는 프로그램들은 디스크를 섹터 기반으로 인식하지만, SSD는 페이지와 블록을 기반으로 저장 단위 구현

  • 섹터를 기반으로 인식하는 프로그램은 SSD에 데이터를 직접 기록할 수 없음.

  • 섹터 기반의 프로그램이 SSD를 인식할 수 있도록 도와주는 무언가가 필요한데, 이것을 FTL (Flash Translation Layer), 즉, 플래시 변환 계층이라고함.

  • FTL은 SSD의 컨트롤러 내에서 동작하며 가상의 논리적 섹터를 생성하여, 섹터 기반의 프로그램들이 이를 통해 실제 SSD의 물리적 페이지에 데이터를 기록하도록 도와줌.

  • FTL이 논리적 섹터를 물리적 페이지에 저장하기 위해서는 논리적 주소를 물리적 주소 값으로 변환해야 하는데, 이에 대한 정보는 Mapping table을 참조하여 변환.


profile
WILL is ALL

0개의 댓글