일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 아키텍처
- ddd
- LAMBDA
- HEXO
- AWS
- amqp
- 알고리즘
- 회고
- React
- 백준
- github pages
- API Gateway
- Kafka
- 목표
- billing
- 메세지큐
- 2020년
- AWSKRUG
- 머신러닝
- Notion
- 노션
- serverless
- CloudWatch
- S3
- Zappa
- 도메인 주도 설계
- zookeeper
- finops
- 하이트진로
- Leetcode
- Today
- Total
인생은 고통의 연속
프로세스간 커뮤니케이션과 쓰레드 본문
반응형
프로세스간 커뮤니케이션
프로세스간 커뮤니케이션이 필요한 이유는 다음과 같다.
- 정보 공유(파일...)
- 연산 속도 증가
- 모듈성
- 보호
- 멀티테스킹의 편리함
프로세스간 커뮤니케이션 메커니즘은 크게 메모리 공유와 메세지 전달 방식 2가지가 있다.
메세지 전달(Message Passing)
대표적인 메세지 전달 방식은 pipes, sockets, remote procedure calls가 있다
- 직/간접 커뮤니케이션 - 프로세스 or ports
- 고정 or 변화가능한 사이즈
- copy or reference로 보내기
- automatic or explicit buffering
- blocking or non-blocking(send or receive)
Threads
전용 주소 공간 없이 실행 중인 프로그램
OS에서 memory protection은 프로세스에서만 허용된다.
Threads vs Processes
- Process
- 하나의 주소 공간
- 프로그램 실행을 위한 단일 제어 쓰레드
- 상태 정보 : page tables, swap images, saved registers, file descriptors...
- Threads
- 프로세스의 나머지 정의와 실행의 분리된 개념
- 다른 쓰레드와 함께 잠재적으로 어떤 부분을 공유할 수 있다.
- 시스템 스케줄러에 의해 커널 레벨에서 핸들링된다.
- 유저 모드에서 유저 레벨로 핸들딩된다.
왜 쓰레드를 써야할까?
병렬처리할때 멀티프로세스를 안쓰고 멀티쓰레드를 쓰는 이유는??
- 메모리 공유가능
- 쓰레드 간의 효과적인 동기화
- 낮은 context switch 오버헤드(overhead)
유저/커널 쓰레드(User/kernel Threads)
- 유저 쓰레드 : 유저 모드 메모리에서 쓰레드 데이터 구조. 유저 모드에서 스케쥴링과 스위칭이 일어난다.
- 장점
- 가볍다 : context switch 오버헤드가 적다
- 더 효과적인 동기화
- 유연성 : 어플리케이션에서 스케쥴링되도록 허용된다.
- 단점
- 1개 이상의 프로세스를 사용할 수 없음
- 커널 이벤트를 명확히 알지 못함 : 하나만 IO를 처리해도 프로세스의 모든 쓰레드가 대기한다.
- 커널 쓰레드 : 커널 메모리에서 쓰레드 데이터 구조. OS 커널에서 스케쥴링과 스위칭이 일어난다.
유저 쓰레드
반응형
'프로그래밍 > OS' 카테고리의 다른 글
동기화 원칙(임계영역, 뮤텍스, 세마포어) (0) | 2019.01.28 |
---|---|
운영체제 구조 (0) | 2019.01.21 |
운영체제란? (0) | 2019.01.21 |
Comments