본문 바로가기

threads

Pintos-kaist Guide - PROJECT 1: THREADS - Alarm Clock, Priority Scheduling Alarm Clock devices/timer.c에 정의된 timer_sleep()을 다시 구현합니다. 작동하는 구현이 제공되지만 busy waits, 즉 현재 시간을 확인하고 충분한 시간이 경과할 때까지 thread_yield()를 호출하는 루프에서 회전합니다. busy waits를 피하려면 다시 구현하세요. void timer_sleep (int64_t ticks); 호출 스레드의 실행을 최소한 x 타이머 틱 만큼 시간이 지날 때까지 일시 중지합니다. 시스템이 유휴 상태가 아닌 경우에는 정확히 x 틱이 지난 후에 스레드를 깨울 필요는 없습니다. 대신 적절한 시간 동안 대기한 후에 준비 큐에 해당 스레드를 넣어주면 됩니다. timer_sleep()은 초당 한 번씩 커서를 깜박이는 등 실시간으로 동작하는.. 더보기
Pintos-kaist Guide - PROJECT 1: THREADS - Introduction Project1: Threads 이번 과제에서는 최소한의 기능만 있는 스레드 시스템을 제공합니다. 여러분은 이 시스템의 기능을 확장하여 동기화 문제에 대한 이해도를 높여야 합니다. 주된 작업 디렉토리는 threads이지만, devices 디렉토리에서도 부수적인 작업이 필요합니다. 컴파일은 threads 디렉토리에서 수행해야 하며, 프로젝트 설명을 읽기 전에 동기화 관련 자료를 먼저 살펴보는 것이 좋습니다. Background Understanding Threads 첫 번째 과제는 초기 스레드 시스템 코드를 읽고 이해하는 것입니다. Pintos에는 이미 스레드 생성과 종료, 스레드 간 전환을 위한 간단한 스케줄러, 그리고 세마포어, 잠금, 조건 변수, 최적화 장벽 등의 동기화 프리미티브가 구현되어 있습니다.. 더보기
pintOS - Project 1 Thread WIL Krafton Jungle Week 7~8 Team 6 WIL alarm-single 문제: timer_sleep이 기존에 구현되어 있었으나, Busy-wait을 하는 방식으로 되어있었기 때문에 효율이 좋지 않았다. 더보기 void timer_sleep (int64_t ticks) { int64_t start = timer_ticks (); ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) 더보기 void timer_sleep (.. 더보기