[CS] 프로세스

hzn·2022년 11월 30일
0

etc

목록 보기
3/13
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)

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

0개의 댓글