ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 프로세스와 스레드의 차이
    컴퓨터/운영체제 2021. 3. 24. 23:49

    코딩 인터뷰 완전 분석 p.592
    HTTP 완벽가이드 pp. 135-136

    프로세스와 스레드 모두 하나의 프로그램이 여러 작업을 동시에 할 수 있게 해준다. 성능상 차이가 존재하여 고성능 서버는 멀티프로세스인 동시에 멀티 스레드다.

    프로세스와 스레드는 서로 관련은 있지만 기본적으로 다르다.

    [ 프로세스 ]

    - 프로세스는 실행되고 있는 프로그램의 인스턴스라고 생각할 수 있다. 프로세스는 CPU 시간이나 메모리 등의 시스템 자원이 할당되는 독립적인 개체이다.
    - 어떤 프로그램의 자신만의 변수집합을 갖는 하나의 독립된 제어흐름

    - 프로세스는 별도의 주소 공간에서 실행된다.

    - 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.

    한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간 통신(inter-process communication)을 사용해야 한다.

    프로세스간 통신 방법으로는 파이프, 파일, 소켓 등을 이용한 방법이 있다.

     

    [ 스레드 ]
    - 프로세스의 더 빠르고 더 효율적인 버전

    - 스레드는 프로세스의 특정한 수행 경로와 같다. 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.

    - 스레드는 프로세스 안에 존재하며 프로세스의 자원(힙 공간 등)을 공유한다.

    - 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다.

    프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다. 

    각각의 스레드는 별도의 레지스터와 스택을 갖고 있지만, 힙 메모리는 서로 읽고 쓸 수 있다.

    - 스레드가 미리 생성되는 시스템을 작업자풀(worker pool) 시스템이라고 부른다. 스레드들의 집합이 수행할 작업을 풀에서 기다리기 때문이다.

     

    댓글

Designed by Tistory.