본문 바로가기

thread

크래프톤 정글 week08, day66 - userprog 뜯기 계속 쉬운것만 잔디를 심다보니 최근에는 올리지 않는게 더 나을 것 같아 pintos가 끝날 동안엔 잔디심기를 안 올릴 것 같다. %rdi 주로 첫 번째 인자 전달에 사용되며, 문자열이나 배열 같은 데이터의 목적지 주소를 지정하는데 사용된다. %rsi 두 번째 인자 전달에 사용되며, 문자열이나 배열같은 데이터의 원본 주소를 지정하는데 사용된다. %rdx 세 번째 인자 전달에 사용되며, 입출력 관련 시스템 호출에서 파일 디스크립터나 버퍼의 크기 등을 전달하는데에도 활용된다. %rcx 네 번째 인자 전달에 사용되며, 반복(loop) 카운트를 관리하는데에 사용될 수 있다. 또한 몇 명령어에서는 반복 횟수를 지정하는데 사용된다. %r8 다섯 번째 인자 전달에 사용되며, x86-64 아키텍쳐에서 새롭게 추가된 레지.. 더보기
pintOS - project1(Thread) thread.c - mlfqs thread.c - mlfqs 더보기 // 스레드의 고급 우선순위를 계산 int calculate_advanced_priority(struct thread* t){ // priority = PRI_MAX - (recent_cpu / 4) - (nice * 2) 공식 이용 int advanced_priority; advanced_priority = PRI_MAX - ROUND_TO_INT(DIV_INT(t->recent_cpu, 4)) - t->nice_value * 2; return advanced_priority; } 더보기 // 현재 스레드의 nice값 설정 void thread_set_nice (int ni.. 더보기
pintOS - project1(Thread) thread.c thread.c 더보기 // advanced scheduling 용도 //17.14 형식의 고정소수점 표현 #define P 17 #define Q 14 #define F (1 = 0 ? ((x + F/2)/F) : ((x - F/2)/F)) //고정소수점 기본 연산 #define ADD_FIXED(x,y) (x) + (y) #define SUB_FIXED(x,y) (x) - (y) #define MUL_FIXED(x,y) ((int64_t)(x)) * (y) / (F) #define DIV_FIXED(x,y) ((int64_t)(x)) * (F) / (y) #define ADD_INT(x, n) (x) + (n) * (F) #define SUB_INT(x, n) (x) - (n) * .. 더보기