본문 바로가기
정글

Pintos(1일차 후기) 쓰레드

by 진득한진드기 2023. 5. 28.

Pintos 1일차

 

핀토스에 드디어 입성했다.

 

핀토스를 간단하게 표현하면 이미 돌아가고 있는 작은 운영체제를 수정하면서 기능을 하나씩 추가해가는 것이다.

 

난이도는 어렵다고만 들었지 실제로 만나니까 코드의 바다에서 표류된것 같은 느낌이 든다.

 

자료는 블로깅 할 수는 없지만 처음보니까 어질어질하다....

 

첫날의 계획은 구동되고 있는 Thread ready list를 효율적으로 바꾸는 것이다.

 

먼저 실행되고 있는 running_list에서 멈춘 쓰레드를 저장해 놓는 sleep_list를 만들어

 

인터럽트로 실행을 멈췄을때 sleep_list에 넣고 시간 축이 맞아질때 running_list로 보내는것이다.


우리팀이 마주한 문제

1. 글로벌 틱의 값을 주소의 값으로 받아오려고 했는데 우리가 갱신을 하면 시간축이 뒤틀려서 예상 할 수 없는 오류를 내뿜는다...ㅋㅋㅋ ㅠ

 

2. 시간을 잘 맞춰도 갑자기 중간부터 sleep_list에 들어가 있는 요소중 상태가 running으로 체크 되어있는 녀석이 들어가있다.


트러블 슈팅

 

1. 글로빌 틱은 언제나 가고 있기 때문에 우리가 갱신하면 애초에 안되는 것.

 

2. 인터럽트의 중요성을 알게 되었고 인터럽트를 발생시키는 함수를 실행하는 함수 내부에 또다시 인터럽트 함수를 넣으면 우리의 예상 할 수 있게 동작하지 않는다.

 


후기

팀원들과 12시간정도 소통하고 구현하느라 블로깅할 시간이 없어진다.....

 

물론 어느정도의 솔루션을 보면서 하면 쉽겠지만 나의 욕심일 수도 있지만

 

팀의 성장을 위해서는 자료없이 의논과 추상화로만 완료하고 싶다.

 

선배들은 어떻게 블로깅하면서 핀토스를 했지? 란 생각만 든다.

'정글' 카테고리의 다른 글

Pintos Thread (WIL) 깊게 생각해볼 Keyword  (0) 2023.06.02
(Pintos 1주차) Priority scheduling  (0) 2023.05.31
WIL(7주차) Proxy 구현  (0) 2023.05.25
TIL(27일차) 네트워크  (0) 2023.05.23
(TIL26일차) 동시성 프로그래밍  (1) 2023.05.20