이전에 프로세스와 스레드에 대하여 정리를 한 적이 있지만, 공부하기 위해서 다시 정리를 하기로 하였다.
단순 프로세스와 스레드에 대한 설명은 생략하고, 차이점에 대해서만 집중적으로 정리를 해보자면
실행 단위
프로세스는 운영체제로부터 자원을 할당받아 독립적으로 실행되는 프로그램 단위이다. 각각의 프로세스는 독립된 주소 공간, 파일, 메모리등을 가지며, 각각이 별도의 작업을 수행한다.
스레드는 프로세스 내에서 실행되는 작업단위로, 프로세스의 자원을 공유하면서 실행됩니다. 스레드는 동일한 프로세스 내에서 여러 개가 동시에 실행 될 수 있으며, 주소 공간과 자원을 공유하면서 작업을 수행합니다.
자원 공유
각각의 프로세스는 독립된 주소 공간을 가지고 있기 때문에 자원 공유가 어렵다. 프로세스 간에 자원을 공유하기 위해서는 파이프, 파일, 공유메모리 같은 특별한 메커니즘이 필요하다.
스레드는 동일한 프로세스 내에서 실행되므로, 프로세스의 자원을 공유할 수 있다. 스레드는 동일한 주소 공간을 가지고 있기 때문에 데이터 공유가 간단하고 효율적이다.
생성 및 소멸
프로세스는 독립적인 실행 단위로서, 운영체제에 의해 생성 및 소멸된다. 프로세스의 생성과 소멸에는 오버헤드가 발생할 수 있는데, 프로세스를 생성하거나 종료하는 과정에서 추가적인 시간, 자원 및 작업이 필요하다는 것을 의미한다.
스레드는 프로세스 내에서 생성되고 제거될 수 있는 작업 단위이다. 스레드의 생성과 소멸은 상대적으로 빠르고 경제적이다.
동작
각각의 프로세스는 독립적으로 실행되기 때문에 하나의 프로세스에 문제가 발생해도 다른 프로세스에는 영향을 미치지 않는다. 프로세스는 운영체제로부터 자원을 할당받아 실행되며, 각각의 프로세스는 독립적인 스케줄링 단위이다.
스레드는 프로세스 내에서 실행되는 작업단위로서 스레드는 프로세스의 자원을 공유하면서 실행되기 때문에, 동일한 주소 공간에서 작업을 수행합니다. 이로 인해 스레드 간에 데이터 공유가 간단하고 효율적이다.
스레드는 동시에 실행될 수 있으며, 스레드 간에는 일정한 우선순위나 스케줄링 정책에 따라 작업이 조율된다.
오류 및 안정성
프로세스는 독립적으로 실행되기 때문에 하나의 프로세스가 오류를 발생시키더라도 다른 프로세스에는 영향을 주지 않는다.
하지만 프로세스간에는 통신 및 동기화에 대한 추가적인 메커니즘이 필요해서 오버헤드가 발생할 수 있다.
스레드는 동일한 주소공간에서 실행되기 때문에 한 스레드가 오류를 발생시키면 전체 프로세스가 영향을 받을 수 있다.
또한 스레드 간에는 데이터 공유와 동기화 문제가 발생할 수 있으므로, 적잘한 동기화 메커니즘을 사용하여 안정성을 보장해야한다.
'Computer Science > OperatingSystem' 카테고리의 다른 글
[OS] 컨텍스트 스위칭이란?(Context Swiching) (CS스터디) (0) | 2023.07.07 |
---|---|
[OS] 요구 페이징 (0) | 2023.04.19 |
[OS] CPU 스케줄링이란? (0) | 2023.04.17 |
[OS] 참조의 지역성과 참조 집합 (0) | 2023.03.05 |
[OS] 가상 메모리(Virtual Memory System) 란? (0) | 2023.02.23 |