YUDA't

0.

서버 개발을 하면 언젠가 반드시 마주치는 주제.

컴퓨터 공학을 전공했다면 학부생 때 배웠겠지만 비전공자 프로그래머는 스스로 공부하지 않으면 잘 모른다.



1.

프로세스는 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램을 말한다.

프로그램과 프로세스는 약간 다른 개념인데,

프로그램은 일반적으로 하드디스크에 저장돼 있는 실행코드를 뜻하고, 

프로세스프로그램이 메모리 상에서 실행될 때의 작업 단위이다.

예를 들어, 하나의 프로그램을 여러 번 구동하면 여러 개의 프로세스가 메모리 상에서 실행된다.


이해가 잘 가지 않는다면 ctrl + alt + Del 을 눌러 작업 관리자에 들어가보자.

프로세스 탭을 보면 내가 사용하고 있는 프로그램들이(보이지 않는 것들까지) 죽 나열돼있다.

 

각각의 프로그램들의 CPU나 메모리 사용률을 볼 수 있는데, 내 작업관리자에서 맨 위 두 개는 IDE라서 원체 좀 무거운 것들이다.

또 크롬을 사용하고 있다면 크롬 탭이 많아질 수록 크롬 탭의 개수, 혹은 그보다 더 많은 프로세스가 실행되고 있는 것을 볼 수 있는데, 왜냐하면 크롬은 페이지 탭마다 독립된 프로세스를 돌리기 때문이다. 

이 덕분에 탭 하나에서 에러가 나더라도 그 탭만 끄면 되지만 메모리를 많이 소비한다.



2.

프로세스의 상태

- 생성(create) : 프로세스가 생성되는 중이다.

- 실행(running) : 프로세스가 CPU를 차지하여 명령어들이 실행되고 있다.

- 준비(ready) : 프로세스가 CPU를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다리고 있다. 일반적으로 준비 상태의 프로세스 중 우선순위가 높은 프로세스가 CPU를 할당받는다.

- 대기(waiting) : 보류(block)라고 부르기도 한다. 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태를 말한다.

- 종료(terminated) : 프로세스의 실행이 종료되었다.




출처/참고: 위키백과