1. CPU의 구조적 이해
CPU 구조
연산장치(ALU) | 각종 산술/논리연산 수행 |
레지스터 | CPU내부에서 결과를 임시적으로 기억하는 고속 저장영역 1. PC (program counter) - 다음 수행 명령어가 저장된 주기억 장치 번지 지정 2. MAR (memory address register) - 주기억장치의 번지를 기억하는 레지스터 3. MBR (memory buffer register) - 주기억장치에 인/출력할 자료 기억하는 레지스터 4. IR (Instruction register) - 인출한 명령어를 기억하는 레지스터 |
제어장치 | 코드를 해석하고, 실행하기 위한 제어신호 발생 장치 |
내부 CPU 버스 | ALU와 레지스터 간의 데이터 이동 경로로, 데이터, 주소, 제어 정보를 전달하는 전송 라인 1. 데이터 버스 - 시스템 구성간의 데이터를 전송하는 버스 2. 주소 버스 - 기억 장소의 위치/장치 식별을 지정하기 위한 버스 3. 제어 버스 - CPU와 기억/IO장치 간의 제어 신호를 전송하는 버스 |
CPU의 명령 실행 주기 (Instruction Cycle)
패치(fetch) → 간접(indirect) → 실행(execution) → 인터럽트(interrupt)
- 인출(instruction fetch): 메모리에서 데이터를 로드해서 레지스터(CPU)에 적재
- 간접(indirect) : 메모리 참조시 간접주소 방식을 사용하는 경우 실행
- 실행(execution) : 명령/데이터를 가지고 CPU가 산술/논리연산 수행
- 인터럽트(interrupt) : 문제가 발생해도 업무처리가 계속 될 수 있도록 하는 기능
- SVC HW interrupt : 기계착오, 외부, 입출력, 프로그램 검사 인터럽트
- SW interrupt : CPU 내부 명령, 명령 실행에 관련된 모듈 변화
2. 메모리 시스템
기억장치 계층 구조
레지스터 | CPU내부 | 빠름 CPU가 즉시 사용될 데이터를 저장(volatile) |
캐시 | CPU내부 (CPU와 RAM사이) |
빠름 자주사용되는 데이터를 저장하여 빠르게 접근 가능하도록 (non-volatile) |
메모리 | CPU외부 접근 | 레지스터/캐시보다는 느림 |
HDD | 직접접근 불가 | 데이터를 메모리로 이동시켜 접근 가능 |
캐시 메모리
CPU가 읽어들인 데이터들로 채워지는 버퍼 형식의 고속 기억 장치
캐시 메모리 Mapping(사상) 방식
1. 직접 mapping
mod 연산을 통해 메모리 블록을 정해진 캐시블록에만 mapping
mapping 절차는 단순하지만, 캐시 미스율이 높다.
2. 완전 연관(fully-associative) mapping
메모리 블록을 어떤 캐시 블록에도 mapping
지역성 높은 접근 시 캐시 적중률 높지만 구현이 복잡함
3. 집합 연관(set-associative) mapping
직접 사상과 완전 연관 사상을 절충하여, 메모리 블록을 정해진 블록의 집합 내 어디든 사상
직접 사상과 연관 사상의 장점을 수용했지만 캐시의 Fin/Fout 증가하고 구현 비용이 크다.
만약, 시스템의 구성이 다음과 같다면?
메모리 크기(512 Byte), 캐시 크기(128 Byte), 블록 크기(16 Byte)
1. 메모리 주소를 표현하는 데에 필요한 비트수
512 = 2^9 이므로 9bit 필요
2. 캐시 주소를 표현하는 데에 필요한 비트수
128 = 2^7 이므로 7bit필요
3. 블록 주소를 표현하는 데에 필요한 비트 수
한블록이 16바이트 -> 512/16=32 이므로 32 블록이 존재 => 5bit 필요
4. 캐시 블록 주소를 필요하는데에 필요한 비트
128/16 = 8 이므로 3bit 필요
5. 블록 오프셋을 표현하는 데 필요한 비트 수 계산
하나의 블록 내부(16바이트)에서 각각의 바이트를 구분하려면 2^4이므로 4bit 필요
캐시 메모리 관리 방식
캐시 메모리 관리는 CPU가 원하는 데이터가 캐시 메모리에 있을 수 있도록 하는 것을 의미한다.
캐시 메모리 인출방식
필요시에 캐시를 인출하는 Demand fetch, 예상 블록을 미리 인출하는 pre-fetch가 존재한다.
캐시메모리 교체 알고리즘의 종류
Random | 교체될 Page 임의 선정 | overhead 적음 overhead 적음 |
FIFO | 오래 있었던 Page 교체 | 자주 사용되는 page 교체될 수 있음 |
LFU(Least Frequently Used) | 사용 횟수가 가장 적은 Page 교체 | 최근 적재된 page 교체될 수 있음 |
LRU(Least Recently Used) | 가장 오래 사용되지 않은 Page 교체 | Time stamping 필요(Overhead) |
Optimal | 가장 참조되지 않을 page 교체 | 실현 불가능 |
NUR(Not Used Recently) | 참조 비트와 수정 비트로 미사용 page 교체(최근 사용되지 않은 것 교체) |
|
SCR(Second Chance Replacement) | 최초 참조 비트 1로, 1인 경우 0으로, 0인 경우 교체 |
페이지 교체 관리 시, 문제점
- Page Fault(페이지 부재) : 적재되지 않은 page 접근 시 발생
- Demand Paging(요구 페이징) : 요구될 때만 page를 적재
- Thrashing(스레싱) : page 부재가 빈번하여 process 수행보다 교체에 더 많은 시간 소요하는 현상
페이지 교체 관리 문제 해결
- Load Control : 프로세서 생성을 지연시키고 Suspend Queue에 대기시켜 Thrashing 현상 감소
- Locality(지역성) : 시간, 공간 지역성을 집중적으로 참조
- Working Set : 일정 시간 동안 참조되는 페이지 집합을 주기억장치에 유지
- PFF(Page Fault Frequency) : page fault 빈도에 따라 residence set 조정
→ PFF 증가하면 residence set 크기도 증가
캐시 메모리 일관성
각 프로세서가 캐시를 보유하며 캐시에 로드된 데이터를 변경한 경우 주기억장치의 데이터와 동일하게 유지되는 매커니즘
캐시 불일치 발생 원인
- write-through : 프로세서가 cache에 저장된 값을 갱신 시 주기억장치의 값도 갱신
→ 다른 프로세서의 cache값은 변경되지 않아 불일치 발생 - write-back : 데이터를 cache에만 기록하고, 차후 메모리에 저장
→ 메모리에 기록되기 전까지 불일치
가상 메모리 시스템
보조기억장치를 주기억장치처럼 사용하여 주기억장치의 공간을 확대한다.
가상 메모리란?
virtual address space를 통해 실제 물리적 메모리보다 더 큰 용량의 메모리 공간을 제공하는 가상의 메모리이다.
가상 주소란 프로세스가 참조하는 주소이며, 물리 주소는 실제 메모리의 RAM주소를 의미한다.
관리 단위는 다음과 같다.
페이지 | 동일한 크기의 최소 논리 분할 단위로 나눈 것 고정 분할 후, 일부 page만 일부 적재한다. 메모리 관리 측면의 관점에서 요구page만 적재하여 외부 단편화를 해결, 교체 시간이 최소화된다. 그러나, 내부 단편화 발생할 수 있으며, Thrashing 이 발생한다. |
세그먼트 | 사용자 주소 공간을 별도로 논리적 단위로 나눈 것 가변 분할 후, 프로그램 전체를 적재한다. 파일 관리 측면에서 사용자 관점으로 사용가능하며, 내부 단편화가 해결되었으나, 반대로 외부단편화가 심각하다. |
가상메모리 관리 정책
- 할당 기법(Allocation) : 프로세스에게 할당되는 메모리 블록의 단위 결정
→ 고정 할당, 가변 할당, Paging, Segmentation - 호출 기법(Fetch Policy) : 보조기억장치에서 주기억장치로 적재할 시점 결정
→ Demand Fetch, Pre Fetch - 배치 기법(Placement) : 요구된 페이지를 어느 곳에 적재할 것인지 결정
→ First fit, Best fit, Next fit, Worst fit - 교체 기법(Replacement) : 주기억장치 공간 부족 시 교체 대상 결정
→ Random, FIFO, LRU, LFU, NUR, SCR, Optimal
가상 메모리 관리 기법
MMU(Main Memory Unit) : 주기억장치와 캐시의 메모리 주소를 변환
TLB(Translation Look aside Buffer) : 페이지 테이블 접근에 따른 지연 문제를 해결하기 위한 변환 버퍼
Paging 메모리 관리 기법
- 논리주소의 고정된 페이지 블록(4KB)들로 분할 관리하는 기법
- 각각의 페이지는 물리 메모리의 프레임(Frame)과 맴핑한다.
- 페이지를 가리키는 논리주소에서 프레임을 가리키는 물리주소로 변환한다.
먼저 TLB 메모리에서 가상 기억장치와 주기억장치 매핑한다.
매핑 정보가 없다면 Page Table에서 매핑을 수행하고 real address와 매핑하여 main memory를 참조한다.
Segmentation 메모리 관리 기법
- 메모리를 세그먼트 세트로 나눠 관리하는 방식
- 세그먼트는 세그먼트의 시작 주소인 베이스 어드레스(Base Address)와 세그먼트의 크기를 지정하는 길이 값(Length Value)으로 구성된다.
- 주소 지정은 Base Address를 지시하는 Segment Selector와 세그먼트 내의 변위(Offset) 값을 통해 지정
- Virtual Address는 Segment 번호와 Offset으로 구성된다.
- Segment Table에서 Base Segment 주소를 획득하고 Offset과 결합하여 물리 메모리 주소를 산출한다.
3. I/O 인터페이스
입출력 처리는 주기억장치와 보조기억장치(디스크, 테이프, 플래시 메모리) 간에 입출력을 수행하는 것으로 4가지 방법이 존재한다.
CPU를 비경유하는 방식에 대해서 알아보자.
DMA
CPU 개입 없이 I/O 장치와 기억장치 사이의 데이터를 전송하는 접근 방식으로 속도가 빠르다.
CPU가 DMA로 보내는 제어 정보
a. 데이터 R/W 용 메모리 주소와 제어 신호
b. 메모리 블록 : 워드 수를 표시하는 워드 카운트
c. DMA 전송을 위한 시작 제어 신호
I/O Processor
DMA 제어기로는 한계가 있어 별도 전용 처리 기능의 프로세서를 탑재하여 I/O 작업 처리(I/O Channel)
CPU나 DMA 대신 독립된 입출력 프로세서인 채널이 입출력 담당하여 효율성 향상한다.
I/O Processor의 구성요소
- 프로세서 : I/O 명령어를 실행할 수 있는 프로세서
- 지역 기억장치 : 대용량 데이터 블록들을 저장할 수 있는 저장소
- 버스 인터페이스 : 시스템 버스에 대한 인터페이스
- 버스 중재회로 : 버스 마스터 및 버스 중재기
I/O Processor의 종류
- Selecotr Channel : 한 번에 한 개씩 데이터를 주기억장치에 보내는 방식
→ 고속장치(Disk, CDROM), 단일 입출력만 가능하며 Burst Mode 동작. - Multiplexer Channel : 동시에 많은 데이터를 전송할 수 있는 방식
→ 저속장치(Printer, Serial), 시분할 방식으로 Byte 단위 전송. - Byte Multiplexer Channel : 한 개의 채널에 여러 I/O 연결하여 시분할 공유
→ 저속 입출력 방식 - Block Multiplexer Channel : Hybrid 모드, 동시에 여러 I/O 처리
→ 블록 단위로 처리
'자격증 > 정보보안기사' 카테고리의 다른 글
네트워크보안(3) | 네트워크 기반 공격 기술의 이해 및 대응 (0) | 2025.05.12 |
---|---|
네트워크보안(2) | TCP/IP 구조2 (0) | 2025.05.06 |
네트워크보안(2) | TCP/IP 구조1 (0) | 2025.05.04 |
네트워크보안(1) | 네트워크 일반 (0) | 2025.04.08 |