스레드의 개념
프로세스의 코드에 정의된 절차에 따라 CPU에 작업을 요청하는 실행 단위
프로세스의 작업 과정
- 운영체제는 코드와 데이터를 메모리에 가져옴
- 프로세스 제어 블록을 생성
- 작업에 필요한 메모리 영역을 확보
- 준비된 프로세스를 준비 큐에 삽입
- 프로세스가 생성되면 CPU스케쥴러는 프로세스가 해야할 일을 CPU에 전달(CPU가 실제작업을 수행)
- CPU스케쥴러가 CPU에 전달하는 일 하나가 스레드
따라서 CPU가 처리하는 작업의 단위는 프로세스로부터 전달받은 스레드
프로세스와 스레드의 차이
프로세스는 약하게 연결되어 있으나, 스레드끼리는 강하게 연결되어 있음
프로세스
모든 개별 프로세스에 서로 독립적, 순서를 바꿔 실행해도 무관하다
스레드
순서에 상관이 있으며, 한 프로세스 내에 여러가지의 작업들을 의미
멀티 태스크
운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법
서로 독립적으로 작동하는 프로세서를 말하며, 어떤 하나가 비정상 종료 되어도 다른 프로세서는 영향을 받지 않음
서로 독립적인 프로세스는 데이터를 주고받을 때 프로세스 간 통신(IPC)을 이용멀티 스레드
프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 프로세스 운영 기법
한 프로세스 내의 여러가지 스레드들이 동시에 작업을 하는 것
이러한 스레드들은 강하게 연결 되어 있어 프로세서가 종료되면 프로세스 내의 스레드도 강제 종료됨
스레드 간 통신은 변수나 파일 등을 공유하고 전역 변수함수 호출 등의 방법을 사용
멀티 프로세싱
CPU를 여러개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경
CPU 멀티스레드
한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 병렬 처리 기법
멀티스레드의 장단점
장점
응답성 향상
한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여 사용자의 작업 요구에 빨리 응답할 수 있음
자원 공유
한 프로세스 내에서 독립적인 스레드를 생성하면 프로세스가 가진자원을 모든 스레드가 공유하게 되어 작업을 원활하게 진행할 수 있음
효율성 향상
여러 개의 프로세스를 생성하는 것과 달리 멀티스레드는 불필요한 자원의 중복을 막음으로써 시스템의 효율이 향상됨
다중 CPU 지원
2개 이상의 CPU를 가진 컴퓨터에서 멀티스레드를 사용하면 다중 CPU가 멀티스레드를 동시에 처리하여 CPU 사용량이 증가하고 프로세스의 처리 시간이 단축됨단점
한 스레드에 문제가 생기면 전체 프로세스에 영향을 미침