Skip to Content
독학사독학사 4단계통합컴퓨터시스템02. 성능·계산 문제를 위한 기본 수학 도구

이번 문서의 목표: 앞으로 나올 캐시 성능, CPU 스케줄링, 페이지 교체, 파이프라인 속도 향상 계산에서 공통으로 쓰이는 평균·가중평균·비율·처리시간 지표·Amdahl의 법칙·로그 계산을 숫자로 직접 검산할 수 있다.

왜 이 편이 먼저 필요한가

통합컴퓨터시스템의 계산 문항은 대부분 “이미 알고 있는 값 몇 개를 공식에 대입해서 결과를 구하는” 형태다. 그런데 실전에서 틀리는 이유는 공식을 몰라서가 아니라, 어떤 값을 어디에 넣어야 하는지, 가중치를 반영해야 하는지 아닌지를 헷갈리기 때문인 경우가 많다.

쉽게 말하면: 이 편은 계산기 사용법이 아니라 “숫자를 공식의 어느 자리에 넣을지 판단하는 감각”을 만드는 편이다.

평균과 가중평균

평균(mean)은 여러 값을 대표하는 하나의 값을 구할 때 쓴다. 그런데 컴퓨터 시스템 성능 계산에서는 단순 평균이 아니라 가중평균(weighted average)을 써야 하는 경우가 많다. 각 항목이 전체에서 차지하는 비중(가중치, weight)이 다르기 때문이다.

xˉ=i=1nwixii=1nwi\bar{x} = \frac{\sum_{i=1}^{n} w_i x_i}{\sum_{i=1}^{n} w_i}
  • xˉ\bar{x} (엑스바, x bar): 가중평균 결과값
  • \sum (시그마, sigma): 뒤에 오는 항목을 전부 더하라는 기호
  • wiw_i: ii번째 항목의 가중치
  • xix_i: ii번째 항목의 값

예시: 캐시 적중률(hit rate)이 90퍼센트인 요청이 전체 접근의 80퍼센트를 차지하고, 적중률 60퍼센트인 요청이 나머지 20퍼센트를 차지한다고 하자. 이때 전체 평균 적중률은 단순히 (90+60)/2 = 75퍼센트가 아니다.

xˉ=0.8×90+0.2×60\bar{x} = 0.8 \times 90 + 0.2 \times 60

0.8×90=720.8 \times 90 = 72이고 0.2×60=120.2 \times 60 = 12이므로, xˉ=72+12=84\bar{x} = 72 + 12 = 84(퍼센트)다.

자주 틀리는 점: 비중을 무시하고 단순 산술평균(75퍼센트)으로 계산해버리는 실수가 매우 흔하다. 문제에 “차지하는 비율”이라는 표현이 나오면 반드시 가중평균을 의심해야 한다.

비율과 퍼센트 — 미스율과 적중률의 관계

캐시나 페이지 교체 문제에서는 적중률(hit rate)과 실패율(miss rate, 미스율)이 항상 짝으로 등장한다. 이 둘은 서로를 보완하는 비율이다.

미스율=1적중률\text{미스율} = 1 - \text{적중률}

예시: 적중률이 95퍼센트(0.95)라면 미스율은 10.95=0.051 - 0.95 = 0.05, 즉 5퍼센트다. 이후 09~10편의 캐시 평균 접근시간 계산에서 이 관계를 계속 쓰게 되므로 지금 확실히 익혀둔다.

처리시간 지표 — 대기·반환·응답시간

CPU 스케줄링 계산(14편)의 뼈대가 되는 세 가지 시간 지표를 미리 정의한다. 하나의 프로세스가 시스템에 들어와서 끝날 때까지의 시간선을 생각하면 이해하기 쉽다.

  • 버스트 시간(burst time): 프로세스가 CPU를 실제로 사용하는 시간. 문제에서 미리 주어지는 값이다.
  • 대기시간(waiting time): 프로세스가 준비 큐(ready queue)에서 CPU를 기다린 시간의 합.
  • 반환시간(turnaround time): 프로세스가 시스템에 도착한 시점부터 실행을 완전히 마칠 때까지 걸린 전체 시간.
  • 응답시간(response time): 프로세스가 도착한 시점부터 CPU를 처음 할당받기까지 걸린 시간.
