address space: 프로세스의 주소 공간
stack: function의 데이터(지역변수들을 저장할 때는 위에서 아래로 저장이 됩니다.)
data: 전역변수와 상수가 저장되는 구역입니다.
text: program의 코드 일부가 메모리에 올라가는데 이를 text라고 합니다.
dispatcher가 지금 일하고 있는 process를 바꿔야할 때,
이 변경하는 과정 자체를 context switch라고 합니다.
→ 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정!
context switch는 멀티테스킹에서 중요한 역할을 합니다.
context switch하는 시간은 매우 아까운 시간입니다. == 퍼포먼스를 높이려면 이러한 오버헤드가 짧으면 짧을수록 좋습니다.
New: 프로세스가 새롭게 만들어지는 것.
Running: 모든 process는 이 상태에 존재하기 위한 여정입니다. process가 queue에서 가져와지는 과정.
Ready: running으로 가려면 이 상태를 거쳐야합니다. queue에 들어오는 것이 ready 상태, time-out은 running으로 간 프로세스가 시간이 다 되었는데도 끝내지못한다면 queue로 다시 들어오는 것을 말합니다.
Waiting: timeout은 비자발적으로 일어나는 것. 다른 일이 생겼을 때는 waiting으로 온다. 일이 다 끝나면 ready로 갑니다!
terminated: 프로세스가 종료되는 과정. 할당한 자원을 모두 회수합니다.
→ CPU 사용량을 최대로 올리기 위하여 스케줄링을 한다.
scheduler는 ready에 존재하는 프로세스를 running으로 보내는 역할을 합니다.
ready에 존재하는 queue는 Priority Queue입니다.
long term: 어떤 친구를 메모리에 올려줄 것인지 정하는 스케줄러
short term: 메모리에 올려져 있는 친구들 중 CPU에 올려줄 친구를 정하는 스케줄러
멀티 프로그래밍(Multi Programming)
멀티 태스킹(Multi Tasking)
멀티 쓰레딩(Multi Threading)