티스토리 뷰

책 : 뇌를 자극하는 윈도우즈 시스템 프로그래밍

 

시스템프로그래밍에서 가장 중요하면서도 기초인, 프로세스에 대해서 한번 얘기해보겠습니다.

 

   일단 프로세스란, 실행되고 있는 프로그램을 의미합니다. 말 그대로 우리가 크롬이나 인터넷, 워드, 게임등의 프로그램을 실행한 상태가 바로 프로세스입니다.

   이렇게 실행된 프로그램들은 CPU에 의해서 실행되게 되는데, 여기서 보통 우리는 하나의 프로그램만 실행하지 않기 때문에 멀티 프로세스 환경에서 실행하게 됩니다. 멀티 프로세스란, 하나의 프로세스만 처리하는 것이 아닌, 다른 프로세스의 일도 함께 처리하는 방식을 말합니다.

   단, 여기서 주의해야 할 점은 하나의 CPU가 여러개의 프로세스를 함께 처리하는 것이지 한개의 CPU가 동시에 두개의 프로세스를 실행하는 것은 아닙니다. 

 

   이러한 멀티 프로세스 환경에서 프로세스의 CPU 할당 순서 및 방법을 경정짓는 일을 스케줄링이라 하며, 이때 사용되는 알고리즘을 가르켜 스케줄링 알고리즘 이라고 합니다.

 

프로세스는 기본적으로 4가지의 상태를 가질 수 있습니다.

Start : 프로그램이 막 실행된 상태

Ready : 스케줄러에 의해서 관리되는 프로세스, 대기상태에 머물러 있는 상태

Running : CPU에 적재되어 실행되고 있는 프로세스

Blocked : 입/출력 중인 상태 ( CPU의 작업이 필요 X ), 단 무조건 입/출력인 상태는 아닐 수 있음.

 

 

기본 형태는 아래의 그림과 같고, 스케줄링 방식에 따라서 차이가 날 수 있습니다. 

1. Start -> Ready 상태

2. Ready -> Running : 프로세스가 실행

3. Running -> Ready : 다른 우선순위가 높은 프로세스가 생길 시

4. Running -> Blocked : 입/출력 작업 발생 시

5 Blocked -> Ready  : 작업 완료시

 

   마지막으로, Running에서 돌아가는 프로세스와 Ready의 프로세스가 교환될때, 이것을 컨텍스트 스위칭 과정이라고 하는데, 현재 실행 중인 프로세스 레지스터 정보를 메모리에 저장하고, 실행하고자 하는 프로세스의 정보를 레지스터에 복원하는 작업을 말합니다.

   이러한 작업은 시스템에 많은 부담을 주게 되기때문에 마냥 멀티 프로세스가 속도가 빠르고 효율적이라고 할 수는 없습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함