[PROCESS]프로세스
프로세스
- 프로그램이 실행 중인 상태로 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU가 해당 명령어를 하나씩 수행하고 있는 상태
- 운영체제에서 프로세스를 사용하여 프로그램을 수행하게 되는데 실행 중인 하나의 애플리케이션
- 애플리케이션 실행 시, 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션 코드 실행. 이때 실행되는 애플리케이션
하나의 애플리케이션은 여러 프로세스(다중 프로세스)를 만들기도 함
프로세스 구성 요소
프로세스마다 독립적으로 관리해야 하는 유저 메모리 영역이나 프로세스가 사용하는 각종 객체들의 포인터를 관리하는 핸들 테이블을 가지고 있음.
-
유저 메모리 영역 관리(Virtual Address Descriptors)
커널 메모리 공간(유저 메모리를 제외한 나머지 영역)은 모든 프로세스가 공유하여 사용. 유저 메모리 영역은 프로세스 별로 독립된 영역을 가지게 되는 곳, VAD(Virtual Address Descriptors)라는 관리 테이블이 존재
-
핸들 테이블(Handle Table)
프로세스에서 사용하는 모든 핸들(프로세스 정보 중 하나로 커널이 관리하는 객체들에 할당되는 유일한 ‘값’)에 대한 커널 객체 포인터 정보를 배열 형태로 가지고 있는 공간. 프로세스 종료 시, 이 테이블의 정보를 참고하여 이 프로세서에서 사용하고 있는 모든 커널 객체 자동 반환
-
독립적인 메모리 공간
프로세스 단위로 관리되는 자원 중 가장 중요한 구별점은 가상 메모리. 페이징 기법(가상기억장치를 모두 같은 크기의 블록으로 편성하여 운용하는 기법)을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 하고 있습니다(윈도우의 경우).
프로세스 특징
- 자원 소유의 단위
각각의 프로세스는 자신의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간 필요. 각 프로세스마다 구별, 해당 프로세스가 접근하고자 하는 파일 및 I/O 장치들에 대해서 프로세서 단위로 할당 받아 관리되어야 함
- 디스패칭의 단위
프로세스는 하나의 프로그램이 운영체제로부터 CPU 의 자원을 일정 기간 동안 할당 받아 명령어를 실행하는 것, 운영체제는 여러 프로세스의 병렬 실행을 위해 CPU 의 사용 시간을 각각의 프로세스에 골고루 분배. 하나의 프로세스에서 여러 개의 디스패칭(프로그램 실행 시, 프로세스 생성, 준비리스트에 추가. 프로세스는 프로세서가 사용가능한 상태가 되면 CPU를 할당받음. 이를 준비상태에서 실행상태로 상태전이(state transition)됨) 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드.
프로세스 상태
- 실행(Run) - 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태
- 준비(Ready) - 실행될 수 있도록 준비 상태
- 대기(Waiting) - CPU 의 사용이 아니라 입출력을 기다리는 상태
프로세서 VS 프로세스
-
프로세서(Processor)
- 하드웨어적 측면 - 프로그램을 수행하는 하드웨어 유닛, 중앙처리장치(CPU) 의미, 적어도 하나 이상의 ALU와 레지스터 내장
- 소프트웨어적 측면 - 데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템. 워드프로세서나 컴파일러 등.
-
프로세스(Process)
- 특정 목적을 수행하기 위해 나열된 작업의 목록. 메모리에 적재 되어 프로세서에 의해 실행 중인 프로그램
댓글남기기