독학/[책] 컴퓨터구조 + 운영체제

[혼공학습단 11기 혼공컴운💿] 컴퓨터구조+운영체제 week3

최연재 2024. 1. 16. 09:44

✍️ 기본 미션

p. 185의 확인 문제 3번, p. 205의 확인 문제 1번 풀고 인증하기

 
p. 185 확인 문제 3번

p. 205 확인 문제 1번

 

✍️ 선택미션

Ch.07(07-2) RAID의 정의와 종류를 간단히 정리해 보기

아래 내용 정리에서 확인하실 수 있습니다😊


🗒️내용 정리

Chap06. 메모리와 캐시 메모리

6.1 RAM의 종류와 특징

1) RAM의 특징

- 휘발성 저장 장치 (volatile memory)

  • 전원을 끄면 저장된 명령어와 데이터가 모두 날아간다.
  • ex) RAM

- 비휘발성 저장 장치 (non- volatile memory)

  • 전원이 꺼져도 저장된 내용이 유지된다.
  • ex) 보조기억장치(하드 디스크, SSD, CD-ROM, USB 메모리)

 

2) RAM의 용량과 성능

(1) RAM의 성능과 용량 사이 관계

- RAM 용량이 크면 많은 프로그램을 빠르게 실행하는 데 유리하다.
- RAM 용량이 커지면 프로그램 실행 속도가 증가하지만,필요 이상으로 커졌을 때 속도가 그에 비례하여 증가하지 않는다.
 

(2) RAM의 종류
- DRAM (Dynamic RAM)

  • 저장된 메모리가 동적으로 변하는 RAM
  • 시간이 지나면 저장된 메모리가 점차 사라진다.
  • 데이터의 소멸을 막기 위해 일정주기로 데이터를 재활성화(다시 저장)해야 한다. -> 비교적 속도가 느림.
  • 우리가 일반적으로 메모리로 사용하는 RAM은 DRAM이다.
  • 소비전력이 비교적 낮고, 저렴하고, 집적도가 높다. -> 대용량으로 설계하기 용이하다.

- SRAM (Static RAM)

  • 시간이 지나도 저장된 데이터가 사라지지 않는다. (비휘발성 메모리인 것은 아님.)
  • 주기적으로 데이터를 재활성화할 필요가 없다. -> 비교적 속도가 빠름.
  • 캐시메모리에서 사용된다.
  • 소비전력이 크고, 집적도가 낮고, 가격이 비싸다.

- SDRAM (Synchronous Dynamic RAM)

  • 클럭 신호와 동기화된(클럭 타이밍에 맞춰 CPU와 정보를 주고받을 수 있음), 발전된 형태의 DRAM
  • 클럭에 맞춰 동작하며 클럭마다 CPU와 정보를 주고받을 수 있는 DRAM
  • SDR SDRAM(Single Data Rate SDRAM) 이라고 한다.

- DDR SDRAM (Double Data Rate SDRAM)

  • 최근 가장 흔히 사용되는 RAM
  • 대역폭을 넓혀 속도를 빠르게 만든 SDRAM
  • 대역폭(data rate) : 데이터를 주고받는 길의 너비 

 

6.2 메모리의 주소 공간

1) 물리 주소와 논리 주소

- 물리 주소 (physical address)

  • 메모리가 사용한다.
  • 정보가 실제로 저장된 하드웨어 상의 주소

- 논리 주소 (logical address)

  • CPU와 실행 중인 프로그램이 사용한다.
  • 실행 중인 프로그램 각각에게 부여된 0번지부터 시작하는 주소

- 메모리 관리 장치(MMU; Memory Management Unit)

  • CPU와 주소 버스 사이에 위치한 하드웨어
  • 논리주소 ↔ 물리주소 변환 
  • CPU가 발생시킨 논리주소 + 베이스레지스터 == 물리주소
    • 베이스 레지스터 : 프로그램의 가장 작은 물리주소, 즉 프로그램의 첫 물리주소
    • 논리 주소 : 프로그램의 시작점으로부터 떨어진 거리

 

