그냥 개발 및 잡담/OS 개발
[OS] Pintos - BusyWaiting 해제
[OS] Pintos - BusyWaiting 해제
2020.01.21Pintos를 처음 설치하게 되면 현재 스레드가 devices/timer.c의 timer_sleep() 함수를 호출하면 지정 Tick동안 While문이 계속해서 thread_yield()를 호출하면서 CPU를 점유하지 않는 모습을 보여준다. void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) < ticks) thread_yield (); } 이정도의 소스는 다들 이해 할수 있다고 생각하기때문에 더욱 자세한 설명은 생략하도록 하겠다. 현재 스레드가 CPU를 점유 하지 않기 위해서 CPU를 점유해야하는 모순된 모습을 보여..
[OS] Busy Waiting 정의
[OS] Busy Waiting 정의
2020.01.19Busy Waiting 이란 무엇일까? 바쁜대기라고 불리움. OS에서는 원하는 자원을 얻기 위해 기다리는 것이 아니라 권한을 얻을 때까지 확인하는 것을 의미한다. CPU의 자원을 쓸데 없이 낭비하기 때문에 좋지 않은 쓰레드 동기화 방식이다. 쓰레드의 동기화를 위해서 Busy Waiting Method를 사용할 것이 아닌, 뮤텍스 세마포어(Mutual Exclusion) 또는 Monitor를 사용해야 한다고 알려져 있다. 뮤텍스 세마포어(Mutual Exclusion) 또는 Monitor 방법의 경우 CPU가 계속해서 쓸데없이 무한 루프를 돌면서 확인하는게 아닌, 어떤 쓰레드가 공유 자원을 획득한 경우 다른 쓰레드는 그 쓰레드는 공유 자원을 모두 사용할 때 까지 기다린다. 또한, 쓰레드가 공유자원을 모두 ..
[OS] Pintos 설치하기
[OS] Pintos 설치하기
2020.01.16필자의 환경조건 ) Ubuntu 14.04 x86버전. 필자만 잘 따라하면 좋은 결과를 얻을 수 있을 것이다. make 부분에서 오류가 나지 않으려면 gcc를 제대로 설치해야한다. $ sudo apt-get install g++ xorg-dev ncurses-dev vim $ sudo apt-get install gcc-4.4 $ sudo mv /usr/bin/gcc-4.4 /usr/bin/gcc 위 세가지 소스코드를 확실히 실행시켜야 한다. 자신이 원하는 위치에 dir를 하나 생성하고 pintos 파일을 받아온다. $ cd / $ sudo mkdir temp $ wget http://www.stanford.edu/class/cs140/projects/pintos/pintos.tar.gz $ tar xz..