프로세스

간단한 이해를 목적으로 강의를 정리한 글입니다.
자세한 내용과 정확한 용어를 원하시는 분께서는 구글링과 다른 블로그를 참고해주시길 바랍니다.


CPU(연산장치)와 RAM(저장장치), 이 두 장치만 있다고 프로그램이 작동되지않는다.

그 이유로 RAM의 용량 한계와 휘발성 메모리이므로 컴퓨터를 종료 시에 데이터가 다 사라지는 점을 들 수 있다.

그래서 HDD, SSD 같은 저장 장치를 추가한 후, 여기에 프로그램을 설치한다.

프로그램을 설치하는 것이 프로세스가 아니라 RAM으로 실행에 필요한 부분을 끌어올리는 로드를 거치고 RAM에 프로그램이 존재하는 것을 프로세스라고 한다.
프로세스에 프로그램이 있다는 것은 현재 실행 중임을 의미한다.

이 상태에서 CPU와 RAM에 있는 프로그램이 커뮤니케이션이 가능하다.

CPU를 비유하자면 한 명의 노동자로 볼 수 있다.
그런데 그렇게 되면 계속 실행되어야하는 서버와 같은 프로그램을 하나의 프로세스로 실행해야하기 때문에 다른 작업을 할 수 없다. (다른 프로그램을 실행할 수 없다.)

그래서 나온 개념이 스레드 Thread이다.
실,수명을 의미하는 단어인데, CPU에서 뻗어나오는 여러 개의 실가닥으로 생각하면 이해하기 편할 것이다. 실 가닥 하나하나가 각각 프로그램이라고 생각하면 된다.

여러 프로세스를 실행할 때, CPU(하나의 처리장치)가 왔다갔다하는 작업이 필요한 데, 이럴때 타임 슬라이싱 Time slicing이 필요하다.

하나의 처리 장치에 두 가지 이상의 처리를 시간적으로 교차ㆍ배치하는 컴퓨터 시스템 조작 기법
[출처] 타임 슬라이싱

그런데 이를 위해서 (프로세스를 왔다갔다하려면) 현재 진행되는 상황(문맥, 흐름, 전후사정)을 기억해야지 다시 돌아왔을 때 제대로 진행이 되기 때문에 문맥 교환Context switching 이라는 작업이 필요하다.

문맥 교환(文脈交換, context switch)이란 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로세스의 상태를 적재하는 작업
[위키백과] 문맥 교환

그리고 스레드와 타임 슬라이싱 컨텍스트 스위칭을 이용해서 여러 프로세스를 진행하기 위해서는 어떤 프로세스에 100%로 집중(작업)을 하면 안된다. 100%로 프로세스를 실행하고 있으면 프로세스를 종료시킬 수도 없다.

이를 해결하기 위해서 실행되는 프로세스에 슬립이라는 작업이 필요하다. 잠깐동안 프로세스를 멈추고, 그 틈에 다른 프로세스를 실행해서 여러 프로세스를 다룰 수 있게 된다.


[참고 자료]

[K-디지털] AWS 리눅스 기반 클라우드 데브옵스 기초 실무 과정 - 데어 프로그래밍

profile
프론트엔드 개발자가 되기 위해 공부 중입니다.

0개의 댓글