ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4일차 - 스레드(Thread)
    CS지식/운영체제 2021. 4. 15. 21:41

    오늘은 저번시간에 이어 쓰레드에 대해 배웠다. 기술면접에서 스레드와 프로세스의 차이점에 대해 물어본다는 얘기를 들은 적이 있다.

    그것도 대비하고 정확히 차이점을 알기 위해 집중해서 들었다.

     

     

    1. 쓰레드란?

    쓰레드의 정의를 먼저 얘기해보면 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.

    이렇게 정의만 봤을 때는 정확히 무엇을 의미하는지 잘 모르겠다.

    간단히 얘기하면, 프로세스 하나에 CPU 수행단위를 여러 개 둘 수 있는데 그 하나의 단위를 쓰레드라고 한다.

    CPU수행단위를 여러 개 둔다는 것은 또 뭘까?

    예를 들어서 설명해보자.

    만약, 우리가 Chrome이라는 웹 브라우저 프로그램을 실행하여 네이버에 접속했다고 하자.

    이것은 프로세스가 된다.

    그리고 다른 웹에 접속하기 위해 Chrome 프로그램을 또 실행시켰다고 하자.

    이것도 프로세스가 된다.

    이렇게 여러 개의 chrome을 실행시켜서 프로세스가 따로 주소공간을 차지하면 매우 비효율적일 것이다.

    그래서 쓰레드를 사용하여 프로세스는 하나만 생성하고 공유할 것은 공유하고 따로 사용해야할 것은 사용하는 것이다.

     

     

    2. 쓰레드의 구성

    쓰레드의 구성은 어떻게 될까?

    위에서 공유하는 것은 공유하고 따로 사용하는 것은 따로 사용한다고 설명했다.

    그러면 먼저 따로 사용하는 것을 설명해보겠다.

    Program Counter, Register set, stack space 3가지가 존재한다.

    사실 3가지는 새로 생기는 것이 아니라 프로세스 때 이미 배운 것이다.

    즉, 쓰레드 1개 당 따로 개인적인 것이 생성되어 사용되는 것이다.

    프로세스의 주소공간의 stack 공간에는 쓰레드 별로 stack이 생성된다.

    그리고 커널 주소공간의 데이터 공간에 프로세스 별로 PCB가 생성된다고 얘기했다.

    이 PCB에 program counter와 register정보가 저장되는데 이것 또한 쓰레드 별로 생성이 된다.

     

    그러면 공유되는 것은 무엇일까?

    위 3가지를 제외한 모든 것이 공유된다고 보면된다.

    프로세의 주소공간의 data 공간과 code 공간, PCB의 program counter, register을 제외한 모든 부분을 말한다.

     

     

    3. 쓰레드의 장점

    프로세스를 여러 개 생성하면 사실 쓰레드가 필요없기는 하다.

    그런데, 쓰레드가 프로세스를 여러 개 생성하는 것보다 장점이 있기 때문에 쓰레드가 사용되는 것이다.

    장점은 무엇일까?

     

    1) Responsiveness

    쓰레드는 사용하면 응답성이 증가한다.

    예를 들어, 우리가 웹에서 어떠한 페이지에 접속하는 것을 생각해보자.

    웹 서버에 우리가 접속할 것을 요청하고 웹에 표현될 사진이나 글 등을 요청하여 받아와야 한다.

    만약 쓰레드가 없다면 모든 것이 순차적으로 실행된 다음에 웹 전체화면이 보일 것이다.

    하지만 우리가 접하고 있는 것은 그렇지 않다.

    쓰레드로 실행되어 받아온 것을 먼저 보여주면서 서서히 접속이 완료되는 것을 볼 수 있다.

    이러한 것이 쓰레드의 첫 번째 장점이다.

     

    2) Resource Sharing

    쓰레드를 사용하면 자원 공유가 가능하다.

    위에서 말했듯이 공유가능한 부분은 쓰레드 별로 생성을 하지 않고 프로세스가 가진 하나를 공유가 가능하다.

     

     

    3) Economy

    쓰레드를 사용하면 경제성이 증가한다.

    2번 장점과 같이 자원의 공유가 가능해 메모리를 절약할 수 있어 경제성이 쓰레드의 장점 중 하나가 된다.

     

    'CS지식 > 운영체제' 카테고리의 다른 글

    6일차 - CPU Scheduling  (0) 2021.04.21
    5일차 - 프로세스 관리(Process Management)  (0) 2021.04.18
    3일차 - 프로세스(Process)  (0) 2021.04.13
    2일차-System Structure & Program Execution  (0) 2021.04.07
    1일차-운영체제란?  (0) 2021.04.03

    댓글

Designed by Tistory.