[운영체제] 프로세스의 개념

hi·2022년 10월 11일
0

운영체제

목록 보기
7/9

⭐ 프로세스의 개념

초기 컴퓨터는 프로그램을 한번에 하나씩 실행했고, 실행 중인 프로그램이 컴퓨터 자원을 독점했다. 반면 현재의 다중 프로그래밍 환경에서는 여러 프로그램을 메모리에 적재하여 병행 실행하는 형태로 컴퓨터의 효율을 높인다. 이때 병행 실행되는 프로그램들은 컴퓨터 자원을 공유하므로 이를 제어하여야 한다. 이 과정에서 프로세스가 등장함.




⭐ 프로세스의 정의

프로세스에는 다음과 같은 정의가 있다.

➡️ 실행 중인 프로그램
➡️ 비동기적 행위
➡️ 실행 중인 프로시저
➡️ 실행 중인 프로시저의 제어 추적
➡️ 운영체제에 들어 있는 프로세스 메모리 블럭
➡️ 프로세서에 할당하여 실행할 수 있는 개체 디스패치가 가능한 대상

일반적으로 프로세스는 실행 중인 프로그램을 뜻하며 이는 디스크에 있던 프로그램을 메모리에 적재하여 운영체제의 제어를 받는 상태가 됨을 의미한다.




프로그램은 컴파일한 코드와 초기화 전역변수, 문자열, 문자열 상수 등 정적 데이터를 포함하는 정적인 개체인 반면 프로세스는 메모리 구조를 이루고 PC, Register 처럼 현재 어떤 자원을 사용하는지 관련 정보가 들어 있는 동적 개체임.




✔️ 스택

Stack은 데이터를 일시 저장하는 영역임. 지역변수에 사용되며, 변수가 범위 밖으로 이동하면 공간을 해제함. 호출한 함수의 반환 주소, 반환 값, 매개변수 등에 사용되고, 함수를 호출할수록 커지고 반환하면 줄어듦.일반적으로 힙과 인접한 방향으로 점점 커져 스택 포인터가 힙 포인터를 만나면 이는 메모리가 소진됨을 의미함.

✔️ 힙

Heap은 코드 영역과 별도로 유지되는 자유 영역임. 동적으로 메모리를 할당하려고 프로그램 실행 중 시스템 호출을 사용했다가 해제하는 방법으로 활용됨, 프로세스의 공유 라이브러리와 동적으로 적재된 모듈이 서로 공유하는데, 동적 메모리 할당이 발생하면 위쪽으로 커짐.

✔️ 데이터

데이터는 프로그램의 가상 주소 공간임. 전역변수나 정적변수를 저장하거나 할당하고 실행하기 전 초기화됨.

✔️ 코드

코드는 실행 명령을 포함하는 메모리이거나 목적 파일에 잇는 프로그램 영역임. 프로그램을 시작할 때 프로세서가 디스크에서 읽어 실행하는 컴파일한 프로그램을 저장함. 프로세스로 변경할 수 없고, 읽기 전용이므로 프로그램이 코드 영역을 침범하여 쓰기 시도하면 오류가 발생해서 프로그램을 종료함. 코드 영역은 공유할 수 있으며 자주 실행하는 워드 프로세서, C 컴파일러, 셀 같은 프로그램의 사본 하나는 메모리에 존재함.



프로세스의 종류는 다음과 같다.

0개의 댓글