일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 |
- 멀티 프로그래밍
- JetBrains
- cross_val_score
- ML
- 결정트리
- 다항회귀
- 상호 배제
- 지니불순도
- featurescaling
- 머신러닝 #ml #선형대수학 #기본기
- ml
- 경쟁 조건
- Mutex lock
- 11049
- bootstrapping
- 에다 부스트
- 운영체제
- 머신러닝 #ml #기본기
- 속성중요도
- 머신러닝 #ml #미분 #기본기
- Kotlin
- jdk #javac #jre #java standard library #javadoc #jar #java
- db
- Mutual exclusion
- gridsearch
- 코틀린
- min-max
- 디자인 패턴 #싱글톤
- featureimportances
- Java
- Today
- Total
코딩하는 오리
[운영체제] 프로세스와 스레드 본문
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.
프로세스
스레드
스레드는 프로세스 내에서 실행되는 여러 흐름의 단위로, 프로세스가 할당 받은 자원을 이용하는 실행의 단위입니다
멀티 프로세스
멀티 프로세스는 하나의 프로그램을 여러 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하는 환경입니다.
- 프로세스는 운영체제로부터 CPU 시간, 주소공간, 독립된 메모리 영역(code, data, stack, heap)을 할당 받습니다.
- 각 프로세스는 독립된 주소 공간에서 실행되어 다른 프로세스의 주소 공간에 접근할 수 없습니다.(독립적)
- 프로세스간 IPC(Inter-Process-Communication)를 사용해 데이터를 주고 받습니다.
장점
- 독립된 구조이기 때문에 안정성이 높다. 하나의 프로세스가 죽어도 다른 프로세스가 영향을 받지 않는다.
단점
- 각각 독립된 메모리 영역을 가족 있어, 많은 메모리 공간과 CPU 시간을 차지하고 작업량이 많을 수록 오버헤드가 발생합니다.
- Context Switching 비용이 커 성능 저하가 따라올 수 있습니다.
멀티 스레드
같은 프로세스 내에 둘 이상의 스레드를 동시에 실행하는 환경을 멀티 스레드 환경이라 부릅니다. 기본적으로 하나의 프로세스가 생성되면 하나의 스레드가 생성되고, 이를 메인 스레드라 부릅니다.
장점
- 적은 메모리 공간을 차지하고 Context Switching이 빠릅니다.
- 프로그램의 응답 시간이 단축되고 시스템의 처리율이 향상됩니다.
- 시스템의 자원을 공유하므로 시스템의 자원 소모가 감소합니다(자원 효율성 증대)
- 프로세스간 통신(IPC)에 비해 통신 비용이 절감됩니다
단점
- 여러 개의 스레드가 자원을 공유하기 때문에 동기화 문제, 병목 현상을 고려해야 합니다
- 하나의 스레드에 문제가 발생하면 전체 스레드에 영향을 미칩니다.
- 동시성 : 멀티 작업을 위해 싱글 코어에서 여러 개의 쓰레드가 번갈아 실행하는 것을 말합니다. 즉, 문맥교환이 빠르게 수행되면서 실제로는 번갈아가며 실행되는 것이지만 그 속도가 너무 빨라서 동시에 실행되는 것처럼 보여지는 것입니다.
- 병렬성 : 멀티 작업을 위해 멀티 코어에서 한 개 이상의 스레드를 포함하는 각 코어들을 동시에 실행하는 것을 말합니다.
용어 정리
멀티 프로세스
멀티 프로그래밍
프로세서가 입출력 작업의 종료를 대기할 동안 하나의 프로세서에서 다른 프로그램을 수행할 수 있도록 하는 것입니다.
멀티 태스킹