본문 바로가기
공부/OS 공부

[OS 공부] 프로세스와 스레드

by 로디네로 2021. 1. 9.
반응형

 

프로세스 : 

실행중인 프로그램 으로 메모리에 적재돼서 CPU에 할당을 받을 수 있는것을 말한다.

위 사진과같이 OS로부터 주소공간과 파일 메모리 등을 할당받고 이를 프로세스라고 한다.

Stack 은 함수의 매개변수 , 복귀주소, 로컬변수 와 같은 임시 자료를 갖고

Data 는 전역변수를 포함한다.

Heap 은 프로그램 실행중에 동적으로 할당되는 메모리이다.


PCB ( 프로세스 제어 블록 ) :

특정 프로세스에 대한 중요한 정보를 저장하고있는 운영체제의 자료구조.

운영체제는 프로세스를 생성함과 동시에 고유 PCB를 생성한다.

CPU를 할당받아 작업을 처리하다 프로세스를 전환해야한다면 진행중인 작업을 저장하고 CPU를 반환해아하는데 이때의 상황을 모두 PCB에 저장하게 되고 다시 시작한다면 PCB에 저장해놓은 내용을 불러와서 그 시점부터 작업을 수행한다.

즉 다수의 프로세스를 지원, 다중처리를 할 수 있게 해주는 중요한 구조이다.


스레드 : 

프로세스의 실행단위이다. 

한 프로세스 내에서 동작되는 여러 실행흐름으로 프로세스내의 주소 공간이나 자원을 공유할 수 있다.

스레드는 스레드 ID, 프로그램 카운터, 레지스터집합, 스택 으로 구성된다.

Code와 데이터 Heap등의 자원들은 공유한다.

하나의 프로세스를 다수의 실행단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화해서 수행능력을 향상시키는 것을 멀티스레딩 이라고 한다. 각각의 스레드는 독립적인 작업을 수행해야하기ㄸ문에 각자의 스택과 PC레지스터 값을 가지고있다.

 

- Stack 을 스레드마다 독립적으로 할당하는 이유는?

함수 호출 시 사용하는 인자 변수등이 저장되는 메모리 공간이 Stack 이다. 이것이 독립적이라는 것은 독립적인 함수 호출이 가능하다는 것이고 이것이 즉 독립적인 실행흐름이 보장된다는 것이다.

 

- PC 레지스터를 스레드마다 독립적으로 할당하는 이유는?

PC값은 (program counter) 다음에 실행될 명령의 주소를 갖고있는 장소로, 스레드가 명령어의 어디까지 수행했는지 나타나게 된다. 스레드가 CPU를 할당받았다가 스케줄러에 의해 선점당하면 어느부분까지 수행했는지 기억할 필요가 있기 때문에 스레드 별로 PC 레지스터를 독립적으로 할당해 주어야 한다.

 

 

반응형

'공부 > OS 공부' 카테고리의 다른 글

[OS 공부] 프로세스 동기화  (0) 2021.01.27
[OS 공부] 동기&비동기  (0) 2021.01.17
[OS 공부] CPU 스케줄러  (0) 2021.01.13
[OS 공부] 스케줄러  (0) 2021.01.10
[OS 공부] 멀티스레드 & 멀티프로세스  (0) 2021.01.09

댓글