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_list
와schedule()
함수를 통해 운영체제가 스레드 생명주기 관리- 디버깅 도구(gdb) 활용법 습득이 실무 개발자 역량 향상에 기여
- 스레드는 CPU 실행 흐름이지, 단순히 코드의 집합이 아님 → 개념적 이해 중요