목표Alarm Clock기능을 구현해 쓰레드를 일정시간(ticks) 대기상태에서 준비상태로 전환시킨다.Alarm ClockAlarm Clock은 지정된 시간(tick)에 스레드를 깨우는 기능이다. 특정 시간 후에 작업을 수행해야 하는 경우 (예: 주기적인 작업, 타임아웃 처리 등)에 사용할 수 있다.도출과정초기 Pintos의 timer_sleep기능은 일정 시간(tick)동안 실행상태의 쓰레드를 지속적으로 준비상태로 바꾸는 busy wait 방식이다.이를 해결하기 위해 쓰레드를 대기(block)상태로 전환뒤 다른 컨텍스트들을 실행하다 깨워야하는 시간이 됐으면 unblock하는 방식으로 구현을 진행한다.대기(block)상태의 쓰레드를 unblock시킬 컨텍스트가 필요하다 timer인터럽트는 매 tick발생..
Process와 ThreadProcessProcess는 실행 중인 프로그램의 인스턴스를 말합니다. 프로세스는 운영체제로부터 시스템 자원을 할당받아 독립적으로 실행되는 단위이며, 각 프로세스는 자신만의 메모리 공간과 시스템 자원을 가진다.ThreadThread는 프로세스 내에서 실행되는 작업의 단위로, 경량 프로세스(Lightweight Process)라고도 불린다. 한 프로세스 내에서 여러 개의 Thread가 동시에 실행될 수 있으며, 각 Thread는 독립적인 실행 흐름(Context)을 가진다.참고쓰레드와 프로세스 Context SwitchingContext Switching(문맥 교환)은 CPU가 한 프로세스 또는 스레드의 실행에서 다른 프로세스 또는 스레드의 실행으로 전환하는 과정을 말한다 이 과..
개발환경 구축가상환경Ubuntu 18.04우분투 18.04를 실행하기 위해 세가지 선택지가 있었다AWS EC2MS AZUREDocker우선 도커는 내 환경이 ARM기반 맥북이어서 설정이 매우 번거로워서 세팅할 시간을 돈으로 사야겠다 생각해서 클라우드서비스를 이용하기로했다.처음에는 EC2를 사용했지만 우분투 18.04가 부분 무료여서 한달간 핀토스를 하게되면 5만원 이상 나올것 같아서 일주일 사용하고 azure로 갈아탔다.Azure는 1위 업체가 아니기 때문에 저렴하고 가상머신 내렸다가 올렸을때 ec2와는 다르게 ip변동이 없어 azure를 사용하게 됐다. 개발툴SFTP클라우드를 사용하면서 불편했던점이 내 로컬에서 코드를 작성하고 가상환경에서 테스트를 하는데 불편함이 있었다 처음에는 SFTP를 사용했는데 ..