• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

리눅스 환경도 스레드 생성 원리는 동일한건가요?

23.11.15 09:18 작성 23.11.15 09:19 수정 조회수 297

0

  1. 리눅스도 마찬가지로 이해하면 될까요?

    O

    s 가 프로세스에게 적절한 메모리를 할당하여 프로세스에게 자원을(메모리 공간)을 주는 것으로 이해했습니다. 프로세스 안에 구성원들(쓰레드) 개별적인 행동을 하는 주체로 이루어져 있다고 이해했습니다. (

    PS) 저번에 어느 강좌인지는 기억이 안나지만 리눅스는 프로세스 중심 윈도우는 쓰레드 중심으로 자원을 분배한다고 들어서 구분이 필요한가 싶었습니다.

 

  1. 추가로 하나의 쓰레드들은 하나의 main을 실행 시킨다고 배웠습니다. 이게 여러 싱글 코어에서는 쓰레드들끼리 컨텍스트 스위칭을 하면서 동시에 실행이 되는 것처럼 보이는 concurrency 특성이 있다고 정리가 되었는데, 이때 쓰레들끼리는 멀티 쓰레드를 표현하는 것인가요? 멀티 쓰레드가 정확히 어느 레이어에서 사용하는지 구분 짓고 싶습니다. 다른 프로세스 안에 쓰레드를 말하는 것인지 코어들에서 쓰레드를 말하는 것인지 아니면 단일 프로세스 안에 쓰레드를 말하는지 정리가 안 돼서 질문드립니다.

정리를 하면서 수업을 들어야 하는데 업무랑 부족한 cs 지식이랑 빠르게 수용하려다 보니 걸리는 부분이 계속 생기는 거 같습니다. 항상 답변을 친절히 알려주셔서 감사합니다.

답변 1

답변을 작성해보세요.

1

  1. 네, 비슷합니다. Linux에서는 LWP라는 개념이 있습니다. 윈도우 계열 OS의 Thread와 개념적으로 매우 유사합니다. 결과적으로 구분 할 필요는 있겠습니다.

  2. 개념상 각 Thread의 시작과 끝은 main() 함수처럼 한 함수입니다. 그러니 개념적으로 각 Thread 마다 개별 main() 함수가 있다고 볼 수 있겠습니다. 그러나 이름이 main()인 것은 아닙니다. 그리고 한 프로세스 내부에 Thread가 2개 이상 존재하면 멀티스레딩이라 부릅니다. 특별히 레이어를 나눌 이 아니라 OS 수준에서 관리 방식이 다른 것으로 봐야 하겠습니다. 그리고 모든 스레드는 특정 프로세스에 종속되며 모든 프로세스는 적어도 1개 이상의 스레드를 갖습니다.

참고하시기 바랍니다. :)