ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 쓰레드
    Computer Science 2025. 3. 25. 19:36
    반응형

    프로세스(Process)

    프로세스란 실행중인 프로그램을 의미합니다.

    프로세스는 운영체제(OS)로 부터 자원을 할당 받아서 동작합니다.

     

     

    프로그램(Program): 동작을 하지 않는 정적, 수동적인 개체

    프로세스(Process): 동작하는 능동적인 개체

    자원(Resource): CPU, Memory, IO, File, Network 등 컴퓨팅 자원

    동작: 처리장치가 프로세스의 명령을 수행하는 것

     

     

    프로세스 관리자는 프로세스를 생성 및 종료하고, 프로세스를 실행시키기 위해 CPU를 할당하는 등의 스케줄링 작업, 프로세스의 상태관리 등의 작업을 합니다.

     

     

    프로세스의 구성

    메모리 구조

    프로그램 실행에 직접적으로 필요한 코드와 데이터입니다.

     

    프로세스의 메모리 구조에 있는 영역들은 다음과 같습니다.

    • 코드 영역: 어셈블리 형태의 프로그램 그 자체
    • 데이터 영역: 프로그램이 실행될 때 필요한 데이터(상수 또는 변수의 값, 서브 프로그램의 호출 상태 등)

     

    데이터 영역은 사용되는 방식에 따라 세부적으로 또 나뉩니다.

    • 정적 데이터 영역: 상수 또는 전역 변수처럼 프로그램 시작부터 끝까지 관리되어야 하는 데이터 보관
    • 스택 영역: 서브 프로그램에 대한 정보, 지역 변수 등의 데이터 보관
    • 힙 영역: 동적 변수 중에서 사용자가 할당하는 데이터 보관

    요소들에 따라 서로 데이터가 저장되고 관리되는 데이터 영역이 다릅니다.

     

    프로세스 제어 블록

    프로세스 제어 블록(Process Control Block: PCB)은 운영체제가 프로세스를 제어하기 위해 필요한 운영체제에 있어서 중요한 정보들을 가지고 있는 블록입니다.

     

    아래와 같은 정보들을 관리합니다.

    • 프로세스 번호(PID): 해당 프로세스를 구분할 수 있는 프로세스마다 고유한 식별자
    • 프로세스 상태: 생성, 준비, 실행, 대기, 완료(종료) 등의 프로세스의 상태
    • 프로세스 카운터(PC): 현재 실행중인 명령어의 바로 다음 명령어의 위치를 가지고 있음. (위치를 보고 제어의 흐름을 확인 가능)
    • 레지스터: CPU가 사용하고 있는 여러가지 레지스터 값(값을 보관하고 있다가 다시 실행시 해당 값으로 이어서 처리)
    • 메모리 관리 정보: 메모리의 주소나, 가상 메모리의 맵핑 정보 등
    • 프로세스 우선순위: 프로세스 스케줄링에 사용되는 프로세스 우선순위 정보
    • 등등 ...

     

     

    전통적인 프로세스는 위와 같은 구조를 가지고 있어서

    프로세스는 하나의 프로그램을 실행하기 위한 기본적인 단위, 자원 소유의 단위, 디스패칭의 단위였습니다.

     

    그러나 PCB에 PC를 하나만 갖게 되기 때문에 프로세스 내에서 다중처리가 불가능 하다는 단점이 있었습니다.

     

    그래서 나온 개념이 쓰레드(Thread)입니다.

     

    쓰레드(Thread)

    쓰레드는 프로세스 내에서 다중처리를 위해 실행의 개념만 분리하여 제안된 개념입니다.

    쓰레드는 하나의 프로그램을 실행하기 위한 기본적인 단위이며, 디스패칭의 단위입니다.

     

    쓰레드가 여러 개 있는 프로세스

    쓰레드는 기존에 프로세스의 PCB에서 관리하던 PC와 레지스터, 상태 등의 정보를 가지고 있고, 각각의 쓰레드마다 스택영역이 나뉘어서 따로따로 제어를 합니다.

     

    쓰레드들 마다 프로그램 코드의 다른 위치를 PC에 담고 처리가 가능하기에 다중처리가 가능합니다.

     

     

    댓글

Designed by Tistory.