2) 메모리 보호 기법 : 한계 레지스터

- 다른 프로그램의 영역을 침범할 수 있는 명령어는 위험하다.
- 따라서 논리 주소 범위를 벗어나는 명령어 실행을 방지하고 실행 중인 프로그램이 다른 프로그램에 영향을 받지 않도록 보호할 방법이 필요함. -> 한계 레지스터가 담당
- 한계 레지스터(limit register)

  • 논리주소의 최대 크기를 저장한다.
  • 프로그램의 물리 주소 범위 : 베이스 레지스터 값 ≤ addr < 베이스 레지스터 + 한계 레지스터 값 
  • CPU가 접근하려는 논리 주소는 한계 레지스터가 저장한 값보다 크면 안 된다.
  • CPU가 한계 레지스터보다 높은 논리주소에 접근하려고 하면 인터럽트(트랩)을 발생시켜 실행을 중단한다.

 

6.3 캐시 메모리

1) 저장 장치 계층 구조 (memory hierarchy)

- 저장 장치의 특징

  • CPU와 가까운 저장 장치는 빠르고 멀리 있는 저장 장치는 느리다.
  • 속도가 빠른 저장 장치는 저장 용량이 작고,가격이 비싸다.

- 저장 장치 계층 구조 : 각기 다른 용량과 성능의 저장장치를 계층화하여 표현한 구조
 

2) 캐시메모리 (cache memory)

- CPU와 메모리 사이에 위치하고,레지스터보다 용량이 크고 메모리보다 빠른 SRAM 기반의 저장 장치
- CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위해 발생했다.
- 컴퓨터 내부에는 여러 캐시메모리가 있고 CPU(코어)와 가까운 순으로 계층(L1캐시, L2캐시, L3캐시)을 구성한다.
- 분리형 캐시(split cache) 

  • 목적 : 코어와 가장 가까운 L1캐시에 대해 접근 속도를 더욱 빠르게 만든다.
  • 명령어만을 저장하는 L1 캐시와 데이터만을 저장하는 L1캐시인 L1D로 분리한다.

3) 참조 지역성 원리
(1) 캐시 히트와 캐시 미스
- 캐시메모리는 CPU가 사용할 법한 대상을 예측하여 저장한다.
- 캐시 히트 (cache heat)

  • 자주 사용될 것으로 예측한 데이터가 실제로 들어 맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우
  • 캐시 적중률 (cache hit ratio) : 캐시가 히트되는 비율
캐시 히트 횟수 / ( 캐시 히트 횟수 + 캐시 미스 횟수 )

- 캐시 미스 (cache miss)

  • 자주 사용될 것으로 예측해 캐시메모리에저장했지만, 예측이 틀려 메모리에서 필요한 데이터를 직접 가져와야 하는 경우
  • 캐시 미스가 자주 발생하면 성능 저하

(2) 참조 지역성의 원리 (locality of reference, principle of location) 
- 캐시 메모리가 메모리부터 가져올 데이터를 결정하는 원칙
- CPU가 메모리에 접근할 때의 주된 경향을 바탕으로 만들어진 원리

  • 시간 지역성(temporal locality) : CPU는 최근에 접근했던 메모리 공간에 다시 접근하려는 경향이 있다.
  • 공간 지역성(spatial locality) : CPU는 접근할 메모리 공간 근처를 접근하려는 경향이 있다.

 

Chap07. 보조기억장치

7.1 다양한 보조기억장치

1) 하드 디스크 (HDD; Hard Disk Drive)

: 자기적인 방식으로 데이터를 저장하는 보조기억장치
 
(1) 구조
- 플래터(platter) : 실질적으로 데이터가 저장되는 곳
- 스핀들(spindle) : 플래터를 회전시키는 구성 요소

  • 분당 플래터를 돌리는 속도는 RPM 단위로 표현

