분류 전체보기 176

[pintos] 1주차 - Priority Scheduling 문서 해석 / 코드 해석

https://casys-kaist.github.io/pintos-kaist/project1/priority_scheduling.html Priority Scheduling · GitBookNo results matching ""casys-kaist.github.io Priority Scheduling레디큐에 현재 실행 중인 스레드보다 우선순위가 높은 스레드가 추가되면 즉시 우선순위가 높은 스레드에게 프로세서를 양보해야 한다.스레드가 lock, semaphore, condition variable을 기다리고 있다면 가장 높은 우선순위를 가진 waiting 스레드가 첫 번째로 wake되어야 한다.스레드는 언제나 우선순위가 올라가거나 내려가지만, 우선순위가 내려가서 더 이상 가장 높은 우선 순위를 가지지 못..

정글/Pintos 2025.05.20

[pintos] 1주차 - Alarm Clock 구현 과정

일단 키워드 공부를 가벼운 수준으로 끝내고, 막대한 양의 코드를 해석하기 시작했다. (이전 글 참고)코드가 조금 숙지되고 나서 구현을 시작하려니 어디서부터 뭘 구현해야 할지 감이 안 잡혔다.구현 요구사항 파악이 덜 되었기 때문이다..! 그래서 내가 뭘 구현해야 할지부터 차근차근 정리했다.이번 포스팅은 내가 alarm clock 프로젝트를 어떻게 구현했는지에 대한 내용이다. 📌 구현 요구 사항timer_sleep()은 현재 스레드를 ticks 만큼의 시간 동안 재우는 함수이다. 원래 busy-wait으로 구현되어있었던 코드를 살펴보자./* Suspends execution for approximately TICKS timer ticks. */voidtimer_sleep (int64_t ticks) { ..

정글/Pintos 2025.05.20

[pintos] 1주차 - Alarm Clock 코드 정리

📍 함수 정리thread_start()pintos-kaist/threads/thread.c인터럽트를 활성화하여 선점형 스레드 스케줄링을 시작함idle 스레드를 만듦/* Starts preemptive thread scheduling by enabling interrupts. Also creates the idle thread. */voidthread_start (void) { /* Create the idle thread. */ struct semaphore idle_started; sema_init (&idle_started, 0); thread_create ("idle", PRI_MIN, idle, &idle_started); /* Start preemptive thread scheduling...

정글/Pintos 2025.05.20

[pintos] 1주차 - 키워드 정리 (2) : Process/Thread, DeadLock, 프로세스 상태/CPU Scheduling

https://whatissoimportantyou.tistory.com/58 VSCode에서 PintOS 네이티브 디버깅하기: 완벽 가이드들어가며PintOS 프로젝트를 진행하다 보면 디버깅의 중요성을 절실히 느끼게 됩니다. 특히 운영체제 수준의 코드는 디버깅이 어렵기 때문에 효율적인 도구가 필수입니다. 이번 포스팅에서는 VSCodwhatissoimportantyou.tistory.com오늘 키워드 다 정리하고 내일 코드 볼 때 이거 해봐야지 Process와 Thread코어타임에 팀원분이 프로세스와 스레드의 차이에 있어서 가장 중요한 부분을 짚어주셨다.OS 책을 읽을 때 이해되지 않은 채로 넘어갔던 문장인데 알고 보니 스케줄링을 구현할 때 굉장히 중요한 개념이었다.정리하고 넘어가보자.🤔 프로세스와 달리..

정글/Pintos 2025.05.11

[pintos] 1주차 - 키워드 정리 (1) : Semaphore/Mutex, Busy Waiting/Sleep Waiting

/* Suspends execution for approximately TICKS timer ticks. */voidtimer_sleep (int64_t ticks) { //ticks는 sleep 상태에 돌입해야 할 시간을 의미한다. int64_t start = timer_ticks (); //현재 타이머의 ticks을 가져오고 start에 대입한다. ASSERT (intr_get_level () == INTR_ON); while (timer_elapsed (start) /* Yields the CPU. The current thread is not put to sleep and may be scheduled again immediately at the scheduler's whim. */void..

정글/Pintos 2025.05.10

[pintos] 1주차 - 문서 정리

pintos주가 시작되었다. 어제까지 도커로 우분투 18.04 환경 세팅을 끝냈고 오늘은 프로젝트를 어떻게 진행할지에 대해 설명되어있는 문서를 정리해볼까 한다. 깃은 한 사람 레포지토리에 브랜치만 만들어서 관리하기로 했다.오늘 코어타임에는 협업 컨벤션을 정하기로 했는데 이 부분이 소통과 코드 관리에 있어서 굉장히 중요한 부분이 될 것 같다. 어떻게 진행될지..! 잘 하고싶어서 오늘 커피 두 잔이나 마셨다. 집중이 잘 되는 것 같아서 좋다 👀 문서:https://casys-kaist.github.io/pintos-kaist/appendix/threads.html Threads · GitBookThe main Pintos data structure for threads is struct thread, de..

정글/Pintos 2025.05.10

[pintos] 1주차 - Pintos 환경 세팅

https://velog.io/@jisung719/18.04-vscode-%ED%99%98%EA%B2%BD-%EC%84%B8%ED%8C%85 18.04 & vscode & 환경 세팅pintos 준비하기 pintos 프로젝트를 진행하기 위해서는 18.04의 우분투 환경 세팅이 필요합니다. 근데 분명 환경을 세팅하다 보면 vscode연결에 문제가 발생할 수 있습니다. 이를 해결하고 연결 방식에velog.io지성씨 블로그 내용을 이해한 대로 정리해보았다. 갓갓!어제 새벽 세시까지 도움을 받아 도커 환경을 세팅했다.테스트가 통과한 모습!AWS로 우분투 18.04를 사용하는 경우한 컴퓨터에서 다른 컴퓨터(원격지 컴퓨터)의 셸(cmd)에 접속하기 위해서는 ssh(secure shell)이라는 네트워크 프로토콜을 사..

정글/Pintos 2025.05.09

웹 서버와 CGI

이번 주에는 에코 서버, 타이니 웹 서버를 직접 만들어보았다. (주로 이미 짜여있는 코드 해석이 전부이긴 했지만)서버를 열고 정적 요청과 동적 요청을 보내보면서 웹 서버와 CGI, WAS에 대한 개념이 조금 잡히는 것 같아 전체적으로 개념을 정리해보기로 했다. 나는 '무언가를 이해하려면 그것을 직접 만들어보는 게 최고의 방법이다'라는 생각 하나로 정글의 커리큘럼을 믿기로 했는데, 이번 주차에 많이 실감이 되었다!항상 헷갈리던 웹 서버와 WAS 개념, 그리고 웹 서버의 발전 과정을 정리할 수 있었던 한 주였다. 그래서 8주차 발표 주제는 웹 서버와 CGI ~오늘 남은 시간에는 mutex를 이용한 스레드 동시성이 구현된 프록시 서버도 한 번 보고 마무리할 예정이다. 먼저 CGI에 대해 설명하기 전에 웹 서..

정글 2025.05.08

에코 서버(2) - 소켓 인터페이스를 위한 도움함수들

이전 글https://nkdev.tistory.com/153 에코 서버(1) - 호스트와 서비스 변환에코 서버는 클라이언트가 표준 입력으로 받은 데이터를 서버가 받아서 그대로 돌려주면 클라이언트가 받은 데이터를 표준 출력하는 간단한 프로그램이다. CSAPP 책에서는 CGI 프로그램을 이해하nkdev.tistory.com 이전 포스팅에서 배웠던 getaddrinfo()함수와 소켓 인터페이스들은 open_clientfd(), open_listenfd()로 감싸서 사용한다.getaddrinfo()를 설명하면서 잠깐 소개된 함수들인데 이번 포스팅에서 자세히 다뤄볼 예정이다. 소켓 인터페이스를 위한 도움함수들1. open_clientfd()클라이언트 측에서 서버와 연결할 때 사용하는 함수서버의 hostname,..

정글 2025.05.07