Notice

[OS] 프로세스

프로세스(Process)

실행 중인 프로그램을 뜻한다.
실행 되기 전 프로그램은 그저 보조 기억 장치 속 데이터 덩어리일 뿐

 

1) 포그라운드 프로세스
사용자가 볼 수 있는 공간에서 실행되는 프로세스

 

2) 백그라운드 프로세스
사용자가 볼 수 없는 공간에서 실행되는 프로세스

 

백그라운드 프로세스는 2가지 종류로 나눌 수 있다.
i) 사용자가 직접 상호작용 가능한 백그라운드 프로세스
ii) 사용자와 상호작용 하지 않고 그저 정해진 일만 수행하는 프로세스 ex) 데몬(daemon), 서비스 등

 

 

PCB(프로세스 제어 블록)

프로세스 관련 정보를 저장하는 곳
- 프로세스 생성 시 커널 영역에 함께 생상되었다가 종료 시 폐기된다.

 

모든 프로세스 실행을 위해서는 CPU가 필요하지만, 자원은 한정되어 있다.
그래서 프로세스들이 돌아가며 한정된 시간만큼만 CPU를 이용한다. 타이머 인터럽트 발생 시 다른 프로세스에게 차례를 양보한다.
따라서, 빠르게 번갈아 수행되는 프로세스 관리를 위해 사용되는 자료구조 PCB를 이용해 프로세스 관련 정보를 저장한다.

PCB에 담기는 대표 정보

  • PID : 프로세스 ID
  • 레지스터 값
  • 메모리 정보
  • 프로세스 상태
  • CPU 스케쥴링 정보
  • 사용한 파일과 입출력 장치의 정보

 

1. PID
특정 프로세스를 식별하기 위해 부여하는 고유번호

 

2. 레지스터 값

프로세스는 자신의 실행 차례가 다가오면, 이전까지 사용한 레지스터 중간 값을 모두 복원 후 실행을 재개한다.
ex) 프로그램 카운터, 스택 포인터

 

3. 프로세스 상태

입출력 장치를 사용하기 위해 기다리는 상태, CPU를 사용하기 위해 기다리는 상태 등 프로세스의 상태를 저장

 

4. CPU 스케쥴링 정보

프로세스가 언제, 어떤 순서로 CPU를 할당 받을 지에 대한 정보

 

5. 메모리 정보

프로세스가 어느 주소에 저장되어 있는 지에 대한 정보
ex) 페이지 테이블 정보(메모리의 현재 주소 정보를 알 수 있음)

 

6. 사용한 파일과 입출력 장치 정보

할당된 입출력 장치, 사용 중인(열린) 파일 정보

 

 

문맥 교환(Context Switching)

기존의 실행중인 프로세스 문맥을 백업하고, 새로운 프로세스 실행을 위해 문맥을 복구하는 과정

문맥(Context)

프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일 정보 등의 중간 정보

프로세스 A에서 B를 실행할 때의 과정

1. 기존에 실행되던 프로세스 A는 지금까지의 중간 정보를 저장한다.

2. 뒤이어 실행될 프로세스 B의 문맥을 복구하여 실행한다.

 


 

그럼 사용자 영역에서는 어떤 일이 일어날까?

 

프로세스의 메모리 영역

코드 영역, 데이터 영역, 힙 영역, 스택 영역

 

 

 

1. 코드 영역(텍스트 영역)

실행할 수 있는 코드. 기계어로 이뤄진 명령어

데이터가 아닌 CPU가 실행할 명령어가 들어 있다(Read-Only)

 

2. 데이터 영역

프로그램이 실행되는 동안 유지할 데이터를 저장하는 공간

ex) 전역 변수

 

코드영역과 데이터 영역은 크기가 변하지 않는 정적 할당 영역이다.

 

3. 힙 영역

사용자(프로그래머)가 직접 할당할 수 있는 저장 공간

 ex) Java에서는 GC로 자동 메모리 해제 해줌

 

4. 스택 영역

데이터가 일시적으로 저장되는 공간

ex) 매개변수, 지역변수

 

힙 영역과 스택 영역은 가변적이다

  • 스택 영역 : 높은 주소 -> 낮은 주소
  • 힙 영역 : 낮은 주소 -> 높은 주소

 

'CS' 카테고리의 다른 글

[OS] Thread  (0) 2025.10.07
[OS] 프로세스 상태와 계층 구조  (0) 2025.10.07
[OS] 운영체제란  (0) 2025.10.07
디자인 패턴1 - 싱글톤, 팩토리, 전략 패턴  (0) 2025.07.25
01-2. 컴퓨터 구조  (0) 2025.03.07
글쓰기 설정