일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- DART
- 안드로이드
- SWIFT
- 머신러닝
- 스위프트
- aws
- baekjoon
- GDSC
- 개발
- 프로그래머스
- 현대sw
- 다트
- kotlin
- Flutter
- 자바
- Android
- java
- 코테
- MVVM
- programers
- 알고리즘
- 플러터
- 코틀린
- VSCode
- 백준
- 소프티어
- Python
- softeer
- 아마존 웹 서비스
- 파이썬
- Today
- Total
조준장 개발자 생존기
프로세스 상태 전이 (생성 → 준비 → 실행 → 종료 등) 본문
프로세스 상태 전이를 왜 알아야 할까?
운영체제를 공부하거나 개발자로서 시스템의 동작 원리를 이해하다 보면 반드시 마주치게 되는 개념이 있다. 바로 프로세스(Process)이다. 그리고 이 프로세스가 '어떻게 생성되고', '언제 실행되며', '어떤 조건에서 종료되는지'를 알려면 프로세스 상태 전이에 대한 이해가 꼭 필요하다.
이번 글에서는 프로세스의 생애 주기와 각 상태 간의 전이 과정을 차근차근 알아가보자.
프로세스란?
우선 간단히 정리하고 넘어가면, 프로세스(Process)란 실행 중인 프로그램이다. 우리가 흔히 사용하는 크롬, 메모장, 터미널 등도 실행되는 순간 하나의 프로세스가 된다.
프로세스의 주요 상태
운영체제는 프로세스를 효율적으로 관리하기 위해 각 프로세스의 상태를 구분한다. 일반적으로 다음과 같은 상태가 존재한다.
- New (생성) : 프로세스가 생성되고 아직 운영체제에 의해 준비되지 않은 상태, 프로세스 제어 블록(PCB)이 만들어지는 시점이다.
- Ready (준비) : CPU에 의해 실행될 준비가 완료된 상태, 이 상태에 있는 프로세스들은 실행만을 기다리고 있다.
- Running (실행) : 실제로 CPU를 할당받아 명령어를 수행 중인 상태, 한 시점에 하나의 CPU 코어는 오직 하나의 프로세스만 실행할 수 있다.
- Waiting / Blocked (대기 / 차단) : 입출력(I/O) 작업처럼 CPU가 아닌 다른 자원을 기다리는 상태, 예를 들어, 사용자의 키보드 입력을 기다리는 경우이다.
- Terminated (종료) : 프로세스의 실행이 끝나거나 강제로 종료되어 운영체제에 의해 자원이 회수된 상태
프로세스 상태 전이
이제 위 상태들 사이에서 어떤 일이 벌어지는지를 살펴보자. 상태 전이란 프로세스가 어떤 조건에 따라 한 상태에서 다른 상태로 이동하는 과정을 말한다.
- 생성(New) → 준비(Ready)
- 프로세스가 생성되고 나면, 운영체제는 이를 준비 상태로 전환시켜 실행 대기열에 올린다.
- 준비(Ready) → 실행(Running)
- CPU 스케줄러에 의해 CPU가 할당되면 준비 상태였던 프로세스가 실행 상태로 전환된다.
- 실행(Running) → 준비(Ready)
- 타임 슬라이스가 끝나거나 더 높은 우선순위의 프로세스가 등장하면, 현재 실행 중인 프로세스는 다시 준비 상태로 돌아간다.
- 실행(Running) → 대기(Waiting)
- 입출력 요청과 같이 다른 자원을 기다려야 할 때, 프로세스는 실행을 멈추고 대기 상태로 전환된다.
- 대기(Waiting) → 준비(Ready)
- 기다리던 입출력 작업이 끝나면, 프로세스는 다시 실행 대기열로 돌아간다.
- 실행(Running) → 종료(Terminated)
- 프로세스의 작업이 정상적으로 끝났거나, 비정상적인 오류로 인해 강제 종료되는 경우이다.
마치며
프로세스 상태 전이는 운영체제의 개념처럼 보이지만, 실제 개발에서도 비슷한 원리로 사용된다. 예를 들어, Kotlin의 코루틴 역시 하나의 흐름이 실행 중(Suspended) 상태에서 대기(Waiting) 상태로 전환되거나, 준비(Ready) 상태에서 다시 재개(Resumed) 되는 흐름을 가진다.
이처럼 코루틴의 상태 변화도 본질적으로는 스케줄링과 상태 전이의 논리 위에 있다. 즉, 우리가 프로세스 상태 전이를 이해하고 있다면, 코루틴이 언제 중단되고 언제 다시 이어지는지, 어떤 컨텍스트에서 실행되는지를 더 명확하게 이해할 수 있게 된다.
운영체제의 개념은 단순한 이론이 아니라, 우리가 매일 사용하는 비동기 프로그래밍의 기반 원리와도 연결되어 있다는 점, 꼭 기억하면 좋을 것 같다.
'CS > 운영체제' 카테고리의 다른 글
멀티스레딩의 장점과 단점 (0) | 2025.05.11 |
---|