반환시간=완료 시각도착 시각\text{반환시간} = \text{완료 시각} - \text{도착 시각} 대기시간=반환시간버스트 시간\text{대기시간} = \text{반환시간} - \text{버스트 시간}

각 기호의 뜻은 다음과 같다.

  • 완료 시각: 프로세스의 실행이 끝난 시점
  • 도착 시각: 프로세스가 준비 큐에 들어온 시점
  • 버스트 시간: 앞서 정의한 CPU 실제 사용 시간

작은 예시: 프로세스 P1이 시각 0에 도착해 버스트 시간 5가 필요하고, 아무 대기 없이 곧바로 실행되어 시각 5에 끝났다고 하자.

반환시간=50=5\text{반환시간} = 5 - 0 = 5 대기시간=55=0\text{대기시간} = 5 - 5 = 0

이 프로세스는 대기 없이 바로 실행되었으므로 대기시간이 0으로 계산된다. 만약 P1이 시각 2에 도착했는데 다른 프로세스 때문에 시각 4부터 실행을 시작했다면, 응답시간은 42=24 - 2 = 2가 된다.

쉽게 말하면: 반환시간은 “손님이 가게에 들어와서 나갈 때까지 걸린 총 시간”, 대기시간은 그중 “줄 서서 기다린 시간”, 응답시간은 “줄을 서다가 처음 주문을 받아준 순간까지 걸린 시간”이다.

이 세 지표를 정확히 구분하지 못하면 14편의 Gantt 차트 계산에서 값을 엉뚱한 자리에 넣게 되므로, 지금 확실히 구분해 둔다.

처리량과 이용률

  • 처리량(throughput): 단위 시간당 완료된 작업의 개수.
  • 이용률(utilization): 특정 자원(CPU 등)이 전체 시간 중 실제로 일한 시간의 비율.
CPU 이용률=CPU가 실제로 일한 시간전체 관찰 시간×100\text{CPU 이용률} = \frac{\text{CPU가 실제로 일한 시간}}{\text{전체 관찰 시간}} \times 100

예시: 전체 관찰 시간이 20초이고 그중 CPU가 16초 동안 일했다면, 이용률은 1620×100=80\frac{16}{20} \times 100 = 80(퍼센트)이다.

Amdahl의 법칙 — 일부만 빨라졌을 때 전체는 얼마나 빨라지는가

Amdahl의 법칙(Amdahl’s Law)은 시스템의 일부만 개선했을 때 전체 성능이 얼마나 향상되는지를 계산하는 도구다. 파이프라인·병렬 처리(07편, 19편)에서 “일부 구간만 빨라졌을 때 전체 속도 향상은 왜 기대만큼 크지 않은가”를 설명할 때 이 법칙을 쓴다.

S=1(1p)+psS = \frac{1}{(1 - p) + \dfrac{p}{s}}
  • SS: 전체 시스템의 속도 향상 비율(speedup)
  • pp: 개선 가능한 부분이 전체에서 차지하는 비율(0에서 1 사이)
  • ss: 그 부분만 놓고 봤을 때의 속도 향상 비율
  • (1p)(1-p): 개선할 수 없는, 즉 그대로 남는 부분의 비율

예시: 어떤 프로그램에서 전체 실행시간의 60퍼센트(p=0.6p = 0.6)를 차지하는 부분을 4배(s=4s = 4) 빠르게 만들 수 있다고 하자.

S=1(10.6)+0.64S = \frac{1}{(1 - 0.6) + \dfrac{0.6}{4}}

분모를 먼저 계산하면 (10.6)=0.4(1 - 0.6) = 0.4이고 0.64=0.15\dfrac{0.6}{4} = 0.15이므로, 분모는 0.4+0.15=0.550.4 + 0.15 = 0.55다.

S=10.551.818S = \frac{1}{0.55} \approx 1.818

