프로세스와 쓰레드

프로세스(process)

 - 윈도우 기본 요소

 - 프로세스 메모리 주소 공간 :

· 프로그램을 실행시키기 위해 사용

  · 각 프로그램은 자신만의 고유한 주소 공간에서 실행되는 것을 보장하기 위한 것

· 시스템은 프로세스 주소공간 안에 코드 모듈을 로드

· 실행되는 프로세스는 반드시 최소 하나 이상의 쓰레드를 가져야 함

 

쓰레드(thread)

 - 가장 기본적인 코드 실행 유닛

 - 매 순간마다 프로세스는 항상 쓰레드를 실행 시킴(, 실행코드를 실행함)

 - 쓰레드가 마지막으로 실행됐을 때의 프로세스 상태를 시스템에게 알려주는 CONTEXT Data 구조체와 스택공간으로 사용된 하나 또는 두개의 메모리 공간이 결합된 데이터 구조체일 뿐

 

- 유저모드코드와 커널모드커널을 번갈아 가면서 실행(하나의 쓰레드는 두개의 스택을 가질 수 있음)

-  유저모드스택과 커널모드스택 분리(보안성, 안정성)

 

scheduler and dispatcher

- 스케줄러와 디스페처에 의해 쓰레드 관리

- 어느 쓰레드를 얼마만큼의 시간동안 실행시킬지 판단하고, 현재 실행 중인 쓰레드를 다른 쓰레드로 바꾸기 위한 실질적인 컨텍스트 스위칭을 수행함

 

# 윈도우 커널은 선점형이고 인터럽트 가능함 → 이는 커널 모드에서 실행되고 있는 쓰레드는 유저모드의 쓰레드와 만찬가지로 인터럽트될 수 있음을 의미함

 

컨텍스트 스위칭

EX: 쓰레드가 CPU를 점유하고 그 쓰레드에 대한 실질적인 인터럽트를 수행하면 안되는 경우가 있음(예:GetMessage 처리 시)

이 때 커널은 프로세서의 전체상태를 저장하고 다른 쓰레드로 스위칭해서 그 쓰레드를 실행 시킴

어느 한 프로그램의 실행이 한가한 시점에는 충분히 다른 프로그램이 CPU를 사용할 수 있고 프로세서의 실행이 지연되는 것을 막기 위해 쓰레드 스위칭을 수행함

 

퀀텀(Quantum)

 - 모든 쓰레드가 연속적으로 실행될 수 있는 최대 크기의 시간

 - 커널은 로우레벨 하드웨어 타이머를 이용해서 쓰레드가 얼마 동안 실행되고 있는지 모니터링함


+ Recent posts