벌써 12월이다..?
어제 정글 전체 회식함.
09:02 입실
어제 회식 끝나기 전 백코치님의 조언
모든 최신 자료는 영어로 나온다. 영어로 자료를 학습할 수 있어야 한다.
(크롬 번역 기능 써도 되나요?) 범용적인 기술이니까 그 정도는 된다. 하지만 번역이 정확할 거란 보장은 없다.
언어, 프레임워크가 아니라 기초가 중요하다.
구현해야 하는 기능 이해하기
/* Sets the current thread's nice value to NICE. */
void
thread_set_nice (int nice UNUSED) {
/* TODO: Your implementation goes here */
}
/* Returns the current thread's nice value. */
int
thread_get_nice (void) {
/* TODO: Your implementation goes here */
return 0;
}
각 프로세스가 가장 최근에 받은 CPU 할당 시간을 측정
https://bruders.tistory.com/92
오래된 데이터가 미치는 영향을 지수적으로 감쇠
/* Returns 100 times the current thread's recent_cpu value. */
int
thread_get_recent_cpu (void) {
/* TODO: Your implementation goes here */
return 0;
}
시스템 로드 평균: 지난 몇 분 동안 실행할 준비가 된 평균 스레드 수 추정
(지수 가중 이동 평균)
시스템 부팅 시 0으로 초기화
이후 초당 다음 공식에 따라 업데이트
load_avg = (59/60) load_avg + (1/60) Ready_threads,
ready_threads는 업데이트 시점에서 실행 중이거나 실행할 준비가 된 스레드 수
(유휴 스레드는 제외)
/* Returns 100 times the system load average. */
/* 현재 시스템 로드 평균의 100배를 가장 가까운 정수로 반올림하여 반환합니다. */
int
thread_get_load_avg (void) {
/* TODO: Your implementation goes here */
return 0;
}
recent_cpu, load_avg는 실수
Pintos 커널에서는 부동 소수점 연산 미지원
즉, 값을 정수로 변환해야 한다.
17.14 고정소수점 수 표현
32비트 정수의 하위 14비트를 소수 비트로 지정
부호비트(1) / 소수점 앞(17) / 소수점 뒤 (14) = 32비트
정수, 실수를 (17.14)로 인코딩 하는 과정을 거쳐 정수처럼 표기함.
핀토스와 별개로 부동 소수점 빠르게 훑어보기!
소수를 V = x * 2^y 로 인코딩
표준화되지 않던 표기 방식이 IEEE(전지전자공학협회) 표준 754로 통일됨.
+는 생략할 수 있음.
e부터 지수부 시작.
소수점 없을수도 있음.
계속 구현하고 있지만 실패해서 롤백
내일 다시 달린다.