코드보고 눈치깐 새끼??


나 이거 솔직히말하면 너희도 지리라고 답지 쓰면 안될거같긴 한데


내가 그정도 배려는 못해주겠다.


이거 뭐 걍 지려버렸다 ㅆㅃ ㅋㅋㅋㅋㅋㅋ


대충 고민거리가 첫번째가 뭐였냐면


아니 씨발 c가 0으로 반환되었다는것은 모든애들이 0이라는건데 시발 뭔소리하는거야

왜 0 에 다가 대고 /2 + priority 하고있어?


걍 priority 대입해!


였다가


아 씨발 이거 생각해보니까 c가 언제나 0 이상인 값이 나온다는 보장은,

위에서 RUNNING STATE가 하나 이상은 있어야한다는 점인데??


잠깐 카운터는 프로세스 0은 제외인데? (이거는 그냥 끝값 보정만 잘 되어있는지 확인하면 바로 ㅇㅋ)


여하튼, RUNNING_STATE가 하나도 없으면 c가 -1인데?


이거 예외케이스일텐데 이것도 그냥 while문 바깥으로 튀어나가버린다 좆댔다



근데


-1인상태로 튀어나간다는게 문제가 전혀 안되는건

next가 0인상태로 튀어나간다고 보면 문제가 없고


아 씨발


프로세스 0이라는게 그냥 이짓 하라고 만든 거구나


프로세스 0이 스케쥴링을 담당하는 프로세스인건 아니고, 스케쥴링은 각각의 컨텍스트들이 타이머 인터럽트를 받아서 시스템콜을 호출해서 진행하는 체인구조가 맞지만,

결국 프로세스 0이 하는짓이 스케쥴링 담당이라는것도 맞는거구나


둘다 맞는소리였구나.



여기까지 얻은 정보랑 함께,



마지막으로 아까 맨 처음 들었던 질문



도대체 0을 2로 나누고 거기에다가 더하는 병신짓은 뭐하는거야?


했을때


아 씨발


블록된 애들한테도 프라이오리티를 더하라는 이야기를 하고있는거구나...


그걸 안하면 문제가 발생한다고 코드는 주장하고 있구나.


그게 무슨 문제일까요??


여기까지도 답을 알려줄게

내가 블록된 동안 시간은 많이 흘러서 다른애들의 카운터가 따운되었기에 나는 많이 기다렸고, 블록이 해제만 되면 나는 앵간하면 뛰쳐 나갈수 있겠구나 대기하고 있던 새끼들인데


이새끼들이 잠자고 있는동안에 다른애들이 계속해서 카운터를 초기화해버리면 그새끼들이 우선권을 싹가져가버리는거라는거임.


그러니까, 블록된애들은 아직 0이 아니라는것을 고려해주고 그녀석들도 공정하게 카운터를 프라이오리티 만큼 올려달라는

공정성의 문제였던거임.


그럼 여기서 질문.


ㅇㅋ 프라이오리티를 RUNNING_STATE 인, 즉 0이 된 애들한테만 더해주면 안된다는건 알겠음.

근데 /2 를 안하면 코드는 문제가 되고 있다고 주장하고 있는거임.



왜 나누기 2를 했을까??



이거 초등학교 5학년 수준의 문제임.


어려운건 내가 다 해놨으니까

그것만 대답해봐