운영체제

2025. 1. 10. 16:33
728x90

1. 프로세스와 프로그램 차이점

더보기

프로그램

: 저장 장치에 저장된 실행 가능한 명령어와 데이터의 집합으로 실행되지 않은 상태에서는 정적이다. 

- 정적 존재: 프로그램은 메모리에 적재되지 않은 상태로 파일 시스템에 저장된다.

- 파일 형태: 일반적으로 .exe, .bin, .py 같은 실행 가능한 파일 형식

- 실행 전 상태: 자원을 소모하지 않음.

 

프로세스

: 프로그램이 실행되어 CPU, 메모리, 파일 핸들 등 자원을 할당받아 운영체제에서 동작 중인 상태이다. 

- 동적 존재: 프로그램이 실행되면 운영체제에 의해 메모리에 적재되어 동작

- 자원 소비: 프로세스는 실행 중 메모리, CPU 시간, 입출력 자원 등을 사용

- 고유한 식별자: 운영체제는 각 프로세스를 PID로 구분

- 다중 인스턴스: 하나의 프로그램에서 여러 프로세스가 생성될 수 있다. (ex. 웹 브라우저를 여러 창으로 실행하면 각 창이 별도의 프로세스)

프로그램은 저장 장치에 있는 정적인 코드와 데이터로 이루어진 파일입니다. 실행되지 않은 상태에서는 단순히 명령어와 데이터의 집합입니다. 반면, 프로세스는 프로그램이 실행되어 운영체제에 의해 메모리와 CPU 등의 자원을 할당받아 동적으로 동작하는 상태입니다. 즉, 프로그램이 실행 중일 때의 활동 중인 인스턴스입니다. 프로그램은 정적인 존재(설계도)이고, 프로세스는 실행된 동적인 존재(작동 중인 기계)입니다. 

 

2. 프로세스와 스레드의 차이

더보기

프로세스

: 운영 체제에서 실행 중인 프로그램의 독립적인 작업 단위.

- 독립적 메모리 공간 : 각 프로세스는 고유한 메모리 공간 (코드, 데이터, 힙, 스택)을 할당받는다.

- 통신 : 프로세스 간에는 데이터 공유 X -> 통신 시 IPC 같은 별도의 기법이 필요하다.

- 오버헤드 : 프로세스 간 문맥 교환은 상대적으로 비용이 많이 듦.

- 안정성 : 한 프로세스가 종료되거나 문제가 생겨도 다른 프로세스에는 영향 X.

 

스레드

: 프로세스 내에서 실행되는 더 작은 작업 단위로 프로세스 내의 자원을 공유한다.

- 메모리 공유 : 같은 프로세스 내에서 코드, 데이터, 힙 메모리를 공유하지만, 스택과 레지스터는 각각 독립적

- 경량성 : 프로세스보다 가벼우며, 생성 및 문맥 교환 비용이 적음

- 통신 : 같은 프로세스 내의 스레드는 메모리를 공유하므로 별도 통신 기법 없이 데이터 교환 가능

- 안정성 : 한 스레드가 문제를 일으키면 같은 프로세스 내의 다른 스레드에도 영향 O.

프로세스는 운영체제에서 실행 중인 프로그램의 독립적인 작업 단위로, 각 프로세스는 고유의 메모리 공간(코드, 데이터, 스택)을 가지고 실행됩니다. 반면 스레드는 프로세스 내에서 실행되는 더 작은 작업 단위로, 같은 프로세스 내의 다른 스레드와 메모리를 공유하고, 스택과 레지스터는 독립적으로 사용합니다. 스레드는 병렬 처리가 필요한 상황에서 주로 사용되며, 프로세스는 독립된 실행 환경을 제공할 때 유용합니다. 

 

3. 컨텍스트 스위칭

더보기

컨텍스트(Context)

: CPU가 현재 실행 중인 프로세스나 스레드의 상태를 나타내는 정보.

- 프로세스 컨텍스트 : 레지스터 값, 프로그램 카운터(PC, 현재 실행 중인 명령어 위치), 메모리 관리 정보

- 스레드 컨텍스트 : 프로세스와 공유하는 데이터 (코드, 데이터, 힙) 외에 스택과 레지스터 값. 

 

컨텍스트 스위칭

: CPU가 실행 중인 작업의 상태를 저장하고, 다른 작업의 상태를 복원하여 작업을 전환하는 과정.

- 멀티태스킹 : 운영체제가 여러 프로세스를 번갈아가며 실행할 때

- 인터럽트 처리 : 외부 장치나 시스템 요청으로 현재 작업을 중단하고 새로운 작업을 처리할 때

- 프로세스 우선순위 변화 : 높은 우선순위의 프로세스가 실행 준비 상태가 되었을 때

 

1) 현재 작업의 상태 저장 : 현재 실행 중인 프로세스/스레드의 레지스터 값, 프로그램 카운터 등을 PCB(Process Control Block)에 저장

2) 다음 작업의 상태 복원 : 실행 대기 중인 프로세스/스레드의 컨텍스트를 PCB에서 복원

3) CPU 제어권 전환 : CPU가 새로운 프로세스/스레드를 실행하기 시작

컨텍스트 스위칭은 CPU가 현재 실행 중인 프로세스나 스레드의 상태(컨텍스트)를 PCB에 저장하고, 다음에 실행할 프로세스나 스레드의 상태를 복원하는 작업입니다. 이 과정은 멀티태스킹 환경에서 CPU를 여러 작업 간에 효율적으로 할당하기 위해 필요합니다. 컨텍스트에는 프로세스의 레지스터 값, 프로그램 카운터, 메모리 상태 등이 포함됩니다. 컨텍스트 스위칭은 작업 전환을 가능하게 하지만, 저장 및 복원의 오버헤드로 인해 시스템 성능이 저하될 수 있습니다. 이를 줄이기 위해 스레드를 사용하면 더 가볍고 빠른 전환이 가능합니다. 

728x90

'Programming > CS' 카테고리의 다른 글

네트워크2  (1) 2025.01.20
디자인 패턴  (1) 2025.01.17
스프링  (0) 2025.01.14
데이터베이스  (0) 2025.01.11
네트워크  (0) 2025.01.09

BELATED ARTICLES

more