프로세스

Eugenius1st·2022년 10월 6일
0

CS기초강의

목록 보기
6/16
post-thumbnail

프로세스

프로세스는 프로그램이 실행 중인 상태로 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU 가 해당 명령어를 하나씩 수행하고 있는 상태를 의미한다. 운영 체제에서는 프로세스를 사용하여 프로그램을 수행하게 되는데 실행 중인 하나의 애플리케이션을 프로세스라고 부른다. 사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행한다.
이때 실행되는 애플리케이션을 프로세스라고 부른다. 예를 들어 Chrome 브라우저를 두 개 실행하면, 두 개의 프로세스가 생성된다. 이렇게 하나의 애플리케이션은 여러 프로세스(다중 프로세스)를 만들기도 한다.

프로세스 구성 요소

프로세스의 구조체에는 프로세스마다 독립적으로 관리해야 하는 유저 메모리 영역이나 프로세스가 사용하는 각종 객체들의 포인터를 관리하는 핸들 테이블을 가지고 있다.

  1. 유저 메모리 영역 관리(Virtual Address Descriptors)프로세스 별로 독립된 영역을 가지게 되는 곳은 유저 메모리 공간이다. 커널 메모리 공간의 경우 모든 프로세스가 공유하여 사용하고 있다. 프로세스 별로 독립적인 유저 메모리 영역을 관리하기 위해서 VAD(Virtual Address Descriptors)라는 관리 테이블이 존재한다.
  2. 핸들 테이블(Handle Table)
    핸들 테이블은 프로세스에서 사용하는 모든 핸들에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간이다. 프로세스가 종료하게 될 때 이 테이블의 정보를 참고하여 이 프로세서에서 사용하고 있는 모든 커널 객체를 자동으로 반환한다.
  3. 독립적인 메모리 공간
    프로세스 단위로 관리되는 자원 중 가장 중요한 구별점은 가상 메모리이다. 페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 하고 있다(윈도우의 경우).

프로세스 특징

프로세스의 특징으로는 자원 소유의 단위와 디스패칭의 단위가 있다.

  • 자원 소유의 단위
    각각의 프로세스는 자신의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간을 가지고 있어야 한다. 이것은 각 프로세스마다 구별되어야 하며 해당 프로세스가 접근하고자 하는 파일, I/O 장치들에 대해서 또한 프로세서 단위로 할당 받아 관리되어야 한다.
  • 디스패칭의 단위
    프로세스는 하나의 프로그램이 운영체제로부터 CPU 의 자원을 일정 기간 동안 할당 받아 명령어를 실행하는 것이며, 운영체제는 여러 개의 프로세스가 병렬적으로 실행되게 하기 위해서 CPU 의 사용 시간을 각각의 프로세스에 골고루 나누어 주어야 한다. 하나의 프로세스에서 여러 개의 디스패칭 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드라 부른다.

프로세스 상태

  • 실행(Run) : 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태를 말한다.
  • 준비(Ready) : 실행될 수 있도록 준비되는 상태를 말한다.
  • 대기(Waiting) : CPU 의 사용이 아니라 입출력의 사건을 기다리는 상태를 말한다.

프로세서 VS 프로세스

프로세서와 프로세스는 엄밀히 다른 존재이다.

프로세서(Processor)

프로세서는 하드웨어적인 측면과 소프트웨어적인 측면으로 나누어 볼 수 있다.

  • 하드웨어적인 측면 : 컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛으로, 중앙처리장치(CPU)를 의미하며 적어도 하나 이상의 ALU와 레지스터를 내장하고 있다.
  • 소프트웨어적인 측면 : 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템을 의미한다. 워드프로세서나 컴파일러 등이 여기에 속한다.

프로세스(Process)

프로세스는 특정 목적을 수행하기 위해 나열된 작업의 목록을 의미한다. 메모리에 적재 되어 프로세서에 의해 실행 중인 프로그램을 프로세스라고 볼 수 있다.

profile
최강 프론트엔드 개발자가 되고싶은 안유진 입니다

0개의 댓글