거의 3주 만에 올라오는 Milestone이군요. ;) 중간 중간에 올릴 수도 있었는데... 일정에 좀 쫓기다 보니 마음이 급해서 그러질 못했네요. ;)

image

<멀티 레벨 큐 스케줄러가 도입된 화면> 

그 동안 MINT64 OS에 많은 변화가 있었습니다. 그 중에서 첫 번째는 라운드 로빈 스케줄러에서 벗어나 멀티 레벨 큐가 도입된 것입니다. 큐는 0~5까지 총 5개의 레벨로 구분되고, 우선 순위에 따라 적당히 레벨을 설정해 주면 스케줄러가 레벨에 따라 회수를 달리하여 열심히 스케줄링 해줍니다. 위의 스크린샷은 현재 수행 중인 태스크의 우선 순위를 변경한 후, 프로세서 사용률을 출력한 화면입니다. 태스크를 Sleep 없이 계속 실행했더니 사용률이 98%까지 올라갔군요. ㅠㅠ

image

<동기화 수행 전, 숫자의 순서가 일정치 않으며 출력된 카운터의 수가 15개가 안됨>

두 번째는 동기화 처리를 위해 뮤텍스(Mutex)가 추가된 것입니다. 동기화 처리에서 빠지지 않는 것이 두 태스크 간에 변수 하나를 공유하면서 덧셈이나 값을 출력하는 예제인데, OS 책을 몇 권 보신 분은 이제 지겨운 예제일 것입니다. 저도 처음에는 왜 이런 단순한 예제를 가지고 설명하는 것일까 하고 생각했습니다만, 반대 입장이 되어 보니 이제서야 알겠더군요. ㅡ_ㅡa... 그것만큼 설명하기 쉽고 간단한 예제가 없더라구요. ^^a... 그래서 결국 태스크 3개가 하나의 변수를 1씩 증가시키면서 5번씩 메시지를 출력하여 1부터 15까지를 출력하는 예제를 작성했습니다. ㅡ_ㅡa...

동기화를 하지 않으면 당연히 위 처럼 제대로 출력이 안되며... 뮤텍스를 이용하면 아래처럼 예쁘게 출력됩니다. 이제 조금만 더 하면, 어느 정도 실행 테스트 가능한 버전을 공개할 수 있겠군요. ;)

image

 <동기화 수행 후, 숫자의 순서가 1씩 증가하며 총 15개의 메시지가 출력됨>

아유~ 이제 이번 주는 스레드에 대한 내용을 정리해야 하는데... 벌써부터 머리가 아프네요. ㅠㅠ 어쨌거나 열심히 해야겠습니다. 호환, 마마보다 무서운 것이 일정이 밀리는 일이니까요. ;)

그럼 다들 좋은 밤 되세요 ;)

+ Recent posts