소프트웨어 스레드와 하드웨어 스레드

LeeYulhee·2023년 9월 5일
0

👉 소프트웨어 스레드 개념


  • 소프트웨어 측면의 스레드는 프로그램 내에서 실행되는 독립적인 작업 단위
  • 프로그램이 동시에 여러 작업을 수행할 수 있게 하는 것
  • 예를 들어, 웹 브라우저에서 하나의 탭은 하나의 스레드가 될 수 있음
  • 사용 예시
    • 데이터베이스 쿼리, 파일 I/O, 사용자 인터페이스 갱신 등 다양한 작업을 동시에 수행해야 할 때 스레드를 사용



👉 소프트웨어 스레드 역할


  • 비동기 처리
    • 여러 작업을 동시에 수행해야 할 때 스레드를 사용
  • 리소스 공유
    • 같은 프로세스 내의 스레드끼리는 메모리와 변수 등을 공유할 수 있음
  • 작업 분할
    • 복잡하고 시간이 많이 걸리는 작업을 여러 스레드로 나눠서 빠르게 처리할 수 있음



👉 하드웨어 스레드 개념


  • 하드웨어 측면의 스레드는 CPU의 물리적인 코어에서 실행되는 명령어의 시퀀스
  • CPU에서 실제로 명령어를 처리하는 단위
  • CPU에는 여러 개의 코어가 있고, 각 코어는 하나 이상의 하드웨어 스레드를 처리할 수 있음
  • 사용 예시
    • 인텔의 하이퍼스레딩 기술은 물리적인 코어 하나가 두 개의 하드웨어 스레드를 동시에 처리할 수 있게 해줌



👉 하드웨어 스레드 역할


  • 명령어 실행
    • CPU는 하드웨어 스레드를 통해 실제로 명령어를 실행
  • 병렬 처리
    • 다중 코어나 다중 스레딩 기능을 가진 CPU는 여러 하드웨어 스레드를 동시에 처리할 수 있음



👉 소프트웨어 스레드와 하드웨어 스레드의 연관 관계


  • 운영체제의 역할
    • 운영체제가 소프트웨어 스레드를 관리해서, 어떤 스레드가 어떤 하드웨어 스레드 (CPU 코어) 에서 실행될지를 결정
    • 이를 스케줄링이라고 함
  • 시간 분할
    • 하드웨어 스레드가 한정되어 있기 때문에, 여러 소프트웨어 스레드는 '턴'을 돌아가며 하드웨어 스레드를 사용
    • 즉, 운영체제는 각 소프트웨어 스레드에게 일정 시간을 할당하여 CPU의 사용을 균등하게 분배
  • 하드웨어 한계
    • CPU 코어의 수가 제한되어 있으므로, 동시에 실행할 수 있는 소프트웨어 스레드의 수도 제한됨
    • 만약 CPU 코어가 4개라면, 최대 4개의 작업만 실제로 '동시에' 처리할 수 있음
  • 컨텍스트 스위칭
    • 하나의 하드웨어 스레드 (CPU 코어) 가 다른 소프트웨어 스레드로 변경될 때, 정보를 저장하고 불러오는 작업이 발생
    • 이러한 작업을 '컨텍스트 스위칭'이라고 하며, 이로 인해 약간의 시간이 소요
  • 여러 코어와 하이퍼스레딩
    • 현대의 CPU는 여러 코어를 가지고 있고, 하이퍼스레딩 같은 기술을 사용해 한 코어에서 두 개의 스레드를 동시에 처리할 수도 있음
    • 이렇게 해서 더 많은 소프트웨어 스레드를 효율적으로 실행할 수 있음
  • ⇒ 간단히 말해, 소프트웨어 스레드는 프로그램이 여러 작업을 할 수 있게 하고, 하드웨어 스레드는 그 작업들이 실제로 실행되는 '무대'라고 할 수 있음
    • 운영체제는 이 두 가지를 잘 조율하여 프로그램이 효율적으로 동작할 수 있도록 함
profile
공부 중인 신입 백엔드 개발자입니다

0개의 댓글