-
프로세스와 스레드의 차이컴퓨터/운영체제 2021. 3. 24. 23:49
코딩 인터뷰 완전 분석 p.592
HTTP 완벽가이드 pp. 135-136
프로세스와 스레드 모두 하나의 프로그램이 여러 작업을 동시에 할 수 있게 해준다. 성능상 차이가 존재하여 고성능 서버는 멀티프로세스인 동시에 멀티 스레드다.프로세스와 스레드는 서로 관련은 있지만 기본적으로 다르다.
[ 프로세스 ]
- 프로세스는 실행되고 있는 프로그램의 인스턴스라고 생각할 수 있다. 프로세스는 CPU 시간이나 메모리 등의 시스템 자원이 할당되는 독립적인 개체이다.
- 어떤 프로그램의 자신만의 변수집합을 갖는 하나의 독립된 제어흐름- 프로세스는 별도의 주소 공간에서 실행된다.
- 한 프로세스는 다른 프로세스의 변수나 자료구조에 접근할 수 없다.
한 프로세스가 다른 프로세스의 자원에 접근하려면 프로세스 간 통신(inter-process communication)을 사용해야 한다.
프로세스간 통신 방법으로는 파이프, 파일, 소켓 등을 이용한 방법이 있다.
[ 스레드 ]
- 프로세스의 더 빠르고 더 효율적인 버전- 스레드는 프로세스의 특정한 수행 경로와 같다. 한 스레드가 프로세스 자원을 변경하면, 다른 이웃 스레드도 그 변경 결과를 즉시 볼 수 있다.
- 스레드는 프로세스 안에 존재하며 프로세스의 자원(힙 공간 등)을 공유한다.
- 같은 프로세스 안에 있는 여러 스레드들은 같은 힙 공간을 공유한다.
프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
각각의 스레드는 별도의 레지스터와 스택을 갖고 있지만, 힙 메모리는 서로 읽고 쓸 수 있다.
- 스레드가 미리 생성되는 시스템을 작업자풀(worker pool) 시스템이라고 부른다. 스레드들의 집합이 수행할 작업을 풀에서 기다리기 때문이다.'컴퓨터 > 운영체제' 카테고리의 다른 글
[ 운영체제 ] 세마포어( Semaphore ) 와 Mutex, deadlock, starvation, priority inversion (0) 2020.11.15