오래 못 할 짓 하지 않기
[ 운영체제 ] 5. Thread 본문
스레드(thread)
: 프로세스를 구성하는 실행 흐름의 단위
하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
● 실행 흐름이 하나인 프로세스 ( = 단일 스레드 프로세스 )
● 실행 흐름이 여러 개인 프로세스 ( = 멀티 스레드 프로세스 )
→ 프로세스를 이루는 여러 명령어를 동시에 실행 가능하다.
어떻게 여러 스레드가 동시에 나누어져서 실행될 수 있을까??
● 스레드의 구성요소
: 스레드 ID / PC를 비롯한 Register 값 / Stack
실행에 필요한 최소한의 정보를 유지한 채 실행된다.
하지만 하나의 프로세스 내에 있는 스레드들은
해당 프로세스의 자원을 공유할 수 있다.
멀티 프로세스 vs 멀티 스레드
동일한 작업을 수행하는 단일 스레드 / 프로세스 여러 개 [ = 멀티 프로세스 ]
VS
" " " " 하나의 프로세스를 여러 스레드로 실행 [ = 멀티 스레드 ]
어떤 차이가 있을까?
예) hello,os 3번 출력해 봐라
[ 차이점 ]
자원 공유
프로세스끼리는 자원 공유 X / 스레드끼리는 자원 공유 O
프로세스를 fork하면 모든 자원이 복제되어 저장됨.
= (저장된 메모리 주소 외에) 모든 것이 동일한 프로세스 두 개가 통째로 메모리에 적재
위 사진은 멀티 프로세스이고
아래 사진은 멀티 스레드이다.
요약
때로는 자원을 공유한다는 점이 문제가 될 수가 있다.
하나의 스레드에 문제가 생기면, 다른(모든) 스레드에 문제가 생길 수 있다.
프로세스간 자원을 공유하지 않는다.
- 프로세스 간에도 자원을 주고받을 수 있다 : 프로세스 간 통신 (IPC)
- 파일을 통한 프로세스 간 통신, 공유 메모리를 통한 프로세스 간 통신
스레드는 프로세스의 자원을 공유한다.
(출처)
유튜브 한빛미디어
'3학년 1학기 > 운영체제 (OS)' 카테고리의 다른 글
[ 운영체제 ] 7. CPU 스케줄링 (0) | 2024.01.09 |
---|---|
[ 운영체제 ] 6. 프로세스 / 스레드 확인 (with Python) (0) | 2024.01.08 |
[ 운영체제 ] 4. 프로세스 상태 및 계층구조 (0) | 2024.01.04 |
[ 운영체제 ] 3. 프로세스 개요 (프로세스 메모리 영역) (0) | 2024.01.03 |
[ 운영체제 ] 2. OS Overview (커널, 서비스 종류 , 시스템 콜, 이중모드) (0) | 2023.12.30 |