반응형

안녕하세요.

이번 포스팅에선 프로세스에 대해 간략히 정리해 보려 합니다.





1. 프로세스 : 실행 중인 프로그램

- 프로그램 카운터 (명령어 포인터) : 프로그램의 어느 명령어가 실행 중인지를 알려줌

- 스텍 포인터 / 프레임 포인터 : 함수의 변수와 리턴 주소를 저장하는 스택을 관리하는 레지스터


2. 프로세스 API

- 생성 : 새로운 프로세스를 생성

- 제거 : 필요 없는 프로세스를 제거 할 때 사용

- 대기 : 프로세스를 중지 하여 대기 상태로 전환

- 상태 : 프로세스의 상태를 알기 위해 사용

- 기타 : 그 외에 각종 제어를 위한 API가 제공


3. 프로세스의 생성 과정 : 프로그램의 실행 과정

 

 

그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)

1) 프로그램 코드와 정적 데이터를 메모리, 프로세스의 주소 공간에 로드
- 프로그램 코드는 스토리지 (HDD, SSD 등)에 실행 파일 형식으로 존재

2) 스택 용도로 메모리 할당 : 각종 변수, 함수 인자, 리턴 주소 등을 스택에 저장

3) 힙 용도로 메모리 할당 : 동적으로 할당된 데이터를 저장

4) 파일 입출력을 위한 작업 수행 : 파일 디스크립터 생성

 

 

4. 프로세스의 상태

 

그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)

 


- 실행 (Running) : 프로세스가 수행 중인 상태 (명령어 수행)

- 준비 (Ready) : 프로세스를 실행 할 준비는 되어 있으나, 다른 포르세스를 실행 하고 있는 등의 이유로 대기

- 대기 (Blocked) : 프로세스가 다른 사건을 기다리는 동안 프로세스의 수행을 중단 (예 : 파일 입출력 시, 파일 입출력이 완료 될 때 까지 프로세스의 수행을 중단)

- 초기 (Initial)

- 최종 (Final)

 



5. 프로세스 관련 자료구조

- 프로세스 리스트 : 프로세스의 상태를 파악

- Regidter Context : 프로세스가 중단 되었일 때, 해당 프로세스의 레지스터 값들을 저장


6. 대표적인 프로세스 API

1) fork() 시스템 콜

 

그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)
그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)



- 프로세스 생성에 사용

- PID (프로세스 식별자) 가 할당 됨


2) wait() 시스템 콜

 

그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)


3) exec() 시스템 콜

 

그림 출처 : KAIST OS Lab. (https://oslab.kaist.ac.kr/OSTEPSlides/)

반응형
Posted by 해리팍
BLOG main image

Chanhyun Park (해리팍)
Software Engineer @ SK hynix

Contact Info.
parkch0708@hanmail.net
chanhyun0708@gmail.com
chanhyun.park@sk.com

카테고리

All (1502)
Profile (2)
Park's Life (600)
Computer System (165)
Computer Programming (39)
Computer Study (54)
Computer Etc. (189)
Scuba Diving (137)
Golf (8)
Traveling (245)
생활 정보 (12)
Pokemon GO (50)