제목 날짜 내용 발행일 23.03.27
해당 포스트는
프로세스
에 대해 학습한 내용을 정리하며 기록한 것입니다.
프로세스 :
프로그램이 실행 중인 상태로 특정 메모리 공간에 프로그램의 코드가 적재되고 CPU 가 해당 명령어를 하나씩 수행하고 있는 상태
운영 체제에서는 실행 중인 하나의 애플리케이션을 프로세스라고 부른다.
사용자가 애플리케이션을 실행하면, 운영체제로부터 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행.
이때 실행되는 애플리케이션을 프로세스라고 부른다.
예를 들어 Chrome 브라우저를 두 개 실행하면, 두 개의 프로세스가 생성된다.
이렇게 하나의 애플리케이션은 여러 프로세스(다중 프로세스)를 만들기도 한다.
프로세스의 구조체에는
유저 메모리 영역 관리(Virtual Address Descriptors)
프로세스 별로 독립된 영역을 가지게 되는 곳은 유저 메모리 공간
커널 메모리 공간의 경우 모든 프로세스가 공유하여 사용
프로세스 별로 독립적인 유저 메모리 영역을 관리하기 위해서 VAD(Virtual Address Descriptors)라는 관리 테이블이 있다.
핸들 테이블(Handle Table)
독립적인 메모리 공간
프로세스 단위로 관리되는 자원 중 가장 중요한 구별점은 가상 메모리
페이징 기법을 이용하여 프로세스마다 별도의 고유한 메모리를 사용할 수 있게 하고 있다(윈도우의 경우).
프로세스의 특징으로는 자원 소유의 단위와 디스패칭의 단위가 있다.
자원 소유의 단위
각각의 프로세스는 자신의 실행 이미지 로드와 실행에 필요한 추가적인 메모리 공간을 가지고 있어야 한다.
이것은 각 프로세스마다 구별되어야 하며 해당 프로세스가 접근하고자 하는 파일, I/O 장치들에 대해서 또한 프로세서 단위로 할당 받아 관리되어야 한다.
디스패칭의 단위
프로세스는 하나의 프로그램이 운영체제로부터 CPU 의 자원을 일정 기간 동안 할당 받아 명령어를 실행하는 것
운영체제는 여러 개의 프로세스가 병렬적으로 실행되게 하기 위해서 CPU 의 사용 시간을 각각의 프로세스에 골고루 나누어 주어야 한다.
하나의 프로세스에서 여러 개의 디스패칭 단위가 실행될 수 있도록 하고 있으며, 이러한 디스패칭 단위를 스레드라고 한다.
실행(Run) : 프로세스가 프로세서를 차지하여 서비스를 받고 있는 상태
준비(Ready) : 실행될 수 있도록 준비되는 상태
대기(Waiting) : CPU 의 사용이 아니라 입출력의 사건을 기다리는 상태
프로세서와 프로세스는 엄밀히 다르다.
프로세서는 하드웨어적인 측면과 소프트웨어적인 측면으로 나누어 볼 수 있다.
하드웨어적인 측면 :
컴퓨터 내에서 프로그램을 수행하는 하드웨어 유닛
중앙처리장치(CPU)를 의미하며 적어도 하나 이상의 ALU와 레지스터를 내장
소프트웨어적인 측면 :
데이터 포맷을 변환하는 역할을 수행하는 데이터 처리 시스템
워드프로세서나 컴파일러 등
프로세스는 특정 목적을 수행하기 위해 나열된 작업의 목록
메모리에 적재 되어 프로세서에 의해 실행 중인 프로그램을 프로세스라고 볼 수 있다.