본문 바로가기

전체 글113

Pintos(2주차) system call 후기 회고 이번주는 모두가 힘들었을 것이라고 생각한다. 매우 방대한 양의 과제와 부족한 시간 그리고 어려운 난이도 이 3개가 합쳐져서 삼위일체를 이루었는데  사람마다 마주한 문제와 에러 덩어리들이 한 가득해서 정신이 아득했을 것이다. 나 또한 그랬고 우리 반 사람들도 그랬을 것이다. 그리고 모두가 해내지 못해도 얻어가는 것이 그만큼 많았을 것이라고 생각한다. 그래도 여기는 정글 아닌가! 10일을 몰입헤서 물어뜯은결과 결국 마지막 날에 겨우 all pass를 받아냈다.알게된것1. 꺼진불도 다시 보자우리팀이 1주차에 짠 lock_acquire()가 테스트 케이스가 당연히 잘돌아가고 all pass를 받아서 저 함수가 잘못되었다는 생각조차 안했다.하지만 알고보니 lock을 끝날때 NULL로 초기화를 안해줘서 lock자체.. 2023. 6. 12.
Pintos Thread (WIL) 깊게 생각해볼 Keyword 이번주에는 쓰레드 스케줄링 알고리즘을 이해하고 OS 알고리즘을 짜봤는데 깊게 생각해봐야될 키워드 들이 뭐가 있는지 고민해보고 적어보려고한다. 1. 쓰레드 상태란 운영체제에서 관리하는 쓰레드의 현재 상태를 나타내는 개념이다. 5개의 상태가 있고 Create,Ready,Running,Blocked, Terminated 생성(Create) : 쓰레드가 생성되었지만 아직 실행되지 않은 초기 상태이다. 준비(Ready) : 쓰레드가 실행 가능한 상태이고, 프로세서의 할당 기다리는 상태 실행(Running) : 쓰레드가 현재 프로세서에서 실행되고 있는 상태 종료(Terminated) : 쓰레드가 실행을 완료하고 종료된 상태 위와 같은 상태가 있고 스케줄러에 의해 상태 전환이 관리 된다. 그러면 스케줄링은 무엇인가?.. 2023. 6. 2.
(Pintos 1주차) Priority scheduling 중요 키워드 1. priority scheduling 우선순위 스케줄링은 프로세스에게 우선순위를 할당하여 스케줄링하는 방식이다. pintos에서는 우선순위를 정수값으로 할당하였다. 우선순위를 기반으로 CPU할당을 결정하므로, 우선순위가 높은 프로세스가 CPU를 더많이 사용한다. 선점형과 비선점 형이 있는데 우리는 선점형으로 구현을 하였다. 실행을 기다리는 ready_list에서 thread의 우선순위를 기준으로 나열하고 실행한다. 우선순위는 동적으로 변하기 때문에 CPU에 할당할 때 정렬을 한다. 2. timer_interrupt 이 함수를 알기는 매우 어려웠지만 책에 나온 내용대로 보면 interrupt를 비동기적으로 일으키기 때문에 intr_disable()을 하게 되면 하나의 독립적인 Thread로.. 2023. 5. 31.
Pintos(1일차 후기) 쓰레드 Pintos 1일차 핀토스에 드디어 입성했다. 핀토스를 간단하게 표현하면 이미 돌아가고 있는 작은 운영체제를 수정하면서 기능을 하나씩 추가해가는 것이다. 난이도는 어렵다고만 들었지 실제로 만나니까 코드의 바다에서 표류된것 같은 느낌이 든다. 자료는 블로깅 할 수는 없지만 처음보니까 어질어질하다.... 첫날의 계획은 구동되고 있는 Thread ready list를 효율적으로 바꾸는 것이다. 먼저 실행되고 있는 running_list에서 멈춘 쓰레드를 저장해 놓는 sleep_list를 만들어 인터럽트로 실행을 멈췄을때 sleep_list에 넣고 시간 축이 맞아질때 running_list로 보내는것이다. 우리팀이 마주한 문제 1. 글로벌 틱의 값을 주소의 값으로 받아오려고 했는데 우리가 갱신을 하면 시간축이 .. 2023. 5. 28.