프로세스
- 프로그램이 메모리에 로드되어 실행되는 개체
- 실행을 위해 운영체제(커널)에 의해 관리되는 작업 (운영체제로부터 PCB를 할당받아 생성된 상태)
프로세스 생성
- 메모리의 사용자 영역에 프로세스로 올라오고, 운영체제 영역에 해당 프로세스에 대한 PCB가 올라온 상태
프로세스 종료
- 메모리의 운영체제 영역에 PCB가 사라지고, 사용자 영역의 프로세스가 사라진 상태
PCB - Process Control Block
PCB란?
- 프로세스에 대한 메타데이터 저장하는 운영체제의 자료구조
- 프로세스 관리에 필요한 정보 저장
- PCB에 포함된 메타데이터 예시
메타데이터란?
- 데이터에 대한 데이터를 의미
ex) 이미지 파일의 촬영 날짜, 해상도 등
프로세스의 메모리 구조
정적영역
- 컴파일 타임에 각 영역의 메모리 크기 결정
코드
- 기계어로 번역된 코드 저장
DATA
BSS
- 0으로 초기화 되어있거나 초기화되어있지 않은 정적 변수 및 전역 변수들 저장
DATA
- 0이 아닌 값으로 초기화된 정적변수 및 전역 변수
두 파트로 나누어진 이유
- BSS 영역을 별도로 두면, 초기값이 없는 변수를 바이너리에 기록하지 않고 런타임에 메모리에서 0으로 초기화 → 메모리 효율성 증가
동적영역
- 런타임에 메모리 크기 결정
스택
- 함수호출, 지역변수, 매개변수 저장
- 최대 크기가 존재하고 넘어가면 stack overflow
힙
- 인스턴스나 배열과 같은 동적 메모리 저장
- 힙 영역의 최대 크기 = 코드 영역 + 데이터 영역 크기 + 스택 영역 최대크기
프로세스가 할당받는 메모리 크기
- 32bit 운영체제의 경우 4GB
- 64bit 운영체제의 경우TB 단위의 메모리
운영체제의 발전과 프로세스 상태
단일 프로세스 시스템
- 일괄처리 시스템
- I/O 작업에 의해 CPU 작업 중단
멀티프로그래밍 시스템
- CPU활용도를 높이기 위해, I/O 작업의 요청 후, 해당 결과를 기다리는 동안 다른 프로세스 처리 가능
멀티태스킹 시스템
- 프로세스는 한 번 CPU를 이용할 때 아주 짧은 시간만 CPU에서 실행 > 시분할 시스템
멀티태스킹의 문제점
- 하나의 프로세스가 동시에 여러 작업 수행 불가
- 프로세스의 컨텍스트 스위칭은 무거운 작업
컨텍스트 스위칭
- 시분할 시스템에서 PCB를 교환하는 작업
1. 지금까지의 내용 PCB에 저장
2. 새로 들어오는 프로세스의 PCB내용으로 CPU 다시 세팅
3. 비용이 큼!!
현대 운영체제의 프로세스 상태
https://www.youtube.com/watch?v=jZuTw2tRT7w
이 부분은 위의 강의 참조하여 블로그 제작하였습니다!
활성상태
a. created state
- 작업을 커널에 등록
- PCB 할당 및 프로세스 생성
- 커널 > 가용 메모리 공간 체크 및 프로세스 상태 전이 (ready or suspended ready)
b. ready state
- 프로세서(CPU)외에 다른 모든 자원들을 할당 받은 상태
- 프로세서 할당 대기 상태
- 즉시 실행 가능한 상태
c. running state
- 프로세서 + 자원 모두 할당 받은 상태
preemption
- 프로세서를 뺏김(우선순위가 높은 다른 작업이 들어오거나 할당된 시간이 지났을 때)
- running state -> ready state
Block / Sleep
- I/O 등 자원할당 요청 시, 다른 작업을 수행할 수 있도록 CPU자리를 내어줌
- 자원 할당은 system call에 의해 이루어짐
- running state -> asleep state
Wake Up
- asleep state -> ready state
보류 상태
suspended state
- 메모리를 할당받지 못한 상태
- 메인 메모리 자원이 부족하거나, 프로세스의 실행 우선순위가 낮아 메모리에서 일시적으로 쫓겨난 경우 발생
- 보류 상태는 메인 메모리가 아니라 스왑 영역(swap device)에 프로세스 정보를 저장하며, 다음과 같은 두 가지 하위 상태
보류대기상태(suspende blocked state)
- 프로세스가 I/O 작업 등으로 대기 상태에 있을 때 메모리 부족으로 스왑 아웃된 경우
- I/O 작업이 계속 지연되거나 시스템 자원을 기다리는 상황에서 메모리가 부족한 경우 발생
보류준비상태(suspended ready state)
- 준비상태에서 메모리가 부족해 스왑 아웃된 경우
- 보류 대기 상태에서 벗어나 실행을 기다리는 상태이지만, 여전히 메모리가 부족해 대기
스왑 (Swapping)
- 프로세스를 메인 메모리와 스왑 영역 간에 이동시키는 과정
- 스왑 작업은 메모리 관리 및 자원 활용을 최적화하기 위해 수행
스왑 영역 (Swap Device)
- 메모리가 부족한 경우, 프로세스의 정보를 일시적으로 저장하는 저장장치의 일부 영역
- 일반적으로 HDD, SSD와 같은 저장 장치에 설정된 특수 파일 시스템
스왑 작업
1. 스왑 아웃 (Swap Out)
- 메인 메모리에서 스왑 영역으로 프로세스를 옮기는 작업
- 메모리가 부족하거나 우선순위가 낮은 프로세스를 스왑 아웃
2. 스왑 인 (Swap In)
- 스왑 영역에서 메인 메모리로 프로세스를 다시 옮기는 작업
- 실행 준비가 된 프로세스를 메모리에 복원
'운영체제' 카테고리의 다른 글
동시성 처리 (1) | 2024.12.28 |
---|---|
스레드의 등장 (0) | 2024.12.21 |
운영체제의 역할과 구조 (2) | 2024.12.14 |
컴퓨터의 구성과 동작원리 (0) | 2024.12.11 |