결과 해석: 개선한 부분만 보면 4배나 빨라졌는데도, 전체 시스템은 약 1.82배밖에 빨라지지 않는다. 이는 개선되지 않은 40퍼센트가 병목(bottleneck)으로 남아 전체 향상 폭을 제한하기 때문이다. “일부만 아무리 빨라져도 개선하지 않은 부분이 발목을 잡는다”는 것이 이 법칙의 핵심 메시지다.

자주 틀리는 점: ss에 “몇 배 빨라졌는지”가 아니라 “줄어든 시간”을 넣는 실수가 많다. ss는 반드시 배수(예: 4배)여야 하며, 시간 감소량(예: 3초 단축)을 그대로 대입하면 안 된다.

로그와 지수 — 주소·용량 계산의 기초

메모리 주소 지정, 캐시 인덱스·태그 비트 계산(10편), 페이지 번호 계산(17편)에서는 “몇 비트가 필요한가”를 구하는 문제가 반복해서 나온다. 이때 필요한 도구가 22의 거듭제곱과 로그다.

n=log2Nn = \log_2 N
  • nn: 필요한 비트 수
  • NN: 표현해야 하는 전체 경우의 수(예: 주소의 개수)
  • log2\log_2 (로그 밑이 2): “2를 몇 번 곱해야 NN이 되는가”를 구하는 연산

예시: 어떤 메모리가 1,048,5761{,}048{,}576개(2202^{20})의 서로 다른 주소를 가진다면, 이 주소를 표현하는 데 필요한 비트 수는 다음과 같다.

n=log21,048,576=log2220=20n = \log_2 1{,}048{,}576 = \log_2 2^{20} = 20

즉 20비트짜리 주소 버스가 있으면 이 메모리의 모든 위치를 하나씩 가리킬 수 있다. 반대로 “주소 비트가 nn개면 표현 가능한 주소 개수는 2n2^n개”라는 역방향 계산도 함께 기억해 둔다.

N=2nN = 2^n

예시: 주소 비트가 16비트라면 표현 가능한 주소 개수는 216=65,5362^{16} = 65{,}536개다.

핵심 정리

  • 비중이 다른 값을 합칠 때는 단순평균이 아니라 가중평균을 쓴다.
  • 적중률과 미스율은 합이 1(100퍼센트)이 되는 보완 관계다.
  • 반환시간은 완료 시각에서 도착 시각을 뺀 값, 대기시간은 반환시간에서 버스트 시간을 뺀 값, 응답시간은 도착부터 첫 CPU 할당까지의 시간이다.
  • Amdahl의 법칙은 일부 구간만 개선했을 때 전체 속도 향상이 병목 구간에 의해 제한된다는 것을 계산으로 보여준다.
  • 비트 수와 표현 가능한 경우의 수는 n=log2Nn = \log_2 NN=2nN = 2^n으로 서로 변환한다.

마무리 복습

문제 14지선다
캐시 A의 적중률이 90퍼센트이며 전체 접근의 70퍼센트를 차지하고, 캐시 B의 적중률이 50퍼센트이며 나머지 30퍼센트를 차지할 때, 전체 평균 적중률은?
문제 24지선다
어떤 프로세스가 시각 3에 도착해 시각 10에 실행을 완료했고 버스트 시간이 4였다면 대기시간은?
문제 34지선다
전체 관찰 시간이 25초이고 그중 CPU가 20초 동안 일했다면 CPU 이용률은?
문제 44지선다
어떤 프로그램에서 전체 실행시간의 50퍼센트를 차지하는 부분을 2배 빠르게 만들었을 때, Amdahl의 법칙에 따른 전체 속도 향상 비율은?
문제 54지선다
Amdahl의 법칙에 대한 설명으로 옳지 않은 것은?
문제 64지선다
어떤 메모리 시스템이 2의 24제곱 개의 서로 다른 주소를 가질 때 필요한 최소 주소 비트 수는?
문제 74지선다
주소 비트가 12비트인 메모리가 표현할 수 있는 주소의 개수는?

참고 자료

Last updated on