CS/Operating System

[운영체제] 프로세스와 스레드

테리는당근을좋아해 2020. 6. 18. 20:35

프로그램

- 저장 장치에 저장된 실행할 수 있는 파일

 

프로세스

1) 프로세스

- 메모리에 올라와 실행 중인 프로그램의 인스턴스

- 코드, 데이터, 스택, 힙 영역으로 구성

- 프로세스 간 통신을 위해 IPC(Inter-Process Communication) 사용(파일, 소켓, 파이프 등)

 

2) 프로세스 제어 블록(PCB, Process Control Block)

- 프로세스에 대한 정보를 저장하고 있는 자료구조

- 프로세스 생성과 동시에 고유한 PCB 생성

- 프로세스가 CPU를 할당받아 작업하다가 Context Swithing 발생 시 실행 중인 프로세스의 정보를 PCB에 저장하고, 다시 CPU를 할당받았을 때, PCB에 저장된 정보를 기반으로 이전에 멈췄던 시점부터 다시 작업을 수행

- 프로세스 식별자, 프로세스 상태, 프로그램 카운터, CPU 레지스터 정보 등을 저장

 

3) 프로세스 상태 전이도

 

 

 

스레드

- 프로세스 내의 실행 단위

- 스레드 ID, 프로그램 카운터, 레지스터 집합, 스택으로 구성

- 데이터, 코드, 힙 영역을 한 프로세스 내의 다른 스레드와 공유

 

! 스택 영역을 독립적으로 할당 받는 이유

- 함수 호출 시 전달받은 인자, 되돌아갈 주소 값, 함수 내에서 선언되는 변수 등이 스택영역에 저장되는데, 이를 통해 스레드 마다 독립적인 실행 흐름을 갖기 위해

 

! PC 레지스터를 독립적으로 할당 받는 이유

- PC 레지스터에는 스레드가 다음 실행해야할 명령어의 주소값이 저장. CPU 할당 시 PC 레지스터에 저장된 주소값을 기준으로 이전까지 수행했던 부분부터 다시 수행

 

! 자바 스레드

- JVM이 운영체제 역할

- 자바에는 프로세스가 존재하지 않고 스레드만 존재

- 자바 스레드는 JVM에 의해 스케줄링 되는 실행 단위 코드 블록