[혼공컴운] 혼공단 11기 - 4주차 🌟미션수행만🤭

shyn26·2024년 2월 4일
0

혼공학습단

목록 보기
10/20

나는 말을 잘 듣는 혼공족인건가...?ㅋㅋ
족장님이 그만 하라고 하셔서 그만했다..(>변명)

역시 족장님은.... 선견지명이 크으으으....👍

컴퓨터 구조는 어찌저찌 했는데, 급 운영체제가 나온다니 갑자기 쓰러졌다(>사실 안쓰러짐🙄)
나는 여기까지인가...? 싶었지만, 페이스북에 달린 족장님의 글을 이제야 보게 되었다. 계속해서 지금이 2차 1주차라고 생각하라고 마인드 셋 시켜주시고 응원해주시는 족장님과 계속해서 공부하고 있는 스터디원 사람들을 보면 정말... 사람이 맞는건가? 인공지능이, 자동화시켜놓고 사람이라고 나를 속이고 있는 것인가 할 정도로 다들 열심히 하고 있었다. (>족장님이 사람이시라면 당근🥕을 흔들어주세요!🐰) 여기서 "나도 질 수 없지! 정리는 못하더라도 읽고 미션수행만이라도 하자! 다시 복습할 때, 다시 혼공단을 모집하기 전까지만 정리하자! 다음에는 꼭 다른책으로 하자!" 다짐하고 미션을 수행하고자 한다.
(>길게 뭐라 말했지만 대충 정리 어렵고 귀찮고 그냥 쉽게 공부하고 싶다는 소리ㅋㅋ)

[CH10]미션1. 304쪽 1번 풀기

Process states and transitions

프로세스는 요청에 따라 상태가 계속 전환된다.

  • new : 새롭게 생성된 process
  • ready : CPU에서의 실행을 기다리는 상태
  • running : 실행중인 process
  • waiting : I/O(사용자의 입출력)이나 scheduling에 의한 대기 상태
  • terminated : 실행을 마친 상태
  • (ready ≠ waiting), FCFS로 스케줄링 해줌

[CH11]선택미션1.

준비 큐에 A,B,C,D 순으로 삽입되었다고 가정했을 때, 선입 선처리 스케줄링 알고리즘을 적용하면 어떤 프로세스 순서대로 CPU를 할당받는지 풀어보기

  • 선입 선처리는 들어오는 순서대로 처리하는 방법이므로 들어온 순서 A→B→C→D 그대로 CPU를 할당 받는다.

[참고]