- 헤드(head) : 플래터를 대상으로 데이터를 읽고 쓰는 구성 요소

  • 헤드는 원하는 위치로 헤드를 이동시키는 디스크 암(disk arm)에 부착되어 있다. 
  • 양면 플래터를 사용하면 플래터 당 두 개의 헤드가 사용된다.
  • 모든 헤드는 디스크 암에 부착되어 이동한다.
  • 다중 헤드 디스크(multiple-head disk) : 헤드가 트랙별로 여러 개 달려 있다.
    • 탐색 시간이 0이다.
    • 고정 헤드 디스크(fixed-head disk)라고도 한다.
  • 단일 헤드 디스크(single -head disk ) : 헤드가 트랙별로 한 개 달려 있다.
    • 이동 헤드 디스크(movable-head disk)라고도 한다.

(2) 데이터의 저장
- 플래터는 트랙(track)과 섹터(sector)라는 단위로 데이터를 저장한다.

  • 트랙의 한 조각이 섹터(하드 디스크의 가장 작은 전송 단위)
  • 실린더 (cylinder) : 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위

- 연속된 정보는 보통 한 실린더에 기록된다. ( ∵ 디스크 암을 움직이지 않고도 데이터에 접근 가능)
 
(3) 데이터에 접근하는 시간 : 탐색 시간, 회전 지연, 전송 시간
- 탐색 시간 (seek time) : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간 
- 회전 지연 (rotational latency) : 헤드가 있는 곳으로 플래터를 회전시키는 시간
- 전송 시간 (transfer time) : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간
 

2) 플래시 메모리(flash memory)

(1) 플래시 메모리
- 전기적으로 데이터를 읽고 쓸 수 있는 반도체 기반의 저장장치
- 셀(cell) : 플래시 메모리에서 데이터를 저장하는 가장 작은 단위

  • 하나의 셀에 몇 비트를 저장할 수 있느냐에 따라 종류가 나뉜다. 

- 페이지(page) : 셀들이 모여 이루어진 단위

  • 읽기/쓰기가 이루어지는 단위
  • 페이지의 상태
    • Free 상태 : 어떠한 데이터도저장하고 있지 않아 새로운 데이터 저장 가능
    • Valid 상태 :  유효한데이터를 저장하고 있는 상태
    • Invalid 상태 : 유효하지 않은 데이터를 저장하고 있는 상태
  • 플래시 메모리는 덮어쓰기가 불가능 -> Valid 상태인 페이지에 새 데이터 저장 불가
  • 가비지 컬렉션(garbage collection) : 유효한 페이지들만을 새 블록에 복사하고 기존의 블록을 삭제함으로써 쓰레기값을  정리

- 블록(block) : 페이지가 모여 이루어진 단위

  • 삭제가 이루어진 단위

- 플레인(plane) : 블록이 모여 이루어진 단위
- 다이(die) : 플레인이 모여 이루어진 단위
 
(2) 플래시 메모리 종류
- SLC (Single Level Cell)

  • 하나의 셀로 2개의 정보 표현 가능 (1bit)
  • 비트의 빠른 입출력 가능
  • 수명이 비교적 길지만 용량 대비 가격이 높다.

- MLC (Multiple Level Cell)

  • 하나의 셀로 4개의 정보 표현 가능 (2bit)
  • SLC 타입보다 대용화하기 유리하고, 용량 대비 가격이 저렴하다.
  • 시중에서 사용되는 많은 플래시 메모리 셀이 MLC 타입이다.

- TLC (Triple-Level Cell)

  • 하나의 셀로 8개의 정보 표현 가능(3bit)
  • 일반적으로 SLC, MLC 타입보다 수명과 속도가 떨어지지만 용량 대비 가격이 저렴하다.

 

7.2 RAID의 정의와 종류

1) RAID의 정의

- RAID (Redundant Array of Independent Disks)
- 데이터의 안정성 또는 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
- 주로 하드디스크와 SSD를 사용하는 기술
 

2) RAID의 종류

