프로세스

 

프로세스란 실행중인 프로그램 입니다.
실행중이라는 의미는 간단히 말해서 보조기억장치에 저장되어 있던 프로그램이 주기억장치인 메모리 (RAM)에 적재(Load) 되어있고 프로세서가실행하고 있거나 실행 예정에 있는 상태를 의미합니다.

C드라이브 같은 보조기억장치에 기록 되어 있는 프로그램은 아무일도 하지않는 단순히 용량만 차지하고 있는 수동적인 녀석입니다.
프로그램은 명령어 덩어리라고 했었죠? 

예를들어 println("안녕"); 이라든가 int a = 3 + 5;  또는 롤 프로그램에서의 자이라.moveToXY(300,200); 처럼 말이죠.
그런데 이런 명령어를 실제로 연산해주는 것은 누구일까요?? 
바로 CPU(중앙처리장치, Central Processing Unit) 라고 하는 녀석이죠.

CPU가 명령어들을 실행하여 연산을 해주어야 비로소 프로그램으로서의 의미가 생기는 것입니다.
이전글에서 프로그램은 수동적인 단위라고 했죠?
단순히 명령어가 저장되어 있을뿐 그것을 CPU가 실행하지 않은 상태이기 때문이죠.

연산을 하기위해서는 보조기억장치에 저장되어있는 명령어들이 CPU에게 전달되어야 합니다.

요즘 나오는 CPU의 연산 속도 단위는 GHz 입니다.
1GHz는 1초에 어떤 신호가 10억번 있다는 뜻이죠.
그 말은 10억 번 무엇인가 연산을 할 수 있다는 뜻입니다.

그에 반해 명령어들 즉 프로그램이 저장되어 있는 보조기억장치의 전송 속도는 SSD일 경우 500MB/s 정도입니다.
서로 다른 단위이기 때문에 비교하는것이 그럴 수 있으나

CPU는 찰나의 순간에 수많은 연산을 하는데에 비해 보조기억장치는 연산할 명령어들을 전송하는데에 시간이 너무 오래 걸리는 것입니다.
전송속도만 오래걸리나요??
어떤 명령어를 실행하기 위해서는 그 명령어의 주소를 알아야 합니다.
땅이 넓어질 수록 그 안에 흘린 바늘을 찾기 어려운것처럼 보조기억장치의 용량이 클 수록 그 안에 명령어를 탐색 하는데에도 오래걸리죠.

CPU는 1초에 수십억번 연산을 하며 말합니다.
"야 보조기억장치야 아니 다음 명령어 달라니까? 지금 나 놀고있는거 안보여? 내가 아무리 빨리 일하면 뭐하냐 너가 다음 명령어를 찾는것도 느리고 나한테 주는것도 느린데" 라고요.

 

 

 

그래서 필요한 것이 주기억장치입니다.
주기억장치는 탐색속도도 빠르고 입출력 전송속도도 매우 빠르죠.
보조기억장치와 CPU의 속도차를 극복할 수 있는 수단이 되죠.

그대신 용량이 적고 가격도 고가이며 휘발성 메모리이기 때문에 전원이 꺼지면 저장되어있던 내용이 날아가버립니다.
그런 이유로 영구적으로 데이터를 저장할 보조기억장치가 필요한 것입니다.

우리가 문서작업을 하던 중 저장을 하지 않고 전원이 꺼졌을때 내용이 날아가버린것은 메모리에 적재되어 실행중이던 워드 프로그램이 
보조기억장치에 내용을 저장하기 전에 전원이 예기치않게 꺼졌기 때문에 날아가 버려서입니다.


정리하자면 주기억장치는 보조기억장치와 CPU의 속도차를 극복하기 위해 필요하고 영구 저장 메모리인 보조기억장치에 있던 명령어들을 CPU가 연산중이거나 연산을 수행하기 위해 주기억 장치인 램에 적재되어 있는 상태가 프로세스인 것입니다.
이럴때 프로그램이 실행중이라고 하며 프로세스라고 할 수 있는것이죠.

프로세서
프로세서는 이미 답이 나온것같은데 
프로세스를 처리하는 녀석 즉 CPU가 프로세서입니다.

 

 

 

이전글

2017/10/29 - [전산학개론] - 프로그램, 프로세스, 프로세서 차이 [1]

 

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

댓글을 달아 주세요! 질문 환영합니다!