Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩
Computer Science/운영체제

2. 프로세스 개요

by Toughie 2023. 8. 27.

🖥️ 프로세스 개요 🖥️ 

프로세스 생성

포그라운드 프로세스(foreground process)

- 사용자가 볼 수 있는 공간에서 실행되는 프로세스(게임, 워드 등)

 

백그라운드 프로세스(background process)

- 사용자가 볼 수 없는 공간에서 실행되는 프로세스

1. 사용자와 직접 상호작용이 가능한 백그라운드 프로세스

2. 사용자와 상호작용하지 않고 정해진 일만 수행하는 프로세스 -> (데몬_daemon, 서비스 라고 부름)

 

프로세스 제어 블록

- 모든 프로세스는 실행을 위해 CPU가 필요하다. 하지만 CPU의 자원은 한정되어 있다!

타이머 인터럽트: 클럭 신호를 발생시키는 장치에 의해 주기적으로 발생하는 하드웨어 인터럽트의 한 종류 (타임아웃 인터럽트)

위와 같이 프로세스들은 빠르게 번갈아가며 수행된다.

이를 위해 사용되는 자료구조가 '프로세스 제어 블록' (Process Control Block PCB)

- 프로세스 관련 정보를 저장하는 자료 구조(저장 형태)

- 프로세스 생성 시 커널 영역에 생성, 종료 시 폐기됨.

프로세스 ID(PID)

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

 

레지스터 값

- 프로세스는 CPU의 레지스터를 이용함. 

-> 타이머 인터럽트가 발생했을 때 자기가 작업하던 내용을 알고 있어야 함. 그래야 다시 차례가 왔을 때 실행 재개 가능하기 때문.

- 프로세스는 자신의 실행 차례가 오면 이전까지 사용한 레지스터 중간 값을 모두 복원함. 그리고 실행을 재개함.

프로그램 카운터, 스택 포인터 등..

 

프로세스 상태

- 입출력 장치를 사용하기 위해 기다리는 상태, CPU를 사용하기 위해 기다리는 상태, CPU 이용 중인 상태 등.. 여러 상태값들이 저장됨.

 

CPU 스케줄링 정보

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

 

메모리 정보

- 프로세스가 어느 주소에 저장되어 있는지에 대한 정보

- 페이지 테이블 정보 (메모리 주소를 알 수 있는 정보)

 

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

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


문맥 교환 (Context Switch)

- 한 프로세스(A)에서 다른 프로세스(B)로 실행 순서가 넘어가면 어떤 작업이 이루어질까?

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

- 프로그램 카운터 등 각종 레지스터 값, 메모리 정보, 열었던 파일, 사용한 입출력 장치 등

- 이런 중간 정보를 바로 문맥이라고 한다. (Context)

- 다음 차례가 돌아왔을 때 실행을 재개하기 위한 정보가 문맥인 것.

"실행 문맥을 백업해두면 언제든 해당 프로세스의 실행을 재개할 수 있다."

 

프로세스 A의 문맥 백업이 완료되면, 뒤이어 실행할 프로세스 B의 문맥을 복구한다. -> Context Switch

PCB는 아래와 같이 커널 영역에 적재되어 있다.

그렇다면 사용자 영역에는 어떻게 저장되어 있을까?

그 유명한 코데힙스..

코드 영역(텍스트 영역)

- 실행할 수 있는 코드, 기계어로 이루어진 명령어를 저장함.

- 데이터가 아닌, CPU가 실행할 명령어가 담김. read-only로 쓰기가 금지된 영역

 

데이터 영역

- 잠깐 쓰고 사라지는 데이터가 아니라, 프로그램이 실행되는 동안 유지할 데이터를 저장

ex. 전역 변수, static

 

코드, 데이터 영역은 크기가 고정되어 있기 때문에 '정적 할당 영역'이라고도 함. Static

 

- 개발자가 직접 할당할 수 있는 저장공간

ex. 클래스, 클로저. 

메모리 누수를 방지하기 위해 사용이 끝나면 해제시켜줘야함. (ex. 가비지 컬랙션, ARC)

 

스택

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

- 잠깐 쓰고 사라지는 값들이 저장됨.

ex. 매개변수, 지역변수, 함수 실행 등

 

힙과 스택 영역은 프로그램이 실행되는 과정에서 동적으로 크기가 변할 수 있음. '동적 할당 영역' Dynamic

 

힙과 스택은 동적 할당이 이루어지기 때문에, 할당의 순서가 반대임. (충돌 방지)

 

학습 출처: https://www.youtube.com/watch?v=bls_GjX-4U8&list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl 

 

'Computer Science > 운영체제' 카테고리의 다른 글

5. CPU 스케줄링  (0) 2023.08.29
4. 스레드  (0) 2023.08.29
3. 프로세스 상태와 계층 구조  (0) 2023.08.28
1. 운영체제 intro  (0) 2023.08.27
0. 운영체제를 왜 공부해야 하는가 🤔 iOS  (0) 2023.07.02