학습계획
Today I Learned
Process와 Thread의 차이
Process정의 & 종류
프로그램은 데이터 보조 기억장치에 저장된 데이터 덩어리 지만, 프로그램이 실행 되면 프로세스가 생성된다.
- foreground process
- 사용자가 볼 수 있는 공간에서 실행되는 프로세스
- background process
- 사용자가 볼 수 없는 공간에서 실행되는 프로세스
- 사용자와 직접 사용작용 프로세스
- 사용자와 상호작용하지 않고 정해진 일만 수행하는 프로세스
운영체제가 프로세스를 관리하는 방법
프로세스들은 돌아가며 한정된 시간만 CPU를 사용한다. 한정된 시간은 타이머 인터럽트에 의해 알려준다. 알림을 받은 프로세스는 다음 프로세스에게 CPU차례를 양보한다.
💡 타이머 인터럽트
- 하드웨어에서 인터럽트의 한 종류. 주기적으로 발생하는 클럭 신호
PCB(Process Control Block)
- 운영체제가 여러 프로세스를 관리하기 위한 자료구조
- 프로세스에 관한 정보가 들어있다.
- 운영체제 마다 조금 차이는 있지만 공통적으로 프로세스 아이디(PID), 레지스터 값, 프로세스 상태, CPU스케쥴링 정보, 메모리 정보등을 담고있다.
❓레지스터 값은 왜 PCB에 담길까?
컨텍스트 스위칭이 일어나 다시 자기 차례의 프로세스에 돌아올 경우 이전에 작업한 중간값을 복원하기 위해
💡 레지스터란?
CPU 내부 구성 요소 중 가장 중요한 세가지 중 하나(산술연산장치, 레지스터, 제어장치)
프로그램 속 명령어와 데이터가 실행 전후로 저장되는 CPU 내부의 작은 임시 저장 장치
프로세스 생성 시 PCB는 커널 영역에 생성 되며, 프로세스 종료 시 폐기된다.
Process - 문맥교환(context switch)
프로세스 간에 실행을 전환하는것
프로세스 문맥 교환은 독립적인 메모리 공간의 프로세스로 전환하므로 캐시메모리를 초기화 해야한다.
과정
프로세스의 문맥이 교환되는 현상을 context(현재 실행중이던 프로세스의 중간 정보들) switching이라고 한다.
- P1의 CPU 할당 시간이 끝난다.
- 현재 실행중이던 P1의 정보를 PC에 백업한다.
- P2의 정보(=문맥)을 PCB로 부터 복구한다.
Thread
- 스레드는 프로세스를 구성하는 실행 흐름 단위이다.
- 프로세스가 할당 받은 자원을 이용하는 실행의 단위
- 하나의 프로세스는 하나 이상의 스레드를 가질 수 있다.
- 스레드의 구성 요소
- 스레드 ID, 프로그램 카운터를 비롯한 레스지스터 값(실행에 필요한 최소한의 정보를 가짐)
- 스레드들 끼리는 프로세스가 보유한 자원을 공유한다. = 협력과 통신에 유리
- 프로세스 끼리는 자원을 공유하지 않음 = 독립적인 job 수행
- 프로세스 간에도 자원을 주고받을 수 있기도 함(IPC)
TCB(Thread Control Block)
- Thread 별로 존재하는 자료구조이며, 스레드 아이디, 스레드 상태, CPU정보, PCB를 가리키는 포인터를 가진다.
Thread - 문맥교환(context switch)
- 동일한 process 내에서 Thread 간에 실행을 전환것을 뜻한다.
- 스레드 문맥 교환은 공유하는 메모리 공간의 스레드로 전환 하므로 캐시메모리를 초기화 하지 않아도 된다.
- Process Context Switching과 같이 메모리 주소를 변경하지 않아 Thread Context Switching 비용이 적게 든다.
❓동일한 작업을 수행하는 단일 스레드 vs 단일 스레드 프로세스 여러개 실행
문자열 출력 프로그램을 세번 fork(복제)와 동일한 프로그램을 스레드를 세 개로 구성하였다. fork할 경우 모든 자원(코드영역, 데이터 영역, 힙 영역 등)이 복제되어 메모리에 적재된다. 이는 동일한 작업을 수햄함에 있어 메모리 사용 비효율을 야기한다. 멀티 스레드로 작업을 수행하면 자원 공유로 인해 메모리 사용이 효율적이다.
Process , Thread Context Switching의 공통점
- 커널모드에서 실행
- CPU의 레지스터 상태를 교체
[참고]
https://www.youtube.com/watch?v=zUGvpUtNlwI&ab_channel=한빛미디어
https://www.inflearn.com/questions/554010/context-switching과-cache-memory