- RAID 레벨 : RAID 구성 방법
(1) RAID0
- 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식
- 스트라입(stripe) : 분산되어 저장된 데이터
- 스트라이핑(striping) : 데이터를 분산하여 저장하는 것 -> 저장된 데이터를 읽고 쓰는 속도가 빨라진다.
- 저장된 정보가 안전하지 않다. (하나의 보조기억장치에 문제가 생기면 다른 모든 디스크의 정보를 읽는 데 문제 발생 가능)
 
(2) RAID1
- RAID0의 단점을 해결하기 위해 등장했다.
- 미러링(miroring) : 완전한 복사본을 만든다. 
- 원본과 복사본에 데이터를 쓰기 때문에 속도가 RAID0보다 느리다.
- 복구가 간단하나 사용 가능한 용량이 적어진다(-> 비용의 증가)
 
(3) RAID4
- 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 둔다.
- 패리티 비트(parity bit) : 오류를 검출하고 복구하기 위한 정보
- RAID1보다 적은 하드 디스크로도 데이터를 안전하게 보관할 수 있다.
- 새 데이터를 저장할 때마다 패리티 비트를 저장하는 디스크에 데이터를 써야 하므로 패리티 비트를 저장하는 디스크에 병목 현상이 발생한다.
 
(4) RAID5
- 패리티 비트를 분산하여 저장한다.
 
(5) RAID6
- 구성은 RAID5과 기본적으로 동일하나, 서로 다른 두 개의 패리티 비트를 둔다.
 
 

Chap08. 입출력장치

8.1 장치컨트롤러와 장치 드라이버

1) 장치 컨트롤러 (device controller)

(1) 필요성
- 입출력장치의 종류가 매우 많다.
- 일반적으로 CPU와 메모리의 데이터 전송률은 높지만, 입출력 장치의 데이터 전송률은 낮다.

  • 전송률(transfer rate) : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 지표

 
(2) 장치 컨트롤러
- 입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결된다.
- 입출력 제어기(I/O controller), 입출력 모듈(I/O module)이라고 불리기도 한다.
- 장치 컨트롤러가 해결하는 문제

  • CPU와 입출력 장치간의 통신 중개
  • 오류 검출
  • 데이터 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는 데이터를 버퍼에 저장해 전송률을 비슷하게 맞춘다.

- 내부 구조

  • 데이터 레지스터 (data register) : CPU와 입출력장치 사이에 주고받을 데이터가 담긴 레지스터
  • 상태 레지스터 (status register) : 입출력장치에 대한 상태 정보를 저장한다.
  • 제어 레지스터 (control register) : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장한다.

 
2) 장치 드라이브 (device drive)
: 장치 컨트롤러의 동작을 감지하고 제어하여 장치 컨트롤러가 컴퓨터 내부와 정보를 주고받을 수 있게 하는 프로그램
 
 

8.2 다양한 입출력 방법

1) 프로그램 입출력 (programmed I/O)

- 프로그램 속 명령어로 입출력장치를 제어하는 방법
- CPU가 장치 컨트롤러의 레지스터의 값을 읽고 씀으로써 이루어진다.
- 폴링(polling) : 입출력장치의 상태와 처리할 데이터 유무를 주기적으로 확인한다.
 
(1) 메모리 맵 입출력 (memory-mapped I/O)
- 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주
- 메모리에 접근하는 명령어와 입출력장치에 접근하는 명령어가 다를 필요가 없다.
- 메모리 주소 공간이 축소된다.
 
(2) 고립형 입출력 (isolated I/O)
- 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리한다.
- 메모리에 접근하는 명령어와 입출력장치에 접근하는 명령어가 다르다. (입출력 전용 명령어 사용)
- 메모리 주소 공간이 축소되지 않는다.
 

2) 인터럽트 기반 입출력 (Interrupt-Driven I/O)

