반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

멀티 프로세싱, 스레드와 멀티스레딩 본문

CS/운영체제

멀티 프로세싱, 스레드와 멀티스레딩

5_hyun 2022. 12. 18. 02:50

멀티 프로세싱

멀티 프로세싱은 여러 개의 프로세스를 통해 동시에 두 가지 이상의 일을 수행하는 것을 말한다.

장점으로는 병렬 처리가 가능하며 특정 프로세스의 메모리, 프로세스에 문제가 생겨도 다른 프로세스를 이용할 수 있어서 신뢰성이 높다.

웹 브라우저

웹 브라우저는 멀티 프로세스 구조를 가지고 있다.

 

1. 브라우저 프로세스: 주소 표시줄, 북마크 막대, 뒤로 가기, 앞으로 가기 버튼 등 + 네트워크 요청, 파일 접근 등 권한을 담당한다.

2. 렌더러 프로세스: 웹 사이트에서 보이는 모든 부분을 제어한다.

3. 플러그인 프로세스: 웹 사이트의 플러그인을 제어한다.

4. GPU 프로세스: GPU를 사용하여 화면을 그리는 부분을 제어한다.

 

-플러그인이란?

웹 브라우저의 일부 기능들을 쉽게 설치하여 사용하게 할 수 있는 프로그램

IPC(Inter Process Communication)

멀티 프로세스는 IPC가 가능하다. IPC는 프로세스끼리 데이터를 주고받는 공유 데이터를 관리하는 것을 의미한다.

ex) 클라이언트가 데이터를 요청하고 서버가 요청에 응답하는 것이 예시이다.

 

-종류

공유 메모리, 파일, 소켓, 익명 파이프, 명명 파이프, 메시지 큐

=> 메모리가 완전 공유가 되지 않아 스레드보다 느림

 

-공유 메모리(shared memory)

여러 프로세스가 공유 메모리에 접근할 수 있는 권한이 부여된다. 따라서 프로세스가 서로 통신할 수 있는 공유 버퍼를 생성하는 것을 말한다.

장점으로는 하나의 메모리에서 데이터를 공유하기 때문에 데이터 복사의 오버헤드가 발생하지 않아 불필요한 데이터가 발생하지 않고 빠르다. 하지만 메모리 영역을 여러 프로세스가 공유하여 사용하기 때문에 동기화가 필요하다.

ex) 하드웨어에서는 CPU가 접근 가능한 RAM(큰 랜덤 접근 메모리)가 공유 메모리이다.

 

-파일

파일은 디스크에 있는 데이터, 파일 혹은 서버에서 제공한 데이터를 말한다. 프로세스 기반으로 통신한다.

 

-소켓

동일한 컴퓨터에서 다른 프로세스나 네트워크 인터페이스를 통해 다른 컴퓨터로 전송하는 데이터를 의미한다.

ex) TCP와 UDP

 

-익명 파이프(unamed pipe)

익명 파이프는 프로세스 간에 FIFO 방식으로 파이프를 통해 데이터를 주고 받는다. 단방향으로 데이터를 주고 받으며 읽기 전용, 쓰기 전용 파이프를 만들어서 작동한다. 부모, 자식 프로세스 간에만 사용 가능하고 네트워크상에서는 사용하지 못한다.

 

-명명된 파이프(named pipe)

명명된 파이프는 서버와 클라이언트가 통신을 위한 단방향, 이중 파이프이다. 이중 파이프에서는 여러 파이프를 통시에 사용할 수 있다.

프로세스끼리, 다른 네트워크의 컴퓨터와도 통신이 가능하다.

그림처럼 보통 서버용 파이프, 클라이언트용 파이프를 구분해두고 하나의 인스턴스를 열거나 여러 개의 인스턴스를 기반으로 통신한다.

 

-메시지 큐(queue)

메시지 큐는 데이터 구조 형태로 관리하는 것을 의미한다. 커널에서 전역변수 형태로 전역적으로 관리되며 IPC 방식에 비해 간단하고 직관적이다. 또한 간단한 코드만 추가 시키면 간단하게 메시지 큐에 접근할 수 있다.

IPC는 공유 메모리를 사용하기 때문에 동기화를 구현하는 것이 복잡한데, 이 대안으로 메시지 큐를 사용할 수 있다.


스레드와 멀티스레딩

스레드

스레드는 프로세스에서 실행 가능한 가장 작은 단위이며 프로세스는 여러 개의 스레드를 가질 수 있다.

스레드는 코드, 데이터, 힙 영역을 서로 공유하고 그 외 영역은 따로 관리된다.

멀티스레딩

멀티스레딩은 프로세스 내의 작업을 여러 개의 스레드로 처리하는 것이다. 스레드는 자원을 서로 공유하기 때문에 멀티스레딩은 효율이 높다.

 

-예시

웹 브라우저의 렌더러 프로세스, 렌더러 프로세스 안에는 메인 스레드, 워커 스레드, 컴포지터 스레드, 레스터 스레드가 존재

 

-장점

1. 웹 요청 시 새 프로세스를 생성하는 대신 스레드를 사용하는 웹 서버는 적은 리소스를 소비한다.

2. 스레드가 중단돼도 다른 스레드를 사용할 수 있다.

3. 동시성에도 큰 장점이 있다.

 

-단점

서로 자원을 공유하기 때문에 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 프로세스에 영향을 줄 수 있다.

 

728x90
반응형
Comments