process
프로세서에 의해 실행되고 있는 프로그램
process의 구조
- code: 프로그램 명령이 위치한 곳
- data: 전역 변수나 static 변수의 할당을 위해 존재하는 공간
- stack: 지연 변수 할당, 함수 호출 시 전달되는 인자 값들을 저장하기 위한 공간(). 제어를 위해 필요한 데이터
- heap: Java의 new를 통한 동적 할당을 위해 존재하는 공간
thread
- 프로그램의 실행 단위
- 역할: 프로세스가 할당 받은 자원을 통해 제어
첨언
- CPU 스케줄러는 프로세스가 해야할 일을 CPU에게 전달하고 실제 작업은 CPU가 수행
- 스케줄러가 CPU에 전달하는 일 하나가 스레드!
- OS 입장에서 작업 단위는 프로세스이고, CPU 입장에서의 작업 단위는 스레드이다.
therad의 구조
- register
- stack
register가 thread 영역에 있다?
- register은 cpu 영역이 아니었던가 의문이 들 수 있다.
- 결론만 말하자면, thread가 갖고 있는 register의 의미는 "저장된 상태" 이다.
- context switching 발생하면, 현재 프로세스 상태 정보(state segment) 저장하고 종료
- 따라서, register 값이 stack에 저장되고 종료된다.
참고
'OS' 카테고리의 다른 글
Concurrency vs Parallelism (0) | 2022.02.10 |
---|---|
[OS] Lecture 6. Process Synchronization and Mutual Exclusion (1/7) - Introduction (0) | 2022.02.05 |
[OS] Lecture 5. Process Scheduling (4/4) - MLQ, MFQ (0) | 2022.02.05 |
[OS] Lecture 5. Process Scheduling (3/4) - SPN, SRTN, HRRN (0) | 2022.02.05 |
[OS] Lecture 5. Process Scheduling (2/4) - FCFS, RR (0) | 2022.02.05 |