Computer Study/OS

[OS Study] 2-1. CPU 가상화 - 프로세스 (Ch. 4~5)

해리팍 2021. 6. 21. 00:13
반응형

안녕하세요.

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





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/)

반응형