멀티 프로세싱
: 여러 개의 "프로세스", 멀티 프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것
- 이를 통해 하나 이상의 일을 병렬로 처리할 수 있음
- 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이용해서 처리할 수 있음
-> 신뢰성이 높음
cf)
동시성
: 하나의 코어에서 여러 개의 작업이 번갈아가며 실행
병렬성
: 멀티 코어에서 여러 작업을 동시에 실행
동기
: 1개의 요청을 완료한 후 다른 요청을 실행하는 순차적인 방식
- 요청한 순서 대로 결과가 나옴
비동기
: 다중 실행 환경에서 여러 개의 요청이 선행 작업의 순서나 완료 여부와 상관없이 실행되는 방식
- 요청한 순서 대로 결과가 나오지 않음
IPC
: 프로세스끼리 데이터를 주고 받고 공유 데이터를 관리하는 메커니즘
- 멀티 프로세스는 IPC가 가능
공유 메모리
: 여러 프로그램이 동시에 접근할 수 있는 메모리
- 어떠한 매개체를 통해 데이터를 주고 받는 것이 아닌 메모리 자체를 공유하므로 불필요한 데이터 복사의 오버헤드가 발생하지 않음
-> 속도가 빠름
- 같은 영역을 여러 프로세스가 공유하므로 동기화가 필요
- 종류
- 파일 : 디스크에 저장된 데이터 또는 파일 서버에서 제공한 데이터
- 소켓 : 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점 -> TCP & UDP가 존재
- 익명 파이프 : 단방향 프로세스 간 통신에 사용할 수 있는 단순 FIFO 통신 채널 -> 쓰기 전용
- 명명 파이프 : 일반 파이프를 확장한 것
- 파이프 서버와 하나 이상의 파이프 클라이언트 간의 통신을 위한 명명된 단방향 또는 이중 파이프
- 클라언트 / 서버 통신을 위한 별도의 파이프를 제공
- 컴퓨터의 프로세스끼리 또는 다른 네트워크 상의 컴퓨터와도 통신 가능
cf)
파이프
: 병행성 매커니즘의 하나로서, 두 프로세스가 생산자-소비자 모델에 따라 통신할 수 있게 해주는 원형 버퍼
- 한 프로세스가 쓰고 다른 프로세스가 읽는 선입선출 형태의 큐
메세지 큐
: 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법
- 커널의 전역 변수 형태 등 커널에서 전역적으로 관리됨
- 메모리가 완전히 공유되는 스레드보다는 속도가 떨어짐
스레드
: 프로세스의 실행 가능한 가장 작은 단위
- 프로세스는 여러 스레드를 가질 수 있음
스레드 vs 프로세스
▶ 스레드
- 코드, 데이터, 힙은 스레드끼리 공유
- 그 외의 영역은 각자 생성
▶ 프로세스
- 코드, 데이터, 스택, 힙을 각각 생성
멀티 스레딩
: 프로세스 내 작업을 여러 개의 스레드, 멀티 스레드로 처리하는 기법
- 스레드끼리 서로 자원을 공유하므로 효율성이 높음
- 한 스레드에 문제가 생기면 다른 스레드에도 영향을 끼침
-> 스레드로 이루어져 있는 프로세스에 영향을 줄 수 있음
'운영체제' 카테고리의 다른 글
17. 교착 상태(DeadLock) (0) | 2025.02.10 |
---|---|
16. 동기화(스핀락, 세마포어, 뮤텍스) (0) | 2025.02.10 |
15. Paging : Smaller Table (0) | 2025.02.10 |
14. TLB(Translation Look-aside Buffers) 심화 (0) | 2025.02.10 |
13. TLB(Translation Look-aside Buffer) (0) | 2025.02.10 |