process synchronization 3

정글사관학교 PintOS Project 1-WIL (정글사관학교 60일차 TIL)

1. 1주차 요약 정리 드디어 첫 주가 끝났다..첫 주차를 마치고서 정리하는 시간을 가져보자. 이 부분은 링크로 대신한다. 1. 시작 전 개념 정리 운영체제란 무엇인가? 프로세스 스레드 2. 과제 start 1.1 Alarm Clock 1.2 Priority Scheduling 1.2 (2) Priority Scheduling - Synchronization 1.2 (3) Priority Schedulig - Donation 2. Q&A 세션 정리 Q. void thread_yield(void) 함수에서 do_schedule() 함수를 호출하기 전에 intr_disable로 인터럽트를 off하는 이유 A. Interrupt를 disable하는 이유는 CPU의 제어권을 interrput가 다시 enable..

PintOS Project 1.2(3) - Priority Inversion (정글사관학교 59일차 TIL)

1. 과제 개요: Priority Inversion Problem 해결 이번 과제에서는 Priority Inversion Problem을 해결하는 것이 목표이며, 이를 위해 3가지 도네이션 기능을 구현해야 한다. 이를 위해 먼저 priority inversion problem이 무엇인지부터 이해하고 넘어가보자. Priority Inversion Problem: 우선순위가 높은 스레드가 우선순위가 낮은 스레드를 기다리는 현상 아래 이미지만 보면 뭔 소린가 싶을 거다. 차근차근 설명에 들어간다. 아래 이미지에서 priority가 높은 순은 주황(High, H) > 파랑(Medium, M) > 연두(Low, L)이다. 여기서 연두와 주황은 Lock A를, 파랑은 Lock B에 접근하려고 한다고 하자. 즉, 여..

PintOS Project 1.2(2) - Priority Scheduling-Synchronization(정글사관학교 58일차 TIL)

1. 과제 개요: FIFO -> Priority Scheduling 기반으로 thread가 CPU 점유하도록 구현 현재 핀토스는 semaphore를 대기하고 있는 스레드 리스트인 waiters가 FIFO로 구현되어 있다고 한다. 이게 무슨 말인지부터 이해하도록 하자. 먼저 세마포어에 대해 간단히 짚고 넘어간다. 저번 과제 1.1에서 Process synchronization에 대해 간략하게 소개했다. 동시에 서로 다른 프로세스 혹은 스레드가 공유 자원에 접근하면 충돌이 발생하기 때문에 이를 막아줘야 한다. 이 공유 데이터가 존재하는 영역을 critical section(임계 구역)이라고 하며, 하나의 스레드가 여기에 들어와 작업하고 있으면 다른 애들은 바깥에서 줄 서서 기다리고 있어야 한다. 이를 해결하..