- 입출력 장치에 의한 하드웨어 인터럽트는 장치 컨트롤러에 의해 발생한다.
- 폴링 방식보다 CPU 부담이 적다. (인터럽트 요청을 받을 때까지 다른 일에만 집중할 수 있다.)
- 여러 입출력장치에서 인터럽트가 동시에 발생한 경우

  • CPU가 플래그 레지스터 속 인터럽트 플래그를 비활성화한 채 인터럽트 처리 : 순차적 처리
  • CPU가 플래그 레지스터 속 인터럽트 플래그가 활성화되어 있거나 무시할 수 없는 인터럽트(NMI; Non-Maskable Interrupt)가 발생한 경우 : 우선순위가 높은 인터럽트부터 처리
    • 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의 우선순위를 판별한 후 CPU에 지금 처리해야 할 하드웨어 인터럽트를 알려주는 프로그래머블 인터럽트 컨트롤러(PIC; Programmable Interrupt Controller)를 사용한다.
    • 처리 과정
      1. PIC가 장치컨 트롤러에서 인터럽트 요청신호(들)를 받아들인다.
      2. PIC는 인터럽트 우선순위를 판단한 뒤 CPU에 처리해야 할 인터럽트 요청 신호를 보낸다.
      3. CPU는 PIC에 인터럽트 확인 신호를 보낸다.
      4. PIC는 데이터 버스를 통해 CPU에 인터럽트 벡터를 보낸다.
      5. CPU는 인터럽트 벡터를 통해 인터럽트 요청의 주체를 파악하고 해당 장치의 인터럽트 서비스 루틴을 실행한다.

 

3) DMA 입출력 (Direct Memory Access I/O)

- 프로그램 기반 입출력, 인터럽트 기반 입출력의 특징

  • 입출력장치와 메모리 간의 데이터 이동은 CPU가 주도하고 이동하는 데이터도 반드시 CPU를 거친다.
  • CPU의 부담이 크다.

- DMA (Direct Memory Access)

  • 직접 메모리에 접근할 수있는 입출력 기능
  • DMA 입출력을 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요하다.

- DMA 입출력 과정

  1. CPU는 DMA 컨트롤러에 입출력장치 주소, 수행할 연산(읽기/쓰기), 읽거나 쓸 메모리의 주소 등과 같은 정보로 입출력 장치 작업을 명령한다.
  2. DMA 컨트롤러는 CPU 대신 장치컨트롤러와 상호작용하며 입출력 작업을수행한다. 이때 DMA 컨트롤러는 필요한 경우 메모리에 직접 접근하여 정보를 읽거나 쓴다.
  3. 입출력 작업이 끝나면 DMA 컨트롤러는 CPU에 인터럽트를 걸어 작업이 끝났음을 알린다.

- DMA의 시스템 버스 이용 : 사이클 스틸링 (cycle stealing)

  • 시스템 자원은 공용 자원이라 동시 사용이 불가능하다.
  • DMA 컨트롤러는 CPU가 시스템 버스를 이용하지 않을 때마다 조금씩 시스템 버스를 이용하거나 일시적으로 CPU가 시스템 버스를 사용하지 않도록 한 후 집중적으로 이용한다.

- 입출력 버스(input/ouptput bus)

  • CPU, 메모리, DMA 컨트롤러, 장치 컨트롤러가 모두 같은 버스를 공유하는 구성에서는 DMA를 위해 한 번 메모리에 접근할 때마다 시스템 버스를 두 번 사용하게 된다.
  • DMA를 위해 시스템 버스를 너무 자주 사용하면 CPU가 시스템 버스를 이용하는 데 제한이 생긴다.
  • DMA 컨트롤러와 장치 컨트롤러들을 입출력 버스라는 별도의 버스에 연결해 위의 문제를 해결할 수 있다.
  • ex) PCI(Peripheral Component Interconnect) 버스, PCI Express(PCIe) 버스

🤔느낀 점

새로 배운 용어가 많아서 조금 힘들었습니다.. 그래도 벌써 책의 절반인 컴퓨터구조의 학습을 끝내서 뿌듯하네요!