프로세스

- 메인 메모리로 이동하여 실행중인 프로그램 (일반적인 정의)


프로세스 범위

- 메모리 구조 + 레지스터 Set

- 프로세스 별 독립적인 대상(레지스터 Set)은 프로세스의 범주에 포함시킬 수 있다.



Context Switching

- A라는 프로세스가 연산을 하고 B라는 프로세스로 전환되는 것


- 1초에 수십번씩 진행된다. 그래서 사용자에게는 여러 프로세스가 동시에 실행되는 것 처럼 보여진다.


- Context Switching이 일어날 때, 레지스터 Set을 비워줘야지 다음 프로세스의 데이터를 저장할 수 있다.

그런데 1초에 수십번씩 진행되는 Context Switching 특성상 이러한 방법은 굉장히 비효율적이다.


- 그래서 각 프로세스 별로 레지스터 Set을 독립적으로 할당해주는 기법이 있다.

 


프로세스 스케줄러 

- 윈도우에서 SoftWare적으로 구현되어있는 장치(Block)


- 둘 이상의 프로세스가 적절히 실행되도록 컨트롤 한다.


- CPU입장에서는 스케줄러도 하나의 프로세스이다.



프로세스의 상태

- Ready : 스케줄러가 선택해주길 기다리는 상태(프로세스는 실행을 위한 모든 준비가 다 됨.)


- Running : 현재 cpu에 의해 실행중인 상태 

(CPU의 코어가 1개이면 Running 상태에 있는 프로세스의 개수는 1개이다.) 

(일반적인 실행은 CPU에 의존적인 연산이고, I/O연산은 CPU에 의존적이지 않은 연산이다.)


- Blocked : CPU에 의존적이지 않는 연산을 하고 있는 상태


ex)

1. A,B 프로세스가 Ready 상태이다.

2. A 프로세스가 스케줄러에 의해 Running 상태가 됬다.

3. 연산을 하다가 I/O 연산을 수행한다.

4. A 프로세스는 I/O 연산이 끝날 때 까지 Blocked 상태가 되고, B 프로세스가 Running 상태가 된다.

5. A 프로세스가 I/O 연산이 끝나고 CPU에 의한 연산이 남아있다면, 다시 Ready 상태가 된다.


★주의★

꼭 I/O 연산을 한다고 Running 상태가 해제 되는것이 아니라, 우선순위에 의해서 다른 프로세스들도 실행을 시켜야 하기 때문에 Running 에서 Ready 상태가 되기도 한다.



Context Switching 추가 설명

- Running 상태의 프로세스(A)의 데이터가 레지스터 Set에 저장되어있다.


- Ready 상태의 프로세스(B)가 Running 상태가 되기 위해선 레지스터에 Set에 B에 관한 데이터가 저장되야 한다.


- A의 데이터가 있는 레지스터 Set은 메모리에 저장되고, 메모리에 저장 되어있던 B의 데이터는 레지스터 Set에 복원된다.


- 이러한 과정이 끝난 후 B는 Running 상태가 된다.


- 프로세스의 범위에 '메모리 구조 + 레지스터 Set'이 포함되는 이유가 위의 과정 때문이다.






+ Recent posts