Home /OS/ 프로세스, 스레드
Post
Cancel

/OS/ 프로세스, 스레드



 
프로세스는 메모리 상에서 실행중인 프로그램을 말하며,
스레드는 이 프로세스 안에서 실행되는 흐름 단위를 말한다.
 
어플리케이션 하나가 프로세스이고,
그 안에서의 분기 처리가 스레드가 된다.

1. 프로세스


process

  • 운영체제로부터 자신만의 고유의 공간과 자원을 할당받는 작업의 단위



1-1. 프로세스의 문제점


  • 프로세스 생성에 큰 오버헤드가 있다. (프로세스를 생성할때 많은 시간이 소요됨)
  • 프로세스 컨텍스트 스위칭의 비효율성, 오버헤드가 큼
  • 프로세스 사이에 통신이 어렵다는점 (IPC 사용해야함)

✔️ IPC

  • 프로세스 간 통신(Inter-Process Communication, IPC)
  • 프로세스들 사이에 서로 데이터를 주고받는 행위 또는 그에 대한 방법이나 경로



2. 스레드


thread

  • 할당 받은 자원을 이용하는 실행의 단위
  • 프로세스 내에 여러개가 생길 수 있음
  • 다른 스레드와 공간과 자원을 공유하며 사용



스레드의 출현 목적


  • 프로세스보다 크기가 작은 실행 단위 필요
  • 프로세스의 생성 및 소멸에 따른 오버헤드 감소
  • 빠른 컨텍스트 스위칭
  • 프로세스들의 통신 시간, 방법 어려움 해소



스레드 주소공간


하나의 스레드가 동작하기 위해 총 6개의 공간이 있다.

  • (1) 사적공간
    • 스레드 코드 공간
    • 스레드 전용 전역변수 공간
    • 스택 공간
  • (2) 공유공간
    • 데이터 공간
    • 힙 공간이 있다
  • (3) 커널 스택



3. 멀티 프로세스 & 멀티 스레드




3-1. 멀티 프로세스


  • 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 하나의 작업(task)를 처리하는 것


  • 장점
    • 하나의 프로세스가 잘못 되어도 프로그램은 동작 함
  • 단점
    • context switching 비용 발생



3-2. 멀티 프로세스


  • 프로그램을 여러개의 쓰레드로 구성하고 각 쓰레드가 작업(task)를 처리하는 것


  • 장점
    • 시스템 자원 소모 감소
    • 처리 비용 감소(실행 속도 향상)
    • 쓰레드간 자원 공유(stack을 제외한 영역)
  • 단점
    • 디버깅 어려움
    • 동기화 이슈 발생
    • 하나의 쓰레드의 오류로 전체 프로세스에 문제 발생



4. Thread Safe


  • 여러 thread가 동시에 사용되어도 안전하단 것
  • 특정 함수 A 와 변수 AA 가 여러 스레드에서 호출되어도 하나의 스레드에서 호출했을 때와 같은 결과가 보장되어야 한다는 의미
  • 함수가 전역 변수를 참조하게 된다면 그 함수는 thread safe 하지 않은 결과가 나올 수 있음

✔️ 전역 변수



5. Context Switching


  • CPU 에서 여러 프로세스를 돌아가면서 작업을 처리하는데 이 과정
  • 동작중인 프로세스가 대기를 하면서 해당 프로세스의 상태(Context)를 보관하고 대기 하고 있다가
    다시 실행시 복구하는 비용(시간)




(참고)



공부한 내용을 여러글과 책 읽은 내용을 바탕으로 정리하고 있습니다.
좋은 글로 저의 공부에 도움을 주시는 분들께 감사드립니다.

This post is licensed under CC BY 4.0 by the author.