스레드 5

PintOS Project 2 - User Program (8) System Call(정글사관학교 71일차 TIL) - 프로세스 관련 system call 구현

대망의 마지막 시스템 콜 파트.. 하지만 구현이 전부가 아니다. 구현 100점 하면 뭐하나. 이해 못하면 말짱 꽝이다. 어차피 정답은 검색하면 다 나온다. 내가 해야 할 것은 이게 왜 맞고 틀린지, 뭐가 좋고 안 좋은지, 대체 이 흐름이 어떻게 진행되고 있는 건지를 이해하는 것. 근-본을 이해하지 못하면 백날 구현해봤자 쓸데없다. 면접 가서 "구현 다했습니다!"라고 하면 "와..구현을 다 하셨다니 대단해요!"라고 할 줄 아나. "그래서 뭘 이해했죠? 뭘 배웠죠? 그걸 왜 썼죠? 왜 쓰면 안되죠? 더 나은 방법은 없나요? 예를 들면 이런 상황에서는 그걸 쓸 수 있나요?" 이런 거 물어본다. 구글링하다 보게 된 면접 후기 글에서 이런 말이 있더라. 예를 들어, Deadlock 해결방법에 대한 질문에 프로세스..

정글사관학교 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(임계 구역)이라고 하며, 하나의 스레드가 여기에 들어와 작업하고 있으면 다른 애들은 바깥에서 줄 서서 기다리고 있어야 한다. 이를 해결하..

운영체제 (3) - 프로세스, 스레드 (정글사관학교 55일차 TIL)

동기식 입출력 / 비동기식 입출력 프로세스가 입출력 요청 → 입출력 처리를 운영체제가 하니 사용자가 운체한테 요청. 동기식 입출력: I/O 요청 후 입출력 작업 완료된 후에 제어가 사용자 프로그램에게 넘어감. 구현 1 I/O가 끝날 때까지 CPU 낭비 매시점 하나의 I/O만 일어날 수 있음. 구현 2 I/O가 완료될 떄까지 해당 프로그램에게서 CPU 뺏음. I/O 처리 기다리는 줄에 그 프로그램을 줄세움 ready 상태인 다른 프로그램(프로세스)에게 CPU를 준다 (이것도 동기식이라는 거 주의!) 현재 수업에서 얘기하고 있는 입출력 방식은 동기식 - 구현 2! (비동기식이 아님!) 비동기식 입출력: I/O 가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에게 즉시 넘어감. ⇒ 두..