용어 정리
프로그램
- 컴퓨터가 실행할 수 있는 명령어들의 집합
프로세스
- 컴퓨터에서 실행 중인 프로그램
- 각각의 프로세스는 독립된 메모리 공간을 할당 받음
- 명령어들과 데이터를 가짐
CPU
- 명령어를 실행하는 연산 장치
메인 메모리
- 프로세스가 CPU에서 실행되기 위해 대기하는 곳
IO
- 파일을 읽고 쓰거나
- 네트워크의 어딘가와 데이터를 주고 받는 것
- 입출력 장치와 데이터를 주거나 받는 것
단일 프로세스 시스템
- 한 번에 하나의 프로그램만 실행됨
- 단점: CPU 사용률이 좋지 않음
멀티 프로그래밍
- 여러 개의 프로그램을 메모리에 올려놓고 동시에 실행
- 단점: CPU 사용 시간이 길어지면 다른 프로세스는 계속 대기
멀티 태스킹
- 프로세스는 한번 CPU를 사용할 때 아주 짧은 시간(=quantum)만 CPU에서 실행되도록 하자
- 프로세스의 응답 시간을 최소화 시키는데 목적
스레드
- 한 프로세스는 한 개 이상의 스레드를 가질 수 있다.
- CPU에서 실행되는 단위
- 같은 프로세스의 스레드들끼리 컨텍스트 스위칭은 가볍다.
- 스레드들은 자신들이 속한 프로세스의 메모리 영역을 공유 - (데이터 공유가 쉬움)
- 그렇지만 스레드들만의 고유한 영역도 있다. - (스택 영역)
멀티 스레딩
- 하나의 프로세스가 동시에 여러 작업을 실행하는데 목적
확장된 멀티 태스킹의 개념
- 여러 프로세스와 여러 스레드가 아주 짧게 쪼개진 CPU time을 나눠 갖는 것
멀티 프로세싱
- 두 개 이상의 프로세서나 코어를 활용하는 시스템
PCB (Process Control Block)
PCB는 프로세스의 상태와 정보를 저장하는 데이터 구조이다.
운영체제는 PCB를 통해 현재 시스템에 어떤 프로세스가 있는지, 각 프로세스의 상태가 무엇인지 등을 파악한다.
PCB가 포함하는 주요 정보
- 프로세스 상태: 현재 프로세스가 실행 중인지, 대기 중인지, 또는 준비 상태인지 등을 나타낸다.
- 프로세스 ID: 각 프로세스를 구별하는 고유한 식별자
- 프로세스 우선순위: CPU 스케줄러가 프로세스 실행 순서를 결정할 때 참고하는 우선순위 정보
- 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 메모리 주소를 가리킨다.
- CPU 레지스터: 프로세스 실행 중 사용되는 레지스터들의 현재 상태 정보를 저장한다.
- 메모리 관리 정보: 프로세스에 할당된 메모리 영역에 대한 세부 정보를 담고 있다.
- I/O 상태 정보: 프로세스가 현재 사용 중인 입출력 장치들의 상태를 기록
프로세스 상태
1. 생성 (New)
- 프로세스가 생성되고 초기화되는 상태
- 이때는 운영체제가 프로세스를 관리하기 위해 PCB를 할당
2. 준비 (Ready)
- 프로세스가 실행될 준비가 되었지만, CPU를 할당받지 못한 상태
- 이 상태에서 프로세스는 CPU를 기다리며, CPU 스케줄러가 CPU를 할당해 주기를 기다린다.
3. 실행 (Running)
- 프로세스가 CPU를 할당받아 실제로 실행 중인 상태
- 다만, 시스템의 멀티태스킹 환경에서는 프로세스가 한 번에 잠깐씩 실행되고 교체되며 실행된다.
4. 대기 (Blocked/Waiting)
- 프로세스가 실행 중, I/O 요청이나 다른 이벤트를 기다려야 하는 경우 대기 상태로 전환된다.
- I/O 작업이 완료되면 다시 준비 상태로 돌아가게 된다.
5. 종료 (Terminated)
- 프로세스가 모든 작업을 완료하고 종료된 상태
- 프로세스의 자원은 운영체제에 의해 해제된다.
6. 스와핑(Suspended)
- 특정 상황에서 메모리 자원이 부족할 경우, 프로세스는 준비 상태에 있지만 메모리에서 쫓겨나게 된다.
- 다시 메모리에 올려질 때까지 CPU 스케줄링 대상에서 제외된다.
프로세스 우선순위 결정 방식
- 그럼 프로세스의 우선순위는 어떻게 정해질까?
- 프로세스의 우선순위는 시스템의 정책과 스케줄링 알고리즘에 따라 정해진다.
PCB는 프로세스의 전체 생명 주기를 관리하고, 여러 프로세스 간의 빠른 전환을 가능하게 하는 중요한 역할을 수행한다.
운영 체제는 이 PCB를 통해 각 프로세스의 상태를 정확히 파악하고 효율적으로 관리할 수 있다.
TCB (Thread Control Block)
TCB는 스레드의 상태와 정보를 저장하는 데이터 구조이다.
스레드는 프로세스 내에서 실행 단위를 나누어 실행할 수 있는 작업이다.
운영체제는 TCB를 통해 각 스레드의 상태를 관리한다.
TCB가 포함하는 주요 정보
- 스레드 ID: 고유한 ID로, 동일한 프로세스 내에서도 여러 스레드를 구분할 수 있도록 해준다.
- 스레드 상태: 스레드의 현재 상태를 표시합니다. 프로세스와 비슷하게, 실행 중, 준비 중, 대기 중 등의 상태가 있다.
- 스레드의 프로그램 카운터: 스레드가 현재 실행 중인 명령의 위치를 저장한다.
- 레지스터 값: 스레드가 실행을 중단하고 다른 스레드로 전환될 때의 CPU 레지스터 값을 저장한다.
- 스택 정보: 스레드가 사용하는 스택에 대한 정보를 포함한다. 각 스레드는 독립적인 스택을 사용하며, 이 스택은 함수 호출과 반환 등의 정보를 저장합니다.
- 스레드 우선순위: 스레드 간의 실행 우선순위를 결정하는 값
PCB와 TCB의 차이점
구분 | PCB (Process Control Block) | TCB (Thread Control Block) |
역할 | 프로세스 상태 및 정보 관리 | 스레드 상태 및 정보 관리 |
관리 단위 | 독립적인 프로세스 관리 | 프로세스 내부의 스레드 관리 |
포함 정보 | 프로세스 ID, 상태, 주소 공간, 파일 정보 등 | 스레드 ID, 상태, 스택, 프로그램 카운터, 레지스터 등 |
주소 공간 | 프로세스는 독립적인 메모리 주소 공간을 가짐 | 스레드는 같은 프로세스의 메모리 주소 공간을 공유함 |
종속 관계 | 프로세스는 독립적인 실행 단위 | 스레드는 프로세스 내에서만 실행 가능 |
'CS' 카테고리의 다른 글
[CS] 병행성과 병렬성 (0) | 2024.11.06 |
---|---|
[CS] 파일 시스템 (0) | 2024.05.27 |
[CS] 페이지 교체와 프레임 할당 (0) | 2024.05.26 |
[CS] 페이징의 이점 (0) | 2024.05.26 |
[CS] 운영체제의 메모리 관리 방식 페이징 (0) | 2024.05.26 |