Thread

yshjft·2022년 1월 4일
0

운영체제

목록 보기
3/8

스레드란?

  • 프로세스 내에서 실행되는 여러 흐름의 단위 (프로세스의 실행 단위)

  • 스레드는 프로세스 내에서 각각 stack은 독립적으로 할당

    스택 독립적 → 독립적인 함수 호출 가능 → 독립적인 실행 흐름 추가 가능

  • PC 레지스터 값 또한 독립적으로 가지고 있다.

    • 레지스터(cpu 레지스터)
      CPU가 요청을 처리하기 위해 필요한 데이터를 일시적으로 저장하는 기억 장치

    • PC 레지스터
      레지스터의 한 종류로서 실행되어야할 명령어의 위치를 가리키고 있다.

  • 스레드는 code, data, heap 영역을 공유한다.

추가1) 자바 스레드란?(java thread)

  • 일반 스레드와 거의 차이가 없으며, JVM이 운영체제의 역할을 한다

  • 자바에는 프로세스 존재 ❌, 스레드만 존재

  • 자바 스레드는 JVM에 의해 관리되는 실행 단위 코드 블록 (스레드 스케줄링은 전적으로 JVM에 의해 이루어짐)

  • JVM이 관리하는 스레드 정보

    • 스레드 개수
    • 스레드로 실행되는 프로그램 코드의 메모리 위치
    • 스레드의 상태
    • 스레드 우선순위
  • 개발자는 자바 스레드 작동할 코드를 작성하고, 코드가 실행을 시작할 수 있도록 JVM에게 요청하는 것

추가2) 스레드 풀 && 커낵션 풀

스레드 풀(thread pool)

  • 요청마다 스레드를 생성할 경우
    • 스레드의 생성 비용은 비싸다
    • 요청 때마다 스레드를 새로 생성할 경우 응답 속도가 늦어진다
    • 컨텍스트 스위칭 문제가 발생한다
    • 스레드 생성에 제한이 없다 → 무제한 스레드 생성으로 컴퓨터가 뻗는다
  • 스레드 풀
    위와 같은 문제를 해결하고 스레드를 미리 생성하여 보관하고 관리하는 기법이다. 스레드가 필요하면 새로 생성하지 않고 스레드풀에서 보관하던 스레드를 꺼내서 사용한다. 사용을 종료하면 스레드 풀에 스레드를 반환한다.
  • 스레드 풀 장점
    • 스레드 생성 비용 절약되며 응답 시간은 단축된다.
    • 많은 요청이 들어와도 기존 요청을 안전하게 처리할 수 있다.

커낵션 풀(connection pool)

WAS(웹 컨테이너)가 실행 될 때 DB연결을 위해 미리 일정수의 connection 객체를 만들어 Pool에 담아 뒀다가 사용자의 요청이 발생하면 Pool에서 생성되어 있는 Connection 객체를 넘겨주고 사용자가 사용이 끝나면 Connection 객체를 다시 Pool에 반환하여 보관하는 기법이다.

  • 커낵션 풀 장점
    • 서버의 부하를 줄여준다
    • 한정적인 자원을 효율적으로 사용할 수 있도록 해준다

풀(pool)

결국 pool이라는 기법은 한정된 자원을 효율적으로 사용할 수 있도록 해주는 것을 목적으로 하는 기법 같다.

참고

profile
꾸준히 나아가자 🐢

0개의 댓글