Computer Science/OS
-
Pintos Project #2 : Alarm Clock의 개선Computer Science/OS 2020. 5. 29. 15:01
1. 프로젝트 개요 pintos 커널의 timer_sleep()함수를 개선한다. 2. 문제의 정의 devices/timer.c에 정의되어 있는 timer_sleep()함수는 기능적으로는 작동하지만, 현재 busy-waiting방식으로 구현되어 있다. Busy-waiting방식은 cpu 자원의 낭비를 초래한다. 3. 문제의 분석 timer_sleep()함수는 현재의 thread를 ticks 시간동안 잠재우는 함수이다. 기존의 timer_sleep()함수는 다음과 같다. while문을 살펴보면, scheduling에 의해 자신의 순서가 될 때마다 이 while문이 실행되고 timer_elapsed(start)를 호출한다. Timer_elapsed()함수는 start로부터 tick이 얼마나 경과하였는지 ret..
-
Pintos Project #1 : Pintos 환경 구축 (3/3)Computer Science/OS 2020. 5. 29. 14:57
3-2. 자료구조 분석 1. Thread의 tcb의 구조 1) Tid_t tid : thread의 고유한 id이다. Allocate_tid()함수에 의해 생성된다. 2) Enum thread_status status : thread의 상태를 나타낸다. 번호 이름 설명 1 THREAD_RUNNING thread가 run상태임을 나타내고, 한 시점에 cpu를 가지는 thread, 즉 run하는 thread는 1개이다. 2 THREAD_READY run인 thread가 interrupt로 인해 ready상태가 됨을 나타낸다. 또는 새로 만들어진 thread가 바로 실행(run)되지 않고, ready상태가 됨을 나타낸다. 이 상태의 thread는 ready queue에서 run하기를 기다린다. 본격적으로 Sch..
-
Pintos Project #1 : Pintos 환경 구축 (2/3)Computer Science/OS 2020. 5. 29. 14:56
12. thread_yield() 1) thread_yield() : thread switching에 의해 실행되는 첫 번째 경우의 함수이다. 이 함수는 run하던 thread가 time slice expired로 인해 cpu를 빼앗겨야 하는 경우에 실행되는 함수이다. 2) If구문을 보면, 현재 thread가 idle thread가 아니라면, 현재 thread를 ready queue에 넣고, 상태를 ready상태로 바꾼다. 3) Schedule() : shcedule함수로 인해 shceduling을 한다. 이 함수를 기준으로 run하는 thread와 다음 run할 thread의 context가 바뀐다. 13. thread_block() 1) thread_block() : thread switching에..
-
Pintos Project #1 : Pintos 환경 구축 (1/3)Computer Science/OS 2020. 5. 29. 14:43
1. 개요 Pintos의 소스 코드 분석, 전체적인 구조 이해하는 것 2. 내용 Pintos 운영체제가 부팅을 시작하여, alarm-multiple 테스트를 수행하기까지의 과정에 대해 다음을 수행한다. 함수 분석 자료구조 분석 프로그램 실행 경로 분석 배포한 가상 머신 상의 ~/pintos/src/threads 디렉토리 내의 소스 코드를 대상으로 분석한다. 대상 소스 코드 중 조건부 컴파일을 위한 매크로 USERPROG와 FILESYS 해당 부분은 분석 대상에서 제외한다. 프로그램 수행 경로를 따라 주요 함수를 분석하고, 관련 주요 자료구조에 대한 분석을 포함하여야 한다. 3. 순서 함수의 분석 자료구조의 분석 프로그램 실행 경로의 분석 3-1. 함수의 분석 1. thread_init() 1) threa..