운영체제가 작업을 처리하는 단위는 프로세스임
사용자가 운영체제에게 작업을 요구하면 그만큼 프로세스의 수가 늘어남!
프로세스를 생성하면 PCB가 생성되고 메모리의 코드, 데이터, 스택, 힙 영역을 만들어줘야 하는데, 프로세스의 수가 많아지면 프로세스의 수만큼 이것들을 만들어줘야 하기 때문에 너무 무거워짐
예를 들어, 웹 브라우저의 탭을 20개 열면 프로세스의 복사가 20번이나 일어나게 되는 것임...
결국 웹브라우저가 메모리를 너무 많이 차지하게 됨..!
그래서 개발자들이 고안해낸 것이 쓰레드

✔️ 응답성
다중 쓰레드로 구성된 테스크 구조에서는 하나의 서버 스레드가 waiting 상태인 동안에도 동일한 테스크 내의 다른 쓰레드가 실행되어 빠른 처리를 할 수 있다. (웹 브라우저에서 이미지를 읽어오는 쓰레드와 텍스트를 읽어오는 쓰레드가 동시에 실행되어 빠르게 읽어올 수 있음)
✔️ 자원 공유
프로세스 내의 코드, 데이터 등을 공유하기 때문에 효율성이 높음
✔️ 경제성
프로세스와 비교했을 때,
쓰레드 생성, CPU switching의 오버헤드가 각각 30배, 5배 차이가 남(Solaris)
✔️ 안전성
쓰레드들은 동일한 주소 공간의 코드, 데이터, 힙 영역을 공유하고, 열린 파일과 같은 프로세스의 자원을 공유하기 때문에 멀티쓰레드 환경에서는 한 쓰레드에 생긴 문제가 프로세스 전체의 문제가 될 수 있다는 단점이 있음
참조
👨🏻🏫 이화여자대학교 운영체제 강의
👨🏻🏫 그림으로 쉽게 배우는 운영체제 - 인프런
📚 이것이 취업을 위한 컴퓨터 과학이다 with CS 기술 면접