1-5. 프로세스

2015. 12. 28. 17:42프로그래밍/시스템

 

+프로세스?

실행중인 프로그램  ( 심플하다 )

메모리 공간에 프로그램의 실행 바이너리 코드가 올라간다 -> 프로그램이 프로세스가 된다

 


+프로세스의 메모리 구성

Data 영역  : 전역변수, Static 변수 할당을 위해 존재하는 영역

Stack 영역 : 지역변수 할당과 함수 호출 시 전달되는 인자값들의 보관을 위해 존재하는 영역

Heap 영역  : 동적할당을 위해서 존재하는 영역

Code 영역 : 실행파일을 구성하는 명령어들이 올라가는 영역

 

     

 


+프로세스의 스케줄링 ( Process Scheduling )

-스케줄링?

CPU 는 하나이고 실행 중인 프로세스가 다수 일 때,

프로세스의 CPU 할당 순서를 결정짓는 일

 

프로세스마다 우선순위가 정해져있고, 이 순위에 따라 CPU에 의해 실제 실행할 프로세스를 결정한다.

 

-프로세스 상태

일반적으로, 프로세스가 실행되는 과정에서 많은 시간을 I/O 에 할당한다.

I/O 는 데이터의 입출력 및 네트워크로 연결된 호스트와 데이터 송수신 등을 의미한다.

 

 

프로세스의 생성과 실행, 소멸까지의 흐름을 이해하는 것이 중요하다.

각 상태의 정의부터 해보자.

 

Running : CPU에 의해 실제로 실행중인 프로세스 상태

Ready    : 자신의 CPU 할당(실제 실행)을 대기하고 있는 프로세스 상태 

Blocked: 일반적으로, I/O 중인 프로세스들의 상태라고 보면된다.

  현시점으로 CPU에 의해 실행될 수 없는 프로세스들을 잠시 Blocked 로 놓아서 I/O 작업을 수행한다. (그림 4번)

  그리고 그림 2번을 수행하여 효율적인 멀티프로세스를 도모한다.

  I/O 가 완료된 프로세스들은 Ready 상태로 바뀌어 다시 Running 상태가 되길 대기한다 ( 그림 5번 )

 


 

+컨텍스트 스위칭 ( Context Switching )

실행중인 프로세스 ( Running 상태의 프로세스 )를 변경하는 것은 시스템 부하가 크다.

why? CPU 의 레지스터들은 현재 실행중인 프로세스의 데이터들로 채워진다.

  실행할 프로세스의 데이터들을 채우는 작업이 시스템 부하가 크다.

 

 

B 프로세스가 있다고 해보자.

B는 Reday 상태에 있고, B의 데이터들도 같이 메모리에 보관 중에 있다.

B 가 Running 상태로 바뀌게 되면,

메모리에 보관중이던 B 데이터들을 CPU 레지스터에 올라가있던 A 데이터 ( Running 중이던 프로세스 데이터 )와 바꾼다.

-> 이 작업이 Context Switching 이다. 이 작업이 시스템부하가 크다. 이 작업이 멀티프로세스의 단점이다.

 

 

 

 

 

'프로그래밍 > 시스템' 카테고리의 다른 글

1-6. 커널오브젝트와 프로세스  (0) 2015.12.28
1-3. 운영체제 32bit vs 64bit  (0) 2015.12.20
1-4. 메모리 접근 방식  (0) 2015.12.20
1-2. 문자셋 ( CharacterSet )  (0) 2015.12.20
1-1. 프로그램의 실행과정  (0) 2015.12.16