안녕하세요 !
혼공단 11기로 선정 되어
공부하게 된 박지영입니다 🙂
매주 1회 혼자 공부하는 컴퓨터구조 + 운영체제 요약을 올리고 있습니다.
파이썬(코딩자율학습단), C언어(빡공단) 등 많은 프로그래밍 요약을 올리고 있을거니
다른 글도 많은 관심 부탁드립니다 🥰
Chapter 06 메모리와 캐시 메모리
06-1 RAM의 특징과 종류
RAM에는 실행할 프로그램의 명령어와 데이터가 저장됩니다.
전원을 끄면 저장된 내용이 사라지는 저장장치를 휘발성 저장 장치
전원이 꺼져도 저장된 내용이 유지되는 저장장치를 비휘발성 저장 장치
비휘발성 저장 장치의 예시
- SSD, USB메모리
RAM의 용량과 성능이 좋으면 좋을수록
많은 프로그램을 동시에 실행하는 데에 유리합니다.
RAM의 종류
DRAM : 저장된 데이터를 동적으로 변하는(사라지는) RAM
즉. 시간이 지나면 저장된 데이터가 점차 사라지는 RAM. 사라지기 전에 다시 재활성화(다시 저장) 해야한다.
SRAM : 저장된 데이터가 변하지 않는 RAM (정적)
시간이 지나도 저장된 데이터가 사라지지 않고, 속도도 더 빠르지만, 소비전력이 크며 가격이 비싸다.
SDRAM(SDR SDRAM) : 클럭 신호와 동기화된, 발전된 형태의 DRAM (클럭과 동기화된)
DDRSDRAM : 대역폭을 넓혀 속도를 빠르게 만든 SDRAM.
(가장 흔히 사용되는 RAM)
(대역폭 : 데이터를 주고받는 길의 너비)
06-2 메모리의 주소 공간
주소의 종류
물리주소 : 메모리 하드웨어가 사용하는 주소 (정보가 실제로 저장된 하드웨어상의 주소)
논리주소 : CPU와 실행 중인 프로그램이 사용하는 주소 (프로그램 각각에게 부여된 0번지부터 시작되는 주소)
논리주소 -> 물로주소 변환
CPU와 주소 버스 사이에 위치한 메모리 관리 장치(MML)라는 하드웨어에 의해 수행
(CPU가 논리주소를 줌 -> MMU -> 물리주소가 되어 메모리로 간다)
MMU안에는 베이스 레지스터가 있다.
베이스 레지스터 : 프로그램의 가장 작은 물리 주소, 즉 프로그램의 첫 물리 주소를 저장하는 셈.
논리주소 : 프로그램의 시작점으로부터 떨어진 거리인 셈.
메모리 보호 기법
한계 레지스터 : 논리 주소의 최대 크기를 저장
접근하고자 하는 논리 주소가 한게 레지스터보다 작은지를
검사함으로써 메모리 내의 프로그램을 보호할 수 있다.
06-3 캐시 메모리
저장 계층 구조
캐시 메모리 : CPU와 메모리 사이에 위치하고, 레지스터보다 용량이 크고 메모리보다 빠른 SRAM기반의 저장 장치
(CPU의 연산 속도와 메모리 접근 속도의 차이를 줄이기 위한)
CPU와 가까운 순서대로 계층을 구성
가까운 캐시 메모리를 L1캐시, 그다음을 L2캐시, L3캐시라고 합니다.
CPU와 가장 가까운 L1캐시는 조금이라도 접근 속도를 빠르게 하기 위한 분리형 캐시도 있다.
참조 지역성 원리
예측한 데이터가 실제로 들어맞아 캐시 메모리 내 데이터가 CPU에서 활용될 경우를 캐시 히트라고 합니다.
(예측하고 주는)
하지만 예측을 잘못한 경우를 캐시 미스라고 합니다.
캐시 적중률 확인 계산법
( 캐시 히트 횟수 / (캐시 히트 횟수 + 캐시 미스 횟수) )
캐시 적중률이 높으면 CPU의 메모리 접근 횟수를 줄일 수 있다.
캐시 메모리는 한 가지 원칙에 따라 메모리로부터 가져올 데이터를 정합니다.이것 모두가 바로 참조 지역성의 원리입니다.
접근한 메모리 공간 근처를 접근하려는 경항 : 공간 지역성
Chapter 07 보조기억장치
07-1 다양한 보조기억장치
하드 디스크 : 자기적인 방식으로 데이터를 저장하는 보조기억장치.
이 때문에 하드 디스크를 자기 디스크라고도 한다.
하드 디스크
- 동그란 원판 : 플래터
- 플래터를 회전시키는 구성 요소 : 스핀들
(스핀들이 플래터를 돌리는 속도는 분당 회전수를 나타내는 RPM)
- 플래터를 대상으로 데이터를 읽고 쓴느 구성요소 : 헤드
- 헤드는 원하는 위치로 헤드를 이동시키는 : 디스크 암
- 하나 이상의 섹터를 묶어 : 블록
- 여러 겹의 플래터 상에서 같은 트랙이 위치한 곳을 모아 연결한 논리적 단위 : 실린더
플래터는 트랙과 섹터로 나뉘고, 같은 트랙이 모여 실린더를 이룹니다.
하드 디스크가 저장된 데이터에 접근하는 시간은 3가지로 나뉜다.
1. 탐색시간 : 접근하려는 데이터가 저장된 트랙까지 헤드를 이동시키는 시간을 의미
2. 회전지연 : 헤드가 있는 곳으로 플래터를 회전시키는 시간을 의미
3. 전송시간 : 하드 디스크와 컴퓨터 간에 데이터를 전송하는 시간을 의미
플래터의 한 면당 헤드가 하나씩 달려 있는 하드 디스크 : 단일 헤드 디스크
헤드가 트랙별로 여러 개 달려 있는 하드 디스크 : 다중 헤드 디스크
헤드를 움직일 필요가 없는 다중 헤드 디스크를 고정 헤드 디스크라고도 부르고,
헤드를 데이터가 있는 곳까지 움직여야하는 단일 헤드 디스크를 이동 헤드 디스크 라고 부릅니다.
플래시 메모리 ex.USB, SD카드
플래시 메모리 종류
- NAND 플래시 메모리 : 대용량 저장 장치로 많이 사용되는 플래시 메모리
- NOR 플래시 메모리
플래시 메모리에는 셀이라는 단위가 있다.
이 셀이 모여 MB, GB, TB용량을 갖는 저장 장치가 되는 것입니다.
한 셀에 1비트를 저장할 수 있는 플래시 메모리 : SLC 타입
SLC : 한집에 한명. 비트의 빠른 입출력이 가능하고 수명이 길지만 가격이 높다.
한 셀에 2비트를 저장할 수 있는 플래시 메모리 : MLC 타입
MLC : 한집에 두명. 한셀에 원래는 두비트만 저장하지만
한집에 2명이기 때문에 2배인 네 개의 정보(4비트)를 저장가능합니다. 그리고 가격이 저렴한 편입니다.
한 셀에 3비트를 저장할 수 있는 플래시 메모리 : TLC 타입
TLC : 한집에 세명. 한셀로 여덟 개의 정보를 표현, 수명과 속도가 떨어지지만 가격이 저렴하다.
플래시 메모리도 하드 디스크도 수명이 있습니다.
셀들이 모여 만들어진 단위 : 페이지
페이지가 모여 만들어진 단위 : 블록
블록이 모여 : 플레인
플레인이 모여 : 다이
Free 상태 : 어떠한 데이터도 저장하고 있지 않아 새로운 데이터를 저장할 수 있는 상태
Valid 상태 : 이미 유효한 데이터를 저장하고 있는 상태
Invalid 상태 : 유효하지 않은 데이터를 저장하고 있는 상태
플래시 메모리는 필요없는(유효하지 않은)데이터를 정리하기 위해 가비지 컬렉션 기능을 제공
07-2 RAID의 정의와 종류
RAID : 주로 하드 디스크와 SSD를 사용하는 기술로,
데이터의 안전성 or 높은 성능을 위해 여러 개의 물리적 보조기억장치를 마치 하나의 논리적 보조기억장치처럼 사용하는 기술
RAID 구성 방법을 RAID레벨로 표현하는데 대표적으로 RAID0, RAID1, RAID2, RAID3, RAID4, RAID5, RAID6... RAID50이 있습니다.
RAID0 : 여러 개의 보조기억장치에 데이터를 단순히 나누어 저장하는 구성 방식
- 단점 : 저장된 정보가 안전하지 않다 -> 그래서 RAID1 등장
줄무늬처럼 분산되어 저장된 데이터 : 스트라입
분산하여 저장하는 것을 스트라이핑이라고 한다.
데이터가 분산되어 저장되면(스트라이핑되면) 저장된 데이터를 읽고 쓰는 속도가 빨라집니다.
RAID1 : 복사본을 만드는 방식.
복사본을 만드는 구성이기에 미러링 이라고도 부른다.
하지만 많은 양의 하드 디스크가 필요하게 되고, 비용이 증가한다는 단점이 있다.
RAID4 : RAID1처럼 복사본을 만드는 대신 오류를 검출하고 복구하기 위한 정보를 저장한 장치를 두는 구성 방식
이때, 오류를 검출하고 복구하기 위한 정보 : 패리티 비트
원래 패리티 비트는 오류 검출만 가능할 뿐 오류 복구는 불가능합니다.
RAID5 : 패러티를 분산하여 저장하는 방식 (RAID4 단점을 보완)
RAID6 : RAID5에 오류를 검출하고 복구할 수 있는 수단이 추가. RAID5보다 속도는 느리지만 데이터를 안전하게 보관 가능
RAID 레벨을 혼합한 방식 : Nested RAID.
Chapter 08 입출력장치
08-1 장치 컨트롤러와 장치 드라이버
장치 컨트롤러
장치 컨트롤러가 까다로운 이유 ?- 입출력장치에는 종류가 너무 많다.
- 입출력 장치의 데이터 전송률은 낮다.
( 전송률 : 데이터를 얼마나 빨리 교환할 수 있는지를 나타내는 자료 )
입출력장치는 컴퓨터에 직접 연결되지 않고 장치 컨트롤러라는 하드웨어를 통해 연결.
( 장치 컨트롤러 : 입출력 제어기, 입출력 모듈 등으로 다양하게 불리기도 한다. (저는 장치 컨트롤러라고 부르겠습니다) )
장치 컨트롤러 역할
- CPU와 입출력장치 간의 통신 중개, 오류 검출, 데이터 버퍼링
데이터 버퍼링 : 전송률이 높은 장치와 낮은 장치 사이에 주고받는
데이터를 버퍼라는 임시 저장 공간에 저장하여 전송률을 비슷하게 맞추는 방법
입출력장치는 장치 컨트롤러를 통해 컴퓨터 내부와 정보를 주고 받습니다.
버스 <-> 장치 컨트롤러 <-> 입출력장치
장치 컨트롤러 안엔 데이터 레지스터, 상태 레지스터, 제어 레지스터가 있습니다.
데이터 레지스터 : CPU와 입출력장치 사이에 주고받을 데이터가 담기는 레지스터
상태 레지스터 : 입출력장치가 입출력 작업을 할 준비가 되었는지,
입출력 작업이 완료되었는지, 입출력장치에 오류는 없는지 등의 상태 정보가 저장된다.
제어 레지스터 : 입출력장치가 수행할 내용에 대한 제어 정보와 명령을 저장
장치 드라이버 : 장치 컨트롤러의 동작을 감지하고 제어함으로써 장치 컨트롤러가 컴퓨터내부와 정보를 주고받을 수 있게 하는 프로그램
08-2 다양한 입출력 방법
프로그램 입출력 : 기본적으로 프로그램 속 명령어로 입출력장치를 제어하는 방법
이때, 메모리 맵 입출력, 고립형 입출력이 있습니다.
메모리 맵 입출력 : 메모리에 접근하기 위한 주소 공간과 입출력장치에 접근하기 위한 주소 공간을 하나의 주소 공간으로 간주하는 방법
ex. 516번지 : ~~~레지스터
고립형 입출력 : 메모리를 위한 주소 공간과 입출력장치를 위한 주소 공간을 분리하는 방법
메모리 맵 입출력 | 고립형 입출력 |
메모리와 입출력장치는 같은 주소 공간 사용 | 메모리와 입출력장치는 분리된 주소 공간 사용 |
메모리 주소 공간이 축소됨 | 메모리 주소 공간이 축소되지 않음 |
메모리와 입출력장치에 같은 명령어 사용 가능 | 입출력 전용 명령어 사용 |
인터럽트 기반 입출력 : 인터럽트를 기반으로 하는 입출력
(폴링 : 입출력장치의 상태는 어떤지, 처리할 데이터가 있는지 주기적으로 확인하는 방식)
플래그 레지스터 속 인터럽트 비트가 활성화되어 있는 경우, 혹은 인터럽트 비트를 비활성화해도 무시할 수 없는 인터럽트 : NMI
우선순위를 반영하여 다중 인터럽트를 처리하는 방법에는 여러 가지가 있지만,
많은 컴퓨터에서는 프로그래머블 인터럽트 컨트롤러라는 하드웨어 사용
PIC는 여러 장치 컨트롤러에 연결되어 장치 컨트롤러에서 보낸 하드웨어 인터럽트 요청들의
우선순위를 판별한 뒤 CPU에 지금 처리해야 할 하드웨어 인터럽트는 무엇인지 알려주는 장치입니다.
DMA 입출력
입출력장치와 메모리가 CPU를 거치지 않고도 상호작용할 수 있는 입출력 방식인 DMA가 등장.
DMA : 이름 그래도 직접 메모리에 접근할 수 있는 입출력 기능.
입출력을 하기 위해서는 시스템 버스에 연결된 DMA 컨트롤러라는 하드웨어가 필요.
입출력버스는 입출력 장치를 컴퓨터 내부와 연결짓는 통로라고 볼 수 있다.
입출력버스에는 PCI버스, PCI Express버스 등이 있습니다.
여러 입출력장치들을 PCIe 버스와 연결해주는 통로인 PCIe 슬롯입니다.
메모리에 직접 접근할 뿐만 아니라 입출력 명령어를 직접 인출하고, 해석하고, 실행까지 하는
일종의 입출력 전용 CPU가 만들어졌는데, 이를 입출력 프로세서 or 입출력 채널이라고 부른다.
이렇게 혼공단 컴퓨터구조 + 운영체제 1주차 6~8파트 요약 정리를 마쳤습니다.
이제 미션을 해볼까요??
3주차 (1/15 ~ 1/21) |
Chapter 06 ~ 08 | p. 185의 확인 문제 3번, ㅊ 풀고 인증하기 | Ch.07(07-1) RAID의 정의와 종류를 간단히 정리해 보기 |
기본 미션 인증
선택미션의 요약정리는
위에 요약정리에 있어요 !
이렇게 3주차도 잘 마쳤는데
1주차엔 우수혼공족은 아니지만
참고하세요 !! 로 되어서 내심 기뻤습니다 !!
하지만 2주차에 드디어 우수혼공족이 되었습니다 !!
뭔가 인정받은 느낌이라 너무 기분이 좋았고,스벅 기프티콘을 받았습니다 !!
다음에도 선정될 수 있도록 !내 요약 정리글이 다른 분께 도움이 될 수 있도록 !나의 자기개발에 도움이 될 수 있도록 !열심히 하겠습니다 !!
참고로 코딩 자율 학습단(PYTHON)으로 진행중인데그것도 1주차가 우수 학습단으로 선정되었으니다른글도 많은 관심 부탁드립니다 !!