CPU( = 중앙처리장치 )
입력장치로부터 자료를 받아서 연산하고 그 결과를 출력장치로 보내는 과정을 제어하는 핵심장치
레지스터
PC : 다음에 수행할 명령어 주소를 기억
IR : 현재 실행 중인 명령을 기억
AC : 연산의 결과를 임시로 저장 ( 누산기 )
MAR : 데이터의 주소를 기억
MBR : 데이터를 임시로 기억하는 레지스터 ( 데이터를 처리하기 위해 반드시 거침 )
버스
시스템에 많은 장치를 공유하여 데이터, 주소, 제어 정보를 전달하는 전송 라인
-- 종류 --
데이터 버스 : 데이터를 전송하기 위한 용도
주소 버스 : 기억장소의 위치 / 장비 식별을 지정하기 위한 라인
제어 버스 : CPU와 기억장치 또는 I/O장치 사이의 제어 신호를 전송하는 라인
Instruction Cycle
하나의 명령어 실행이 끝난 후, 다음 명령어의 수행이 시작되어 끝날 때까지 걸리는 시간
-- 순서 --
1. 인출( Instruction Fetch ) : 메모리에서 데이터를 로드하여 CPU에 있는 레지스터에 적재하는 과정
2. 간접( Indirect ) : 간접주소 방식 사용
-> 간접주소 : 메모리에 주소가 존재하여 메모리 내에서 한번 더 조회해서 데이터를 얻는 것
3. 실행( Execution ) : CPU가 산술 및 논리연산을 실행하는 것
4. 인터럽트( Interrupt ) : 컴퓨터 작동 중 문제가 발생하더라도 업무 처리가 계속 될 수 있도록 하는 것
-> 하드웨어 인터럽트 : 기계착오, 외부, 입출력, 프로그램 검사
-> 소프트웨어 인터럽트 : CPU 내부에서 자신이 실행한 명령이나 CPU의 명령 실행에 관련된
모듈이 변화하는 경우 발생
-- 인터럽트 종류 --
기계착오 인터럽트 : CPU의 기능적인 오류 동작이 발생한 경우 발생
외부 인터럽트 : 외부에서 전기적인 신호의 입력에 의해 발생
입출력 인터럽트 : 입출력 데이터에 이상이 있는 경우 발생
프로그램 검사 인터럽트(= 내부 인터럽트) : 프로그램 상의 불법적인 명령이나 데이터를 잘못 사용하여 발생
슈퍼바이저 호출(= 소프트웨어 인터럽트) : 특수한 호출 명령으로 원하는 위치에서 인터럽트 발생
운영체제 동작순서
< CPU는 기억장치( RAM )와 메모리를 교환한다. >
1. PC가 첫번째 명령어의 주소인 X를 가지고 있다.
2. PC에 있는 주소가 MAR로 적재
3. 이때, MAR에 있는 주소가 main memory 주소를 가리킨다.
4. 그 주소에 해당하는 값을 MBR에 저장
5. 해당하는 값을 IR에 전달
6. 제어장치가 명령어를 해독 후, AC에 data를 저장하거나 연산
기억장치 계층구조
캐시메모리
CPU와 주기억장치의 속도 차이를 극복하기 위해 사용
-- 사상방식 --
직접사상 : Main Memory를 여러 구역으로 분할하여 Cache 슬롯과 매핑한다.
-> 장점 : 매핑 절차가 단순 / 신속
-> 단점 : 캐시 적정률 저하( 같은 블록에 사상되는 데이터 캐시 적재 시 교체 발생 )
연관사상 : Main Memory의 각 블록이 Cache의 어느 슬롯이든 적재 가능하다.
-> 장점 : 캐시 적중률 높음
-> 단점 : 구현 하드웨어가 복잡하여 구현 비용 상승
집합 연관사상 : 캐시와 메모리가 M 대 1로 대응
-> 장점 : 직접사상과 연관사상의 장점 수용
-> 단점 : 캐시 Fin/Fout 발생 증가
-- 인출방식 --
Demand Fetch : 필요시 캐시를 인출
Pre-Fetch : 예상되는 블록을 미리 가져온다
-- 캐시메모리 교체 알고리즘 --
Random : 임의 선정
< 특징 : Overhead가 적음 >
-> Overhead : 어떤 처리를 하기 위해 추가로 사용되는 컴퓨터 자원( 간접적인 처리시간 / 메모리 )
FIFO( First In First Out ) : 캐시에 오래 있었던 Page 교체
< 특징 : 자주 사용하는 Page가 교체될 우려 >
LFU( Least Frequently Used ) : 사용 횟수가 가장 적은 Page 교체
< 특징 : 최근 적재된 Page가 교체될 우려 >
LRU( Least Recently Used ) : 가장 오랫동안 사용되지 않은 Page 교체
< 특징 : Time stamping에 의한 Overhead 존재 >
-> Time stamping : 둘 이상의 시각을 비교하거나 기간을 계산할 때 편리하게 사용하기 위해 생성
Optimal : 향후 가장 참조되지 않을 Page 교체
NUR( Not Used Recently ) : 참조 비트와 수정 비트로 미사용 Page 교체
< 특징 : 최근 사용되지 않은 Page 교체 >
SCR( Second Chance Replacement ) : 최초 참조 비트 1로 set / 1인경우 0으로 set / 0인경우 교체
-- 페이지 교체 관리 시 문제점 --
Page Fault( 페이지 부재 ) : 기억장치에 적재되지 않은 Page를 사용하려 할 때 발생
Demand Paging( 요구 페이징 ) : 요구될 때에만 Process가 Page를 적재
Thrashing( 스레싱 ) : Page Fault가 많이 발생하여 CPU가 Process 수행보다 Page 교체에
더 많은 시간을 소요하는 현상
-- 문제 해결 방안 --
Load Control : 일정 시간동안 새로운 프로세서가 생성되는 것을 지연 / Suspend Queue에 대기
< 결과 : Thrashing 현상 감소 >
Locality( 지역성 ) : 시간과 공간 지역성을 집중적으로 참조
< Thrashing 방지를 위한 Working Set의 기반 >
-> 시간 지역성 : 프로세스가 실행되면서 하나의 Page를 일정 시간 동안 집중적으로 엑세스하는 현상
-> 공간 지역성 : 프로세스 실행 시 일정 위치의 페이지를 집중적으로 엑세스하는 현상
Working Set : 지역성을 기반으로 가장 많이 사용하는 Page를 미리 주기억장치에 저장해둔 것
PFF( Page Fault Frequency ) : Page Fault 빈도에 따라 Residence set을 조정
PFF가 높으면 Residence set의 크기 증가 / 낮으면 감소
-- 캐시 메모리 일관성 --
일관성 유지 방식 : 각 프로세서가 캐시를 보유하며 캐시에 로드된 데이터를 변경한 경우 주기억장치의 데이터와 동일하게 유지된다.
-- 캐시 불일치 발생 원인 --
CPU가 Cache와 메모리에 데이터를 기록하는 방식은 Write-through와 Write-back 두 종류가 있다.
-> Write-through : 프로세스에서 메모리에 쓰기 요청을 할 때마다
캐시의 내용과 메인 메모리의 내용을 같이 바꾸는 방식
< 프로세스 P1, P2, P3이 메모리에 있는 값 A를 읽어와 각각의 캐시 X에 저장한 후 P1이 X값을
변경하여 갱신하면 Write-through 정책 사용 시 주기억장치의 값이 갱신한 값으로 변경된다.
그러나 프로세스 P2, P3의 캐시 값은 메인 메모리의 값과 다른 상황이 발생한다. >
-> Write-back : CPU에서 메모리에 대한 쓰기 작업 요청 시 캐시에서만 쓰기 작업과 그 변경 사실을 확인할 수 있는
표시를 하여 캐시로부터 해당 블록의 내용이 제거될 때 그 블록을 메인 메모리에 복사함으로써
메인 메모리와 캐시의 내용을 동일하게 유지하는 방식
< 각각의 프로세서가 Write-back 정책을 사용할 때만 Cache에 데이터를 기록하고 차후 메모리에 저장한다.
이렇게 되면 메모리에 기록하기 전까지는 Cache와 메모리의 값이 서로 다른 상황이 발생한다. >
가상메모리
실제 물리적 메모리보다 더 큰 용량의 메모리 공간을 제공하는 메모리 관리 기법
-- 관리 단위 --
페이징 기법 : 동일한 크기의 최소 논리 분할 단위로 나눈 것
특징 : 고정분할 / 요구 Page만 일부 적재 / 메모리 관리 측면
장점 : 외부 단편화 해결 / 교체시간 최소
단점 : 내부 단편화 / Thrashing / 잦은 디스크 I/O 유발
세그먼트 기법 : 용도별로 논리적 단위로 나눈 것
특징 : 가변분할 / 프로그램 전체 적재 / 파일 관리 측면
장점 : 프로그래밍 용이 / 내부 단편화 해결 / 데이터 공유 용이
단점 : 외부 단편화
-- 할당 정책 --
연속 할당
- 고정 분할 : 내부 단편화 발생 / 고정된 크기의 단위로 메모리 할당
- 가변 분할 : 외부 단편화 발생 / 요청마다 다른 크기로 할당
비연속 할당
Paging : TLB와 MMU, Page Table로 관리
-> TLB : 가상 메모리 주소를 물리적인 주소로 변환하는 속도를 높이기 위해 사용되는 캐시
-> MMU : 주기억장치와 캐시의 메모리 주소를 변환하는 역할
Segmentation : Segment Table로 관리
I/O 인터페이스
프로그램에 의한 I/O : CPU가 연산 도중 입출력 필요시 보조기억장치에서 데이터를 읽어와 주기억장치에
적재하고 CPU는 주기억장치를 참조해서 데이터를 읽어오는 방법
< CPU는 입출력 동안 다른 작업을 할 수 없다. >
인터럽트에 의한 I/O : 인터럽트를 식별하고 인터럽트 처리 루틴에 의해서 입출력을 수행
< CPU의 관여가 적지만 CPU는 입출력을 대기해야 한다. >
DMA : CPU의 개입없이 I/O장치와 기억장치 사이의 데이터를 전송하는 방식
속도가 빠르다.
-- DMA 동작방식의 종류 --
Cycle Stealing : DMA 제어기와 CPU가 버스를 공유
CPU가 버스를 사용하지 않는 사이클에만 접근하고 CPU보다 높은 우선순위를 가짐
Burst Mode : DMA 제어기가 버스를 점유, 동작 완료 후 버스 해제
I/O Processor( = Channel I/O ) : CPU와 독립적으로 입출력을 수행하고 고속으로 데이터 전송 가능
- Selector Channel : 한 번에 한 개씩 데이터를 주기억장치에게 보내는 방식
< 고속장치 / 단일 입출력만 가능 >
- Multiplexer Channel : 동시에 많은 데이터를 전송할 수 있는 방식
< 저속장치 / 시분할 방식으로 Byte 단위 전송 >
'자격증 > 정보보안기사 - 시스템보안' 카테고리의 다른 글
윈도우 클라이언트 및 서버 보안 명령어 (0) | 2019.08.16 |
---|---|
윈도우 클라이언트 및 서버 보안 (0) | 2019.08.07 |
리눅스 서버 보안 명령어 (0) | 2019.08.04 |
리눅스 서버 보안 (0) | 2019.08.01 |
운영체제 구조 (0) | 2019.07.30 |