Synchronization 2

[TIL] pintOS : synchronization 우선순위 스케줄링 구현 (1)

이번 포스팅에서는 예전 포스팅에서 공부했던 Synchronization(동기화) 를 스케줄링에 맞게 코드를 수정하고 다음 포스팅에는 priority-donate라는 동기화 중 특정 상황의 솔루션을 적용해보겠다. pintos에 있는 synchronization pintos에는 synchronization을 지키기 위해 semaphore와 lock, cond(monitor)가 존재한다. 해당 로직들은 모두 구조체로 구조체의 구조를 타고 가 보면 최 하단에는 결국 semaphore 방식으로 임계영역의 동기화를 보장하도록 설계되어있다. semaphore 구조체 안에서는 해당 임계구역에 진입하려고 시도했지만 block된 쓰레드를 모아두는 리스트를 가지고 있다. synchronization을 위한 구조체들의 구조는..

Jungle 2023.11.29

[TIL] pintos 운영체제 환경 세팅 + Synchronization(동기화)

오늘부터는 pintOS라는 교육용 운영체제를 만들고 테스트하며 운영체제에 대해서 배우는 첫 날이다. 먼저 작업 환경을 세팅해주고 시작하자. 일단 카이스트 핀토스 레포지토리의 master가 우리가 구현해야 하는 브랜치인 것으로 확인했다. 일단 해당 파일들을 분석하기 전에 개발 환경부터 세팅해주었다. 일단 우분투 18.04 버전의 EC2 환경에 카이스트 pintos 레포지토리를 복제했다. 이후 현재 파일에서 운영체제를 테스트하기 위해 가상환경을 세팅해준다. $ source ./activate 근데 가상환경의 세팅은 일시적인 것이므로 재부팅 시에 다시 세팅해주어야 하는 번거로움이 있다. 따라서 다음과 같이 root에서 가상환경을 자동 세팅해주도록 하는 코드를 추가했다. cd ~ # home 디렉토리로 이동 c..

Jungle 2023.11.23