본문 바로가기
운영체제

프로세스와 운영체제의 이해

by dsungc 2024. 12. 15.

프로세스

- 프로그램이 메모리에 로드되어 실행되는 개체

- 실행을 위해 운영체제(커널)에 의해 관리되는 작업 (운영체제로부터 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를 교환하는 작업

https://choi-geonu.medium.com/백엔드-개발자들이-알아야할-동시성-3-쓰레드와-컨텍스트-스위치-79e976d0e478

 

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