이번 문서의 목표: 앞으로 나올 캐시 성능, CPU 스케줄링, 페이지 교체, 파이프라인 속도 향상 계산에서 공통으로 쓰이는 평균·가중평균·비율·처리시간 지표·Amdahl의 법칙·로그 계산을 숫자로 직접 검산할 수 있다.
왜 이 편이 먼저 필요한가
통합컴퓨터시스템의 계산 문항은 대부분 “이미 알고 있는 값 몇 개를 공식에 대입해서 결과를 구하는” 형태다. 그런데 실전에서 틀리는 이유는 공식을 몰라서가 아니라, 어떤 값을 어디에 넣어야 하는지, 가중치를 반영해야 하는지 아닌지를 헷갈리기 때문인 경우가 많다.
쉽게 말하면: 이 편은 계산기 사용법이 아니라 “숫자를 공식의 어느 자리에 넣을지 판단하는 감각”을 만드는 편이다.
평균과 가중평균
평균(mean)은 여러 값을 대표하는 하나의 값을 구할 때 쓴다. 그런데 컴퓨터 시스템 성능 계산에서는 단순 평균이 아니라 가중평균(weighted average)을 써야 하는 경우가 많다. 각 항목이 전체에서 차지하는 비중(가중치, weight)이 다르기 때문이다.
- (엑스바, x bar): 가중평균 결과값
- (시그마, sigma): 뒤에 오는 항목을 전부 더하라는 기호
- : 번째 항목의 가중치
- : 번째 항목의 값
예시: 캐시 적중률(hit rate)이 90퍼센트인 요청이 전체 접근의 80퍼센트를 차지하고, 적중률 60퍼센트인 요청이 나머지 20퍼센트를 차지한다고 하자. 이때 전체 평균 적중률은 단순히 (90+60)/2 = 75퍼센트가 아니다.
이고 이므로, (퍼센트)다.
자주 틀리는 점: 비중을 무시하고 단순 산술평균(75퍼센트)으로 계산해버리는 실수가 매우 흔하다. 문제에 “차지하는 비율”이라는 표현이 나오면 반드시 가중평균을 의심해야 한다.
비율과 퍼센트 — 미스율과 적중률의 관계
캐시나 페이지 교체 문제에서는 적중률(hit rate)과 실패율(miss rate, 미스율)이 항상 짝으로 등장한다. 이 둘은 서로를 보완하는 비율이다.
예시: 적중률이 95퍼센트(0.95)라면 미스율은 , 즉 5퍼센트다. 이후 09~10편의 캐시 평균 접근시간 계산에서 이 관계를 계속 쓰게 되므로 지금 확실히 익혀둔다.
처리시간 지표 — 대기·반환·응답시간
CPU 스케줄링 계산(14편)의 뼈대가 되는 세 가지 시간 지표를 미리 정의한다. 하나의 프로세스가 시스템에 들어와서 끝날 때까지의 시간선을 생각하면 이해하기 쉽다.
- 버스트 시간(burst time): 프로세스가 CPU를 실제로 사용하는 시간. 문제에서 미리 주어지는 값이다.
- 대기시간(waiting time): 프로세스가 준비 큐(ready queue)에서 CPU를 기다린 시간의 합.
- 반환시간(turnaround time): 프로세스가 시스템에 도착한 시점부터 실행을 완전히 마칠 때까지 걸린 전체 시간.
- 응답시간(response time): 프로세스가 도착한 시점부터 CPU를 처음 할당받기까지 걸린 시간.
각 기호의 뜻은 다음과 같다.
- 완료 시각: 프로세스의 실행이 끝난 시점
- 도착 시각: 프로세스가 준비 큐에 들어온 시점
- 버스트 시간: 앞서 정의한 CPU 실제 사용 시간
작은 예시: 프로세스 P1이 시각 0에 도착해 버스트 시간 5가 필요하고, 아무 대기 없이 곧바로 실행되어 시각 5에 끝났다고 하자.
이 프로세스는 대기 없이 바로 실행되었으므로 대기시간이 0으로 계산된다. 만약 P1이 시각 2에 도착했는데 다른 프로세스 때문에 시각 4부터 실행을 시작했다면, 응답시간은 가 된다.
쉽게 말하면: 반환시간은 “손님이 가게에 들어와서 나갈 때까지 걸린 총 시간”, 대기시간은 그중 “줄 서서 기다린 시간”, 응답시간은 “줄을 서다가 처음 주문을 받아준 순간까지 걸린 시간”이다.
이 세 지표를 정확히 구분하지 못하면 14편의 Gantt 차트 계산에서 값을 엉뚱한 자리에 넣게 되므로, 지금 확실히 구분해 둔다.
처리량과 이용률
- 처리량(throughput): 단위 시간당 완료된 작업의 개수.
- 이용률(utilization): 특정 자원(CPU 등)이 전체 시간 중 실제로 일한 시간의 비율.
예시: 전체 관찰 시간이 20초이고 그중 CPU가 16초 동안 일했다면, 이용률은 (퍼센트)이다.
Amdahl의 법칙 — 일부만 빨라졌을 때 전체는 얼마나 빨라지는가
Amdahl의 법칙(Amdahl’s Law)은 시스템의 일부만 개선했을 때 전체 성능이 얼마나 향상되는지를 계산하는 도구다. 파이프라인·병렬 처리(07편, 19편)에서 “일부 구간만 빨라졌을 때 전체 속도 향상은 왜 기대만큼 크지 않은가”를 설명할 때 이 법칙을 쓴다.
- : 전체 시스템의 속도 향상 비율(speedup)
- : 개선 가능한 부분이 전체에서 차지하는 비율(0에서 1 사이)
- : 그 부분만 놓고 봤을 때의 속도 향상 비율
- : 개선할 수 없는, 즉 그대로 남는 부분의 비율
예시: 어떤 프로그램에서 전체 실행시간의 60퍼센트()를 차지하는 부분을 4배() 빠르게 만들 수 있다고 하자.
분모를 먼저 계산하면 이고 이므로, 분모는 다.
결과 해석: 개선한 부분만 보면 4배나 빨라졌는데도, 전체 시스템은 약 1.82배밖에 빨라지지 않는다. 이는 개선되지 않은 40퍼센트가 병목(bottleneck)으로 남아 전체 향상 폭을 제한하기 때문이다. “일부만 아무리 빨라져도 개선하지 않은 부분이 발목을 잡는다”는 것이 이 법칙의 핵심 메시지다.
자주 틀리는 점: 에 “몇 배 빨라졌는지”가 아니라 “줄어든 시간”을 넣는 실수가 많다. 는 반드시 배수(예: 4배)여야 하며, 시간 감소량(예: 3초 단축)을 그대로 대입하면 안 된다.
로그와 지수 — 주소·용량 계산의 기초
메모리 주소 지정, 캐시 인덱스·태그 비트 계산(10편), 페이지 번호 계산(17편)에서는 “몇 비트가 필요한가”를 구하는 문제가 반복해서 나온다. 이때 필요한 도구가 의 거듭제곱과 로그다.
- : 필요한 비트 수
- : 표현해야 하는 전체 경우의 수(예: 주소의 개수)
- (로그 밑이 2): “2를 몇 번 곱해야 이 되는가”를 구하는 연산
예시: 어떤 메모리가 개()의 서로 다른 주소를 가진다면, 이 주소를 표현하는 데 필요한 비트 수는 다음과 같다.
즉 20비트짜리 주소 버스가 있으면 이 메모리의 모든 위치를 하나씩 가리킬 수 있다. 반대로 “주소 비트가 개면 표현 가능한 주소 개수는 개”라는 역방향 계산도 함께 기억해 둔다.
예시: 주소 비트가 16비트라면 표현 가능한 주소 개수는 개다.
핵심 정리
- 비중이 다른 값을 합칠 때는 단순평균이 아니라 가중평균을 쓴다.
- 적중률과 미스율은 합이 1(100퍼센트)이 되는 보완 관계다.
- 반환시간은 완료 시각에서 도착 시각을 뺀 값, 대기시간은 반환시간에서 버스트 시간을 뺀 값, 응답시간은 도착부터 첫 CPU 할당까지의 시간이다.
- Amdahl의 법칙은 일부 구간만 개선했을 때 전체 속도 향상이 병목 구간에 의해 제한된다는 것을 계산으로 보여준다.
- 비트 수와 표현 가능한 경우의 수는 과 으로 서로 변환한다.