Open SeungBu opened 6 years ago
[x] Q1. p252 시계 알고리즘과 더티 페이지에서 use bit랑 dirty bit를 사용하게 되는데 bit들이 하드웨어 지원이 필요하다고 되어있는데 bit값은 프로그래밍적으로 표현해주지 않나요? 하드웨어 지원이 어떤건지 잘 모르겠습니다.
[ ] Q2. thread에서 락을 잡고 있고 I/O interrupt가 발생되게 되면 어떤식의 작동이 이루어지나요?
[ ] Q3. p.344 컨디션 변수를 사용할때 락을 잘 못 걸게 되면 signal은 보냈는데 wait부분이 락이 걸려있어서 signal을 못받는 상태가 있다고 설명 되어 있습니다. 그러면 제대로 락을 걸려면 어떤식으로 작성 해야하나요?
[ ] A1. LRU에서는 어떤 페이지가 가장 최근에 참조 됐는지를 관리하기 위해서 모든 메모리 참조 정보를 기록해야 하는데 이런 세세한 부분들까지 정보를 기록 관리하면 성능이 크게 떨어질 수 있는데 효율적으로 하기 위해 하드웨어가 필드들을 갱신하는 것으로 하였습니다. 덧붙이자면 참조될 때 use bit는 하드웨어에 의해 1로 설정되지만 0으로 바꾸는과정은 운영체제의 몫이라고 합니다.
[ ] A2. 락같은 경우는 하드웨어와 운영체제의 지원을 받아 수행하게 되는데, 우선 처음에 하드웨어적으로만 처리하여 원자적으로 락을 수행할 수 있게 하였는데 정말 운없게 인터럽트가 걸리고 CPU가 1개인 프로세스일경우 인터럽트가 발생하여 다른 쓰레드로 넘어갔는데 다른 쓰레드는 계속 spin만을 돌게 되다가 다시 넘어와서 lock을 수행하고 끝내는 식이됩니다 그래서 운영체제의 지원을 받도록 하였는데 linux에서는 2단계 락이라고 해서 다른 쓰레드로 넘어갔을 경우 lock을 받지 못한 쓰레드는 락이 곧 해제될거같으면 spin을 돌다가 획득하지 못하면 2단계인 잠자는 식으로 작동합니다 i/o인터럽트가 발생하면 방식마다 다르겠지만 바로 조치하거나 해서 한 뒤 다른 쓰레드로 스케줄링이 일어나서 위에 쓴 글 처럼 작동할것같습니다!
[ ] A3. p344의 아래쪽 관련 부분의 말씀이시라면 제가 뒷부분을 읽긴했는데 제대로 이해하고있는 상태는 아니지만 아는선에서 말씀드리겠습니당 ㅠ_ㅠ wait상태에서는 자신이 원하는 상황으로 변화가 이뤄지면 깨어나는 식인데, 즉 변화가 이뤄지고 signal을 받는데 여기서 if(done==0)이 완료되고 wait하기전에 인터럽트가 발생하여 다른 쓰레드로 실행이 넘어가고 다른 시그널(자식)이 exit함수에서 done을 1로 바꾸고 시그널을 보냈는데 아직 처음 쓰레드(부모)가 wait하기 전이라 signal을 받을 쓰레드가없어 무효가 됩니다. 이상태에서 다시 if(done==0)을하고 잠든 쓰레드(부모)가 실행되어 wait를 호출하였는데 이미 자식은 signal을 보내고 끝난 상태라 wait에서 깨어나질 못하는 상황이오게되는겁니다 이 때문에 하는 방법이 if문 대신 while을 사용하여 조건을 다시한번 검사는 방법을 사용하는게 좋습니다 쓰레드가 인터럽트 등 여러 상황때문에 거짓된 시그널로 깨운 경우가 있기때문에 if문 대신 while문을 사용하는 방법이있습니다 상황마다 해법이 다 다르다고는 하지만 이 경우에서는 while문으로 해주는 방식이 좋을거같습니당!!
[ ] Q1. p249 지역성이 없는 워크로드에서 최적 알고리즘이 왜 저런 곡선형 그래프가 나왔는지 궁금합니다.
[ ] Q2. p294 void 포인터 타입에 대한 얘기가 나왔는데, 어떤 데이터 타입도 반환할 수 있다고 합니다. 검색해 보니 주로 동적 메모리 할당할 때 쓰인다고 나와있는데, 이 경우엔 어떻게 사용되는 것인지 궁금합니다. (사용 방법 예)
[ ] Q3. p299 컨디션 변수에 설명된 코드들이 있는데, 살펴보게 되면 둘 다 같은 lcok 변수를 통해서 Pthread_mutex_lock(&lock)을 통해 락을 시도하는 서로 다른 쓰레드인데, Pthread_cond_wait 함수를 통해 대기 중에 들어가면 다른 쓰레드에서 lock을 획득할 수 있게 해주는 것인가요?
스터디 자료 : Operating System Three Easy Pieces , xv6 Operating System 시간 : 01/17 ( PM 4:00 ~ PM 6:00 ) 장소 : 미디어센터 508 호
1. 스터디및 발표자료 작성
2. 현재 스터디 질문 제출
발표자 이외 인원은 01월 16 일까지 22장 ~ 31장 에 대하여 개인당 질문 3개를 만들어 issue 에 comment 로 제출
issue에 질문 comment 작성