[OS] 멀티프로그래밍과 시스템의 성능

parkheeddong·2023년 3월 22일
0

Operating System

목록 보기
13/63

1. MultiProgramming

1) 하나 이상의 프로세서(cpu)에서, 두 개 이상의 프로세스가 존재하는 시스템

  • CPU의 개수가 1개이던, 2개이던 상관없이 여러 개의 프로세스가 같이 운용되고 있는 환경을 '멀티프로그래밍' 시스템 이라고 한다.
  • 컴퓨터의 중요한 자원인 CPU의 활용도를 높이기 위해서 스케줄링을 하게 된다.

2) 컴퓨터 시스템에서 가장 중요한 자원 두가지는 'CPU' 와 메모리이다.

  • 메모리는 공간을 분할해서 프로세스별 공간을 나누어주는 'Space Sharing' 자원이다.
  • CPU는 CPU의 사용 시간을 나누어서 프로세스별로 할당해 주는 'Time Sharing' 자원이다. 그리고 이 CPU의 시간 분할을 도와주는 일을 '프로세스 스케줄링'이라고 한다.

2. Process Scheduling의 목적

  • 프로세스 스케줄링은 시스템의 성능을 높여준다.
  • 프로세스별 순서에 따라서 컴퓨터 시스템의 전체적인 성능이 높아질 수 있다. 컴퓨터 시스템의 전체적 성능뿐 아니라, "각각의 프로세스 개개인 별"로도 케어해야 한다. 전체적 성능만 생각하면 한 프로세스는 계속 대기해야만 하므로, 그런 일이 발생하지 않도록 프로세스별 입장에서도 케어한다.

3. 시스템의 성능(System Performance)은 무엇인가?

= Performance Index = Performance Measure
시스템의 성능을 측정하는 'Performance Index(Measure)'(지표)는 다음과 같이 다양하다.

1) Mean Response Time(응답시간) ✔️중요✔️

  • 'Response Time'이란 어떠한 프로세스가 응답을 하는데까지 걸리는 시간
  • 사용자가 요청을 하는 시점(명령 submission)부터 해당 요청으로 인한 첫번째 응답(first request)이 나올 때까지 걸리는 시간
    (ex. command line에 명령어를 입력하거나 아이콘을 클릭했을 떄 명령 결과가 화면으로 나오거나/음성으로 나올 때까지의 시간)
  • 멀티프로그래밍 시스템의 경우 프로세스마다 응답시간이 다를 것이기 때문에, 시스템의 성능은 평균 응답시간으로 정한다.
  • interactive 시스템에서 많이 사용되는 성능 지표이다. 사람이 프로세스가 끝날 때까지 직접 기다리는, input이 들어가면 output이 나오고 또 input이 들어가면 output이 나오는 interactive 시스템에서 중요하다.

2) Throughput (처리량) ✔️중요✔️

  • 단위 시간당 종료하고 나가는 프로세스들의 개수
  • 단위 시간이 1초이던, 하루이던(우리가 단위 시간을 결정하면 됨) 그 시간에 프로세스가 몇 개나 종료되고 나가는지에 대한 것
  • batch system에서 많이 사용되는 성능 지표. batch system은 사용자들이 컴퓨터 시스템에 어떤 명령을 내린 후, 사용자가 기다리고 있는것이 아니라 '가버리는' 시스템. 즉 사용자가 일정 시간이 지나면 다시 돌아와서 자신의 프로그램이 끝났는지 보는 시스템이다. 80년대 많이 사용됐지만 현재는 거의 사용되지 않고 있다. 이러한 경우는 사람이 앉아서 계속 기다리는 것이 아니기 때문에, batch system에선 응답시간이 아니라 처리량이 중요하다.

3) Resource Utilization (자원의 활용도) ✔️중요✔️

  • cpu 활용도, 하드디스크 활용도, 메모리 활용도 등
  • 주어진 시간 구간 동안 특정 리소스가 얼마나 바쁘게 사용되었는가에 대한 비율이다. 시간 T동안 자원 R이 사용된 시간들의 합을 t라고 하면, t/T 가 바로 자원의 활용도(u)이다.
  • 자원의 활용도 역시 batch system에서 많이 사용되는 성능 지표이다.

✅ 모든 성능 지표가 다 좋은 스케줄링 기법이 있을까? = 아니다!

Response Time과 Utilization은 Conflict되는 부분이 있다. 활용도가 높아지면 응답시간이 늦어지고 응답시간 지표가 좋으면 활용도가 낮아진다.
컴퓨터자원이 사용되지 않고 있으면 응답시간이 매우 빨라진다. 그렇지만 컴퓨터자원의 활용도가 높아서 사용되고 있으면 응답시간은 느려진다.

4) Turnaround Time

  • 어떤 프로세스의 응답이 처음 실행되는 시간부터 실행이 끝낼때까지의 시간
  • 명령어가 처음 submission 되는 시점부터 명령어의 실행이 다 끝날때까지의 시간
    (!= Response Time : 명령어가 처음 submission 되는 시점부터 첫 번재 아웃풋, 첫 번째 응답이 나올 때까지의 시간)
  • 일반적으로 Turnaround Time은 연산량이 많은 경우 매우 길 수도 있다.

5) Waiting Time (대기시간)

어떤 프로세스가 ready que에서 기다리고 있는 시간들의 합이다. 프로세스가 탄생한 이후, CPU를 사용하기 위해 기다리는 시간들의 합.

6) Fairness (공평성)

그 스케줄링 기법이 각각의 프로세스를 공평하게 스케줄링하고 있는지에 대한 것이다. 어떤 프로세스에게는 자원을 너무 적게 주면 공평하지 않고, 모든 프로세스에게 균일하게 주면 공평한 것이다.

7) Predictability(예측 가능성)

응답시간 기준의 예측 가능성: 내가 어떠한 프로그램을 실행시켰을 때 응답시간이 1초가 걸렸었는데, 다음 날은 1시간 걸리고, 다음 날은 10시간 걸리는 경우. = 너무 편차가 큰 경우 응답시간을 예측하기 어렵다. 반면, 항상 1초, 0.9초, 1.1초 정도 나오는 경우 응답시간의 예측 가능성이 좋은 것이다. 예측가능성은 일반적으로 분산으로 계산된다.

시스템마다 추구하는 성능 지표가 다를 수 있다.

0개의 댓글