인프런 워밍업 클럽2 cs <day6>
DAY 6 과제운영체제 -섹션 3유닛 5,6,7 SJF,RR, MLFQ알고리즘 - 섹션 3 유닛 1 재귀 알고리즘재귀함수란 자기 자신을 호출하는 함수콜스택에 자리를 많이 차지하여 메모리효율에 떨어진다.콜스택 : 프로세스에서 코드,데이터, 힙,스택 으로 메모리 영역이 있다. 그 중 하나콜스택은 함수가 First In Last Out으로 처음 들어가는 함수가 나중에 나온다.재귀함수가 호출될 때마다 콜스택에 계속 쌓이는데 거기서 메모리 효율이 떨어진다.그럼에도 불구하고 사용하는 이유팩토리얼을 표현하기 편리하다.팩토리얼 : 1부터 n까지 모두 곱하여 표현하는 것 (표기 5!)5! =5*4*3*2*1 function facto(num){ if(num == 1 || num == 0){ return 1; }else{ return num * fac(num-1); //5 * fac(4)= 5 * 4 * fac(3).... } }운영체제SJFShort Job FirstFIFO 의 단점을 보안해보려고 만든 알고리즘이지만brustTime(대기시간)이 너무 긴 프로세스에게는 계속 밀려나서 불리한 알고리즘프로세스의 실행시간을 예측하기도 어렵기 때문에->실패해버린 알고리즘 ㅜㅜ RRRound Robin실행시간이 다끝날 때까지 기다리는 FIFO 과 SJF 단점을 보안해서타임 슬라이스를 부여해서 일정 시간이 지나면 프로세스가 cpu 할당하는 것을 끊고맨 뒤로 보내버리는 알고리즘RR 대기시간 = FIFO 대기시간 -> RR은 비효율적인 방식!RR은 컨텍스트 스위칭에 시간을 더 많이 사용하기 때문RR은 타임슬라이스의 크기에 따라 효율이 달라진다.타임 슬라이스⬇, 컨텍스트 스위칭⬆ -> 배보다 배꼽이 더 커진다.타임 슬라이스 ⬆, 사용자가 여러 프로세스를 같이 사용할 때 버벅임을 느낄 수있다.하지만 실제 타임슬라이스는 1ms으로 설정되어 있다~ MLFQMulti Level Feedback QueueRR 업그레이드 버전타임 슬라이스의 크기에 따라 달라지는 알고리즘 이다.CPU Bound Process :cpu 사용률과 처리량을 제일 중요 시 여긴다.I/O Bound Process : 입출력 장치 사용률과 처리량을 제일 중요 시 여긴다. 타임 슬라이스 크기 차이에 따라 i/o 사용률이 확연히 다른 걸 볼 수있지만,오른쪽 p1은 컨텍스트 스와칭⬆, 오버헤드도 ⬆p1과 같이 실행시간이 긴 애들은 오버헤드와 같은 불공평을 견뎌야한다...->MLFQ를 사용해서 불공평을 없애보자!cpu 바운드프로세스와 입출력 바운드 프로세스 각각 다른 타임 슬라이스를 부여한다.->구분해야된다.구분하는 방법!cpu 바운드 프로세스 일 경우 cpu 사용하는 프로세스가 타임슬라이스 크기를 오버해 cpu 스케줄러에 의해 강제로 cpu를 빼앗기는 상황이 생긴다.반대로 입출력 바운드 프로세스는 스스로 cpu를 반납하려는 상황이 생긴다.(cpu 사용률 적음)이 방법을 토대로 우선순위와 타임슬라이스에 따른 큐를 준비한다.👇1. 프로세스가 우선순위 1큐에 들어간다.2. 타임슬라이스 크기를 오버해 강제로 CPU를 뺏긴다-> 우선순위 2 큐로 우선순위가 낮은 큐로 이동=> 우선순위에 밀릴수록 타임 슬라이스크기가 커지고 CPU를 효율적으로 사용할 수 있는 환경이 된다.다른 알고리즘은 되게 친근했는데 MLFQ는 들을 때 예? 하면서 한 번씩 다시들었다.사실 공부했던 건데 큐와 큐사이를 이동할 수 있는 알고리즘임~ 하고 외워버리기만하고 이렇게 자세하게 보지 않았던 것 같다.