PintOS 프로젝트1: 스레드와 운영체제 스케줄링 핵심 원리
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

PintOS| project1 : thread | 스레드를 직접 다뤄보다.

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

운영체제

대상자

운영체제 개발/학습자, 학생, 중급 이상 프로그래머

핵심 요약

  • 스레드는 CPU가 명령어를 순서대로 실행하는 흐름으로, 병렬 처리 기반의 작업 단위
  • 우선순위 기반 스케줄링(Priority-based Scheduling)이 운영체제에서 스레드를 관리하는 핵심 원칙
  • ready_list, thread_yield(), thread_block() 등의 운영체제 내부 함수로 스레드 생명주기를 직접 구현

섹션별 세부 요약

1. 스레드 정의 및 예시

  • 스레드는 CPU 명령어 실행 흐름으로, 병렬 처리 기반의 작업 단위
  • 아침 루틴과 음악 재생의 예시로 동시 실행 흐름의 필요성 설명
  • 하나의 CPU에서 스레드 병렬 실행 불가 → 운영체제가 관리해야 함

2. 운영체제의 스레드 관리 역할

  • 스레드 생성, 스케줄링, 양보, 중단, 재개 5가지 핵심 역할 정의
  • 스케줄링(Scheduling)은 우선순위를 기준으로 CPU 할당하는 프로세스
  • 스레드 상태(status)와 우선순위(priority)가 스케줄링에 핵심 영향

3. 스레드 구조체 및 스케줄링 메커니즘

  • ready_list우선순위 순으로 정렬된 대기 큐
  • schedule() 함수는 ready_list에서 가장 높은 우선순위 스레드 선택
  • thread_create()로 생성된 스레드는 즉시 실행되지 않고 ready_list에 추가

4. 스레드 제어 함수 및 실무 적용

  • thread_yield() : 현재 스레드가 자발적으로 CPU 양보
  • thread_block() : 자원 기다리기 위해 blocked 상태로 전환
  • thread_unblock() : 자원 준비 완료 시 ready_list에 재삽입

결론

  • 우선순위 기반 스케줄링은 실무에서 시스템 성능과 반응성에 직접 영향 → 핵심 설계 원칙
  • ready_listschedule() 함수를 통해 운영체제가 스레드 생명주기 관리
  • 디버깅 도구(gdb) 활용법 습득이 실무 개발자 역량 향상에 기여
  • 스레드는 CPU 실행 흐름이지, 단순히 코드의 집합이 아님 → 개념적 이해 중요