ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Process vs Thread (프로세스 vs 쓰레드) 차이
    CS/OS 2022. 11. 2. 12:22

    프로세스를 이해하기 전에 프로그램에 대한 정의를 먼저 해보고자 한다.

     

     

    프로그램 -> 프로세스 -> 스레드

     

    1) 프로그램 -> 프로세스

     

    1-1) 프로그램

    파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태

    모든 프로그램은 운영체제가 실행되기 위한 메모리 공간을 할당해줘야 실행될 수 있다.

     

    1-1-1) 메모리에 올라가 있지 않은

    아직 운영체제가 프로그램에게 독립적인 메모리 공간을 할당해주지 않았다는 뜻

     

    1-1-2) 정적인 상태

    정적(靜的)이라는 단어 그대로, 움직이지 않는 상태라는 뜻이다. 한 마디로 아직 실행되지 않고 가만히 있다는 뜻

     


    👉 프로그램

    - 아직 실행되지 않은 파일 그 자체

    - 윈도우의 *.exe 파일이나 MacOS의 *.dmg 파일 등등 사용자가 눌러서 실행하기 전의 파일

    - 코드 덩어리

    - 더블 클릭하기 전

     

    👉 프로세스

    - 프로그램을 실행하는 순간 해당 파일은 컴퓨터 메모리에 올라가게 되고, 이 상태를 동적(動的)인 상태라고 하며 이 상태의 프로그램

    - 실행되고 있는 컴퓨터 프로그램

    - 스케줄링 단계에서의 "작업"과 같은 단어

    - 더블 클릭한 후

     

     

    2) 프로세스 -> 스레드

    운영체제는 안전성을 위해서 프로세스마다 자신에게 할당된 메모리 내의 정보에만 접근할 수 있도록 제약을 두고 있고

    한 프로그램을 처리하기 위해 여러 개의 프로세스를 만들면 그에 따른 단점이 발생한다. (후술)

     

    그래서 프로세스와는 다른 더 작은 실행 단위의 개념이 필요하게 되었고 그 개념이 바로 쓰레드이다.

     

    스레드는 프로세스와 다르게 스레드 간 메모리를 공유하며 작동한다. 
    스레드끼리 프로세스의 자원을 공유하면서 프로세스 실행 흐름의 일부가 되는 것이다. 

     

     


    👉스레드

    - 프로세스의 코드에 정의된 절차에 따라 실행되는 특정한 수행 경로

     

    3) 멀티쓰레드 vs 멀티태스킹(멀티프로세스)

    멀티태스킹이 하나의 운영 체제 안에서 여러 프로세스가 실행되는 것이라면, 
    멀티쓰레드는 하나의 프로세스가 여러 작업을 여러 스레드를 사용하여 동시에 처리하는 것을 의미한다.

     

    멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만

    멀티 쓰레드보다 많은 메모리 공간과 CPU 시간을 차지한다는 단점이 있다.

     

    멀티 쓰레드는 멀티 프로세스보다 적은 메모리 공간을 차지하고 문맥 전환이 빠르다는 장점이 있지만

    하나의 쓰레드에 문제가 생기면 전체 쓰레드가 영향을 받으며 동기화 문제도 있다는 단점이 있습니다.

     

    *컨텍스트 스위칭(문맥전환)

    하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태를 보관하고 새로운 프로세스의 상태를 적재하는 작업을 말한다.

     

    컨텍스트 스위칭을 수행하면 메모리에 올라와있던 것들을 보관하고 내린 다음 새롭게 메모리에 다시 적재해야해서 비용이 많이 들어감

     


    프로세스는 다른 프로세스와 정보를 공유하려면 IPC를 사용하는 등의 번거로운 과정을 거쳐야 하지만, 스레드는 기본 구조 자체가 메모리를 공유하는 구조이기 때문에 다른 스레드와 정보 공유가 쉽다. 때문에 멀티태스킹보다 멀티스레드가 자원을 아낄 수 있게 된다. 
    다만 스레드의 스케줄링은 운영체제가 처리하지 않기 때문에 프로그래머가 직접 동기화 문제에 대응할 수 있어야 한다.

     

     

     

    참고 : https://velog.io/@raejoonee/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%EC%99%80-%EC%8A%A4%EB%A0%88%EB%93%9C%EC%9D%98-%EC%B0%A8%EC%9D%B4

     

Designed by Tistory.