내 잡다한 노트

챕터3. 스레드 본문

운영체제

챕터3. 스레드

peanutwalnut 2022. 7. 24. 22:29

스레드

CPU가 작업을 할 때 프로세스가 CPU 스케쥴러에 선택받고 스케쥴러는 CPU에게 전달하는 일의 단위를 스레드라 한다. CPU는 스레드의 단위로 일을 한다. CPU에서 처리하는 작업의 단위. 

 

프로세스와 스레드

프로세스는 운영체제에서의 작업의 단위이고 스레드는 CPU에서의 작업의 단위이다.

프로세스끼리는 약하게 연결되어 있어 서로 영향을 크게 받지 않지만 스레드는 강하게 연결되어 있어 영향을

크게 받는다.

 

멀티스레드

프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄이는 기법.

 

멀티태스킹

운영체제가 CPU에 작업을 줄 때 시간을 잘게 나누어 배분하는 기법.

이런 시스템을 시분할 시스템이라 한다.

 

멀티 프로세싱

CPU를 여러개 사용하여 여러 개의 스레드를 동시에 처리하는 작업 환경. 병렬 처리에서의 슈퍼 스칼라 기법과 같다.

 

CPU 멀티스레드

한 번에 하나씩 처리해야 하는 스레드를 파이프라인 기법을 이용하여 동시에 여러 스레드를 처리하도록 만든 

병렬 처리 기법이다.

 

멀티스레드의 구조

fork()로 프로세스를 복사할 때 코드의 내용이나 데이터 영역에서 겹치는 부분이 많아 메모리가 낭비되는 경우가 있다.

그 낭비 요소를 제거하기 위해 스레드가 생겨나게 됐다.

프로세스를 복사하지 말고 스레드를 여러개 생성해 코드, 파일 등의 자원을 공유함으로써 자원의 낭비를 막고

효율성을 향상한다.

 

멀티스레드의 장단점

장점

자원의 중복을 막아 낭비를 줄인다. 

응답성 향상 : 한 스레드가 입출력으로 인해 작업이 진행되지 않더라도 다른 스레드가 작업을 계속하여

사용자의 작업 요구에 빨리 응답할 수 있다. ex) 비디오 플레이어

자원 공유

다중 cpu 지원

 

단점

자원을 공유하기 때문에 한 스레드에 문제가 생기면 전체 프로세스에 영향을 미친다.

IE는 하나에 문제가 생기면 전체가 종료된다. 반면에 크롬은 각각의 창이 독립적인 프로세스로 이루어져 있어서

다른 것에 영향을 미치는 것이 작다. (그래서 메모리 사용량이 큰건가...)

 

멀티스레드 모델

사용자 스레드

라이브러리에 의해 구현된 일반적인 스레드

운영체제가 멀티스레드를 지원하지 않을 때 사용하는 방법으로 초기의 스레드 시스템에서 이용됨.

라이브러리가 직접 스케줄링을 하고 작업에 필요한 ㅈ어보를 처리해서 문맥교환이 필요없다.

커널이 입장에선 하나의 스레드로 받아들여져서 1 to N 모델이라고 부른다.

보안이 약하다.

 

커널 스레드

커널이 직접 생성하고 관리하는 스레드.

커널이 멀티스레드를 지원하는 방식으로, 하나의 사용자 스레드가 하나의 커널 스레드와 연결돼서 1 to 1 모델이라고 부른다.

멀티 cpu를 사용할 수 있고, 하나의 스레드가 대기 상태에 있어도 다른 스레드는 작업을 계속할 수 있다.

또한 보안에 강하고 안정적으로 작동한다.