Scheduling algorithms

  • Scheduling algorithms은 크게 둘로 분류할 수 있음
    • non-preemptive (비선점형) : Process가 자원을 반납하기 전까지 다른 프로세스가 자원을 사용할 수 없음. 수행시간이 긴 프로세스가 자원을 점유하게 되면 이후 실행되어야 하는 프로세스들이 자원을 할당받지 못하는 기아 현상이 발생.

    • preemptive (선점형) : Process가 한번 실행될 때 제한된 시간만을 할당해서 사용. 프로세스의 우선순위에 따라 스케쥴링을 하게 되므로 우선순위가 낮은 프로세스는 기아 상태에 빠짐.

      → single core 기준으로 한 프로세스를 진행할 때, 자원을 중간에 뺏어서 세치기 가능하냐 (자원관점)

      non-preemptive (비선점형)preemptive (선점형)
      정해진 시간 없이 process 종료 전까지 점유일정 시간을 process에 할당해 해당 시간만 자원을 사용하고 반납
      중간에 interrupt가 일어나지 않음interrupt를 통해 실행 중인 process를 교체
      종료 후 context switch 외에 추가적인 오버헤드 없음context switch 가 일정 시간마다 일어나기 때문에 오버헤드 있음
      프로세스 우선순위 고려 없음프로세스에 대한 우선순위를 고려
      FCFS, SJF, Priority SchedulingRound-Robin, Multilevel Queue Scheduling
  1. FCFS(First Come, First Served) Scheduling (non-preemptive)
    • 가장 간단하고 직관적인 스케쥴링 알고리즘으로 그 구조가 Queue와 비슷하다.
    • 먼저 도착한 프로세스를 먼저 실행하고, 프로세스가 도착한 순서대로 CPU를 할당한다.
    • 보편적으로 프로세스들의 평균 대기 시간이 길어진다는 문제가 있다.
  2. SJF(Shortest Job First) Scheduling (non-preemptive) ← ready queue에서만 보면 non임
    • 다음에 실행할 프로세스를 선택할 때 실행 시간이 가장 짧을 것으로 예상되는 프로세스를 선택하는 방식
    • ready queue에 프로세스를 새로 삽입할 때 CPU burst time이 가장 짧은 것을 다음 프로세스로 지정할 수 있도록 제일 앞에 삽입한다. → priority queue (minheap으로 구현)
      (우선예약가능 → ready queue 앞에 세워주는 거지, 뚫고 먼저 들어가지는 않는다.)
    • 이 경우 FCFS보다 평균 대기 시간이 줄어들지만 CPU burst time이 긴 프로세스의 경우 오히려 대기시간이 증가하고 심할 경우 starvation 상태가 되는 문제점이 있다.
    • 비선점형 방식뿐만 아니라 선점형 방식으로 이용되기도 한다.
  3. RR(Round-Robin) Scheduling (preemptive)
    • 각 프로세스에 차례로 일정한 시간 할당량(time quantum) 동안 CPU 자원을 차지할 수 있도록 함
    • time quantum 시간이 길다면 FCFS와 같은 형태로 작동하므로 RR 스케줄링을 사용하는 의미가 줄어들고, 시간이 너무 짧다면 너무 많은 Overhead가 생기기 때문에 좋지 않다.
    • 따라서 적절한 time quantum 길이를 찾는 것이 중요함.

example.
**- P1 : 4, P2 : 2, P3 : 3 (resource) ( 예 )P1이 끝나는데 4 time이 필요하다)

  • time quantum = 2 (RR)
  • ready queue : [P3, P1, P2] (FCFS, RR에 한해서, SJF는 위에 프로세싱 자료보고 고름)**

execution 순서

1) FCFS : [P3, P1, P2] → 돌아가는 과정 : P3,P3,P3,P1,P1,P1,P1,P2,P2 → 끝나는 순서 : P3, P1, P2

2) SJF : [P2, P3, P1] → 돌아가는 과정 : P2,P2,P3,P3,P3,P1,P1,P1,P1 → 끝나는 순서 P3, P1, P2

3) RR : [P3, P1, P2] → 돌아가는 과정 : P3,P3,P1,P1,P2,P2,P3,P1,P1 → 끝나는 순서 P2, P3, P1

(average) waiting time (context-switching에 의한 overhead는 계산하지 않음)
(→ 평균은 프로세스 개수로 나누기)

1) FCFS : P3(0) + P1(3) + P2(3+4) = 10, (10/3)

2) SJF : P2(0) + P3(2) + P1(2+3) = 7, (7/3)

3) RR : P3(0) + P1(2) + P2(2+2) + P3(2+2) + P1(2+1) = 13, (13/3)
P3(0) + P1(2) + P2(2+2) + P3(2+2+2) + P1(2+2+2+1) = 19 * 기다린 기준으로 생각한다!!

3-1) IF TIME-QUANTUM = 3, WAITING TIME = ?
RR : [P3, P1, P2] → 돌아가는 과정 : P3,P3,P3,P1,P1,P1,P2,P2,P1
→ WAITING TIME = P3(0) + P1(3) + P2(3+3) + P1(2) = 11
→ 타임퀀텀 사이즈에 따라 대기시간이 달라지는데 조절 잘 해야 한다. 컨텍스트 스위치가 많이 일어나면 대기시간이 길어질 수 있지만, 대기시간이 달라질 수 있어서 스위치가 많이 일어난다고 해서 비례적으로 대기시간이 길어지지는 않는다.

profile
Without haste, but without rest - J.W. von Goethe

0개의 댓글