컴퓨터 시스템의 구성요소
- 입력장치 : 데이터를 받아들이는 장치
- 출력장치 : 데이터 처리 과정을 거쳐서 그 결과가 출력을 통해 나오는 장치
- 중앙처리장치 (CPU) : 입력된 데이터를 (컴퓨터에서 전자적으로) 처리하는 장치
- 기억장치 : 프로그램과 데이터를 저장하는 장치
- 시스템 버스 : 장치들을 연결시켜주는, 정보가 지나다니는 통로
CPU
- 컴퓨터에서 명령어를 수행하고 데이터를 처리하는 장치
- 프로그램이 수행되는 전반적인 과정을 제어
- 처리장치(ALU + 레지스터)와 제어장치(CU)로 구성
CPU의 구성요소
산술논리연산장치 (ALU)
- 기본적인 산술연산과 논리연산을 실행하는 조합논리회로
제어장치 (CU)
- 프로그램에 의한 연산의 순서대로 기억장치, 연산장치, 입출력장치에 제어신호를 발생시킴
레지스터
- 데이터를 일시 저장하거나 전송하는 장치
- CPU에서 임시로 데이터를 저장하는 기억장치
- 기억장치 중 액세스 속도가 가장 빠름
내부 버스
- ALU와 레지스터 간의 데이터 전송을 위한 통로
- 외부장치(기억장치, 입출력장치)와 데이터 전송
명령어 수행과정
- 명령어 인출 : 기억장치로부터 명령어를 가져오는 과정
- 명령어 해석 : 명령어를 해독하는 과정
- 명령어 실행 : 지정된 연산을 실행하는 과정
- 저장 : 명령어 실행단계에서 수행된 연산 결과가 레지스터 혹은 기억장치에 쓰여지는 과정
- 인터럽트 처리 : 명령어 실행 도중에 입출력장치와 같은 다른 장치에 의해 인터럽트가 들어오면 그에 합당한 서비스를 제공하는 과정
CPU의 성능
- 클럭
- CPU 내부에서 일정한 주파수를 가지는 신호
- 1Hz는 1초에 한 번 연산의 주기
(4.5GHz는 초당 45억 번의 명령어를 처리)
- 코어
- 중앙처리장치 역할을 하는 블록을 의미
- 멀티 코어는 여러 개의 CPU가 병렬적으로 여러 연산을 처리 가능
CPU의 스케줄링 기법
프로세스 스케줄링 알고리즘의 형태는 크게 선점 스케줄링 기법과 비선점 스케줄링 기법으로 구분됨
선점(preemptive) 스케줄링 기법
- 이미 중앙처리장치(CPU)를 점유하여 실행 중인 프로세스를 내보내고, 다른 프로세스에게 중앙처리장치를 할당하는 스케줄링 기법
- 우선순위가 높은 작업에 CPU의 사용권을 넘겨주므로, 응답시간을 예측하기 어려움
선점 1. 우선순위 스케줄링
- 우선순위가 높은 프로세스부터 먼저 처리하는 스케줄링 기법
선점 2. 라운드 로빈 (Round Robin)
- 프로세스가 도착한 순서대로 CPU가 할당되지만, CPU의 시간 할당량 또는 시간 간격에 의해 제한을 받는 스케줄링 방식
- 가장 구현하기 쉽고, 지금 현재 가장 많이 사용됨
- 장점 : 하나의 프로세스가 CPU를 독점하지 않고 공평하게 이용될 수 있음
- 단점 : 우선순위가 높은 작업을 빨리 처리하기 어려움
선점 3. 다단계 큐 (Multilevel-Queue)
- 준비완료 큐를 여러개의 큐로 분류하여 각 큐가 각각 다른 스케쥴링 알고리즘을 가지는 방식
비선점(nonpreemptive) 스케줄링 기법
- 일단 프로세스에 중앙처리장치가 할당되어 프로세스의 실행이 시작되면, 프로세스가 종료될 때까지 중앙처리장치를 다른 프로세스에게 양보하지 않는 기법
- 비선점 스케줄링 기법은 짧은 작업이 긴 작업으로 인해 기다리게 되는 경우가 있지만 모든 프로세스 관리가 공평함
- 장점 : 우선순위에 관계없이 대기 중인 작업에는 변동이 없으므로 응답시간을 예측할 수 있음
- 단점 : 우선순위를 고려하지 않으므로, 효율이 떨어질 수 있음
비선점 1. FCFS (First-Come First-Served)
- 준비 큐에 도착한 순서대로 중앙처리장치를 할당받도록 해 주는 기법
- 하나의 프로세스가 중앙처리장치를 차지하면 그 프로세스의 수행이 완료된 후에 그 다음 프로세스에게 중앙처리장치를 할당함
- 대기 큐에 늦게 들어온 짧은 작업이 대기 큐에 일찍 들어온 긴 작업을 기다리게 되고, 중요한 프로세스가 덜 중요한 프로세스의 완료를 기다리는 단점이 있음
비선점 2. SJF (Shortest Job First)
- 현재 준비 큐에 있는 프로세스들 중에서 수행시간이 가장 짧을 것으로 예상되는 프로세스를 먼저 처리하는 스케줄링 기법
- 프로세스의 예상 수행 시간을 실행 입력 이전에 알아야 하므로 일괄처리 환경에서는 구현하기 쉽지만, 대화식 시스템에는 사용자와 컴퓨터 간의 상호작용으로 인해 실행시간을 예측할 수 없기 때문에 사용되기 힘듦
- 장점 : 대기하는 프로세스의 수를 최소화할 수 있으므로 빠른 응답시간을 제공할 수 있음
- 단점 : 수행시간이 긴 프로세스는 CPU를 할당받지 못한 채 계속 기다릴 수 있음
비선점 3. HRN (Highest Response-ratio Next)
- 우선순위를 계산하여 점유 불평등 보완(SJF 단점 보완)
우선순위 = (대기시간 + 실행시간) / (실행시간)
기억장치
지역성의 원리
주어진 시간 동안에 프로그램의 실행에서 발생하는 주소들은 기억장치 내의 몇몇 한정된 영역만을 반복적으로 지정하며, 그 밖의 영역에 대한 접근은 상대적으로 드문 현상
- 시간적 지역성 (temporal locality)
- 어떤 내용이 한번 참조되면, 곧 바로 다시 참조되기 쉽다.
- 공간적 지역성 (spatial locality)
- 어떤 내용이 참조되면, 그 내용에 가까운 곳에 있는 다른 내용이 곧바로 참조되기 쉽다.
- 반복적으로 명령어와 데이터를 접근하게 되는 루프를 포함하는 대부분의 프로그램은 상당히 큰 시간적 지역성을 보인다.
- 또한, 대개의 명령어들이 순차적으로 접근되기 때문에 큰 공간적 지역성을 보인다.
메모리의 종류
위로 갈수록 용량은 적고, 가격은 비싸고, 속도는 빠르다.
- 레지스터
- 캐시 (SRAM)
- 메인 메모리 (DRAM) (= 주기억장치)
- 하드디스크 (HDD) (= 보조기억장치)
캐시 메모리
- 주기억장치의 수행속도 개선을 위한 하나의 방법
- 캐시기억장치는 주기억장치보다 속도가 빠른 기억소자들로 구성되어 중앙처리장치와 주기억장치간의 속도 차이를 줄여주는 역할을 함
- 중앙처리장치가 주기억장치에 접근하는 대신 캐시기억장치에서 데이터를 가져오게 하는 것이다. (임시저장소!)
숫자가 낮을수록 CPU에 가까움
- L1 캐시 메모리 : CPU 구성에 포함됨
- L2 캐시 메모리 : CPU와 별도
- L3 캐시 메모리 : CPU와 별도
캐시 히트와 캐시 미스
프로그램이 어떤 단어에 접근할 때 발생되는 두 가지 경우
- 그 단어를 포함한 블록이 캐시기억장치에 저장되어 있는 경우
- 히트(hit) : 접근하고자 하는 단어가 캐시기억장치에 저장되어 있는 경우
- 그 단어를 포함한 블록이 캐시기억장치에 저장되어 있지 않는 경우
원하는 데이터가 없을 경우 즉, 미스가 일어나면 캐시기억장치의 일부분을 주기억장치로 보내고, 주기억장치의 데이터를 캐시기억장치로 가져와야 하는 등의 데이터 이동이 발생한다.
→ 그러므로 캐시 히트율을 높여야 하는데, 캐시 히트율이 높다는 것은 맵핑(사상, mapping)이 잘 되었다는 의미이다.
사상(맵핑)의 종류
- 직접 사상 : 중앙처리장치가 주기억장치를 참조할 때 중앙처리장치로부터 나온 주소를 Tag 필드와 Index 필드로 나눔
- 캐시기억장치에서 중앙처리장치 주소의 Index 필드와 같은 Index를 찾아 Tag까지 같다면 그 주소의 데이터를 가져간다.
- 만약 같은 Index에 데이터가 없거나, 또는 Index는 같으나 Tag가 다르면 주기억장치에서 데이터를 찾아 가져 오는 방식
- 연관 사상 : 캐시기억장치에 데이터 블록을 저장할 때, 데이터와 그 데이터의 주기억장치 주소도 함께 저장하는 방식
- 주기억장치의 어떤 데이터 블록도 캐시기억장치의 임의의 위치에 저장할 수 있기 때문에 직접사상방식의 단점을 일부분 보완할 수 있다.
- 단점 : 중앙처리장치주소를 캐시기억장치에서 찾을 때 최악의 경우 캐시기억장치의 모든 주소를 다 찾아야만 하는 경우가 발생한다.
- 집합-연관 사상 : 직접사상 방식과 연관사상 방식을 조합하여 만든 방식
- 캐시기억장치의 하나의 Index에 두 개 이상의 서로 다른 데이터 블록을 저장시켜서 하나의 세트(집합)를 만듦
- 캐시기억장치에서 중앙처리장치 주소의 Index와 같은 Index를 찾음
→ 그 Index에 저장되어 있는 서로 다른 Tag를 갖는 데이터들 중에서 연관사상 방식에서와 같은 방식으로 찾고자 하는 데이터의 Tag와 같은 Tag를 갖는 데이터를 찾아 가져옴
- 직접이나 연관 사상방식에 비해 효율적으로 데이터를 찾을 수 있어, 히트율(적중률)을 높일 수 있음
주 기억장치
주기억장치는 컴퓨터 시스템에서의 필수적인 하드웨어 요소 (RAM = Random Access Memory)
보조 기억장치
당장 필요하지는 않지만 필요할 때에 주기억장치로 옮겨 사용할 수 있는 자료(데이터, 프로그램)를 저장하는 장치