이전 포스팅에 이어서 Process와 context switch에 대해서 알아보자
Process : 실행중인 Program에서의 instace (Program : class, Process : object 라고 하기도 한다)
Process의 추상화를위한 2개의 중요한 key 가 있다.
1. Logical control flow : 각각의 program이 cpu를 전용으로 사용하고 있다는 환상을 제공한다.
2. Private address space : 각각의 program이 전용 메인 메모리를 가지고 있다는 환상을 제공한다.
Multiprocessing : 하나의 processor가 여러개의 process를 동시에 수행하는 방식
하나의 메모리는 가상주소로 나뉘어서 사용된다.(각각의 process는 가상 주소를 사용함)
실제 메모리는 동일하지만 각각의 process마다 가상공간을 할당해서 개인 메모리를 가지고 있는듯한 환상을 준다.
다른 process작업을 수행하려면 context switching이 필요하다
현재 작업중인 process의 상황을 Saved registers에 저장해두고 수행하고자 하는 process로 넘어가서 새로운 작업을 수행한다.
되돌아갈때도 마찬가지로 수행중인 process의 상황을 Saved registers에 저장하고 되돌아간다.
Concurrent Processes : 프로세스 동시 수행
각각의 process는 자신만의 control flow를 가진다. (서로 코드가 다르기 때문)
싱글 코어인 경우에 cpu가 처리하는 각각의 process는 순차적으로 실행 될 수 밖에 없다.
물리적으로 처리하는 시간이 겹치지 않는다는 말이다.
A -> B -> C -> A -> C
하지만 사용자의 입장에서 보면
A & B, A & C는 서로 동시에 수행되는 것 처럼 보인다.
반면에 B & C는 수행시간이 겹치지 않기 때문에 연속적으로 수행되는 것 처럼 보인다.
실제 Process의 진행을 보면
A가 수행되는 도중 kernel code에 진입해서 context switch 작업을 통해 B로 전환한다.
그리고 다시 kernel code에 진입해서 context switch 작업을 통해 A로 전환한다.
A에서 B로 process를 이동하기 위해서 kernel code로 진입하는 과정에는 timer interrupt가 발생해야한다.
주기적으로 timer interrupt가 발생해서 context switching이 일어나며 concurrent process가 발생하는 것이다.
'CS > SystemSoftware' 카테고리의 다른 글
SystemSoftware - Creating Processes #2 (0) | 2021.06.06 |
---|---|
SystemSoftware - Creating Processes #1 (0) | 2021.06.06 |
SystemSoftware - Exceptional Control Flow #1 (0) | 2021.06.05 |
SystemSoftware - Linking #2 (0) | 2021.06.04 |
SystemSoftware - Linking #1 (0) | 2021.06.03 |