코딩요
쉬운코드 기술 블로그
코딩요
전체 방문자
오늘
어제
  • 분류 전체보기 (54)
    • 개발자로 성장하기 (11)
    • 컴공 (25)
      • 운영체제 (12)
      • 알고리즘 (1)
      • 데이터베이스 (11)
      • 네트워크 (1)
    • 쉬운코드 (15)
      • 쉬운코드 소개 (6)
      • 쉬운코드 영상 보는 법 (3)
      • 쉬운코드 정정 보고서 (1)
      • 쉬운코드 스토리 (4)
      • 기타 이것저것 (1)
    • 면접 tip (3)

공지사항

  • 아이폰 앱에서는 슈퍼땡스 보내지 말아주세요ㅠㅠ
  • 쉬운코드 멤버십을 소개합니다
  • 쉬운코드 운영 철학

인기 글

hELLO · Designed By 정상우.
글쓰기 / 관리자
코딩요

쉬운코드 기술 블로그

기술 면접에서 흔히 말하는 스레드는 어떤 스레드일까?
컴공/운영체제

기술 면접에서 흔히 말하는 스레드는 어떤 스레드일까?

2022. 10. 3. 21:01

 

 

 

여러 맥락에서 스레드 개념이 존재한다

 

 

자바에도 스레드가 있고 파이썬에도 스레드가 있고

 

OS 레벨의 스레드가 있다 

 

그럼 우리가 흔히 말하는 스레드는, 기술 면접에서 물어보는 스레드는 어떤 스레드를 말하는 걸까??

 

이번 글을 이 부분을 다뤄보려고 한다

 

 

 

 

 


 

 

 

면접에서 물어보는 스레드는 OS 스레드

 

 

결론부터 얘기하면 면접에서 얘기하는 스레드는 보통 OS 레벨의 스레드를 의미한다

 

OS 레벨의 스레드의 개념과 특징을 간략하게 정리하면 아래와 같다

 

 

 

 

* CPU 코어에서 실행되는 단위다

 

* 프로세스는 여러 개의 스레드를 가질 수 있다

 

* OS에서 관리된다

 

* OS가 스케줄링한다

 

* native thread, OS thread, kernel level thread 등등 여러 형태로 불린다

 

 

 


 

 

 

자바에도 있고 파이썬에도 있는 스레드는 무엇?

 

 

그렇다면 자바에도 스레드가 있고 파이썬에도 스레드가 있는데 이 친구들은 무엇인가?

 

개발자가 프로그래밍을 할 때 OS 레벨의 스레드를 직접 사용할 일은 없다고 봐도 무방하다

 

그럼에도 우리가 스레드를 쓸 수 있는 것은 프로그래밍 언어가 OS 레벨의 스레드를 쓸 수 있도록 제공하기 때문이다

 

 

 

자바의 스레드, 파이썬의 스레드는

 

OS 레벨의 스레드를 wrapping(포장)해서

 

개발자가 좀 더 편하게 쓸 수 있는 형태로,

 

혹은 그 언어의 철학에 맞게 동작하는 형태로 가공된 스레드이다

 

그러면 우리는, 프로그래밍 언어가 제공하는 스레드를 통해서 OS 스레드를 쓰는 것이다

 

이렇게 프로그래밍 언어에서 제공하는 스레드를 유저 레벨 스레드라고 부른다

 

(사람마다 유저 레벨 스레드의 개념을 조금씩 다르게 정의할 수 있겠지만 나는 이렇게 정의하는 것이 제일 이해하기 쉽고 명확하다고 생각한다)

 

 

 

 

 

 


 

 

 

유저 레벨 스레드와 OS 레벨 스레드의 관계

 

 

그렇다면 여기서 추가로 중요한 부분이

 

'유저 레벨 스레드와 OS 레벨 스레드는 어떻게 맵핑되는가?'이다

 

크게 세 종류의 맵핑이 있는데

 

* 1:1 관계

 

* N:1 관계

 

* N:M 관계

 

 

가 있다. (왼쪽이 유저 레벨 스레드 수, 오른쪽이 OS 레벨 스레드 수를 의미한다)

 

 

 

 

 

자바의 스레드와 파이썬의 스레드는 OS 레벨 스레드와 1:1 관계이다

 

즉, 자바에서 스레드를 쓰는 것이나 파이썬에서 스레드를 쓰는 것은 OS 레벨의 스레드를 바로 쓰는 것이라고 볼 수 있고

 

이때 스레드를 생성하고 스케줄링하는 것은 OS에 위임된다고 볼 수 있다

 

 

 

 

 

쉬운코드는 기본에 진심입니다

 

 

 

 

 

👉👉👉 여러 종류의 스레드를 설명하는 영상 보러 가기

 

 
저작자표시 비영리 변경금지 (새창열림)
    '컴공/운영체제' 카테고리의 다른 글
    • 운영체제에서 락(lock)을 배우는 이유
    • 스레드 컨텍스트 스위칭이 가벼운 이유
    • CPU 코어에서 컨텍스트 스위칭 되는 건 프로세스일까 스레드일까
    • OS 프로세스 상태(state) 변화, 간결한 설명!
    코딩요
    코딩요
    8년차 백엔드 개발자가 이해하기 쉽게 설명합니다. 배워서 남주는 블로그! 이해하기 쉬운 기술 블로그! 쉬운코드입니다 :)

    티스토리툴바