728x90
멀티 프로세싱
멀티 프로세싱은 여러개의 '프로세스', 즉 멀티프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다.
이를 통해 하나 이상의 일을 병렬로 처리 할 수 있으며 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도
다른 프로세스를 이용해서 처리할 수 있으므로 신뢰성이 높은 강점 이있다.
웹브라우저
웹 브라우저는 멀티프로세스 구조를 가지고 있으며 다음과 같다.
- 브라우저 프로세스: 주소 표시줄, 북마크 막대, 뒤로 가기 버튼, 앞으로 가기 버튼 등을 담당하며
- 네트워크 요청이나 파일 접근 같은 권한을 담당한다.
- 렌더러 프로세스: 웹 사이트가 '보이는' 부분의 모든 것을 제어한다.
- 플러그인 프로세스: 웹 사이트에서 사용하는 플러그인을 제어한다.
- GPU 프로세스: GPU를 이용해서 화면을 그리는 부분을 제어한다.
IPC
- 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘
- 클라이언트가 데이터를 요청하고 서버는 클라이언트 요청에 응답하는 것도 IPC의 예
- 공유 메모리 : 공유 메모리를 통해 여러 프로세스가 하나의 메모리를 공유할 수 있다.IPC 중에서는 가장 빠르다.
- 메모리 자체를 공유하기 때문에 불필요한 데이터복사의 오버헤드가 발생하지 않아 가장 빠르고, 동기화가 필요하다.
- 파일 : 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터
- 소켓 : 동일한 컴퓨터의 다른 프로세스나 네트워크의 다른 컴퓨터로 네트워크 인터페이스를 통해 전송하는 데이터
- 익명 파이프 : 프로세스 간에 FIFO 방식으로 읽히는 임시 공간인 파이프를 기반으로 데이터를 주고받으며, 부모, 자식 프로세스 간에만 사용할 수 있으며 다른 네트워크상에서는 사용이 불가능
- 단방향 방식의 읽기 전용, 쓰기 전용 파이프를 만들어서 작동하는 방식
- 명명된 파이프 : 파이프 서버와 하나 이상의 파이프 클라이언트 간의 통신을 위한 명명된 단방향 또는 이중 파이프
- 서버용 파이프와 클라이언트용 파이프로 구분해서 작동하며 하나의 인스턴스를 열거나 여러 개의 인스턴스를 기반으로 통신한다.
- 메시지 큐 : 메시지를 큐 데이터 구조 형태로 관리하는 것을 말한다.공유 메모리의 대안으로 많이 사용한다.(쓰기 및 읽기 빈도가 높으면 동기화 때문에 구현이 복잡해지기 때문에)
- 커널에서 전역적으로 관리되며 다른 IPC 방식에 비해서 사용 방법이 매우 직관적이고 간단하다.
스레드 와 멀티 스레딩
스레드
스레드는 프로세스의 실행 가능한 가장 작은 단위를 말하며 프로세스는 여러 스레드를 가 질수 있다.
코드, 데이터, 스택, 힙을 각각 생성하는 프로세스와는 달리 스레드는 코드, 데이터, 스택, 힙은 스레드 끼리 서로 공유한다.
2. 멀티 스레딩
- 프로세스 내 작업을 여러 개의 스레드, 멀티 스레드로 처리하는 기법이며 스레드끼리 서로 자원을 공유하기 때문에 효율성이 높다.
- 한 스레드가 중단되어도 다른 스레드는 실행 상태일 수 있기 때문에 중단되지 않은 빠른 처리가 가능하다.
- 그러나, 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼쳐 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있는 단점이 있다. 멀티 스레드는 여러개의 스레드를 말하는 것이고, 멀티스레딩을 이를 기반으로 수행하는 것을 말한다.
- 멀티 스레드와 멀티 스레딩은 같은 의미인가?
- 예) 웹 브라우저 : 웹 브라우저의 렌더러 프로세스
이 프로세스 내에는 메인 스레드, 워커 스레드, 컴포지터 스레드, 레스터 스레드가 존재 한다.
참조: 면접을 위한 CS 전공지식 노트
728x90
'CS' 카테고리의 다른 글
CPU 스케줄링 알고리즘 (0) | 2023.01.16 |
---|---|
공유자원 과 임계영역 & 교착상태 (0) | 2023.01.15 |
프로세스의 메모리 구조 와 PCB (0) | 2023.01.13 |
메모리 관리 (0) | 2023.01.11 |
메모리 계층 (0) | 2023.01.10 |