프로세스는 RAM에 로드된 프로그램입니다.

프로세스는 RAM에 로드된 프로그램입니다.

맞습니까? 기본적으로 프로그램은 하드 드라이브에 있는 코드일 뿐이고, RAM에 있는 경우 프로세스라고 부르죠?

답변1

다소 투박할 수도 있지만 그렇게 말할 수 있습니다. 프로세스를 생성하려면 다음 두 단계가 필요합니다.

  1. 할당하다당신의 지역(기본적으로 커널에 액세스할 수 있는 프로세스에 대한 정보), 프로세스 테이블에 항목을 채우고, 모든 관련 구성 요소를 초기화합니다. 기본적으로 커널이 관리할 다른 프로세스를 생성하면 됩니다. 이는 fork시스템 호출을 통해 수행됩니다.
  2. 실행 파일을 메모리에 로드합니다. 이는 exec(현재 ) 시스템 호출을 통해 execve수행 됩니다. 이 호출 동안 3개의 주 메모리 영역이 호출됩니다.영역채우는:

    • 이것텍스트프로세스가 따라야 할 일련의 지침으로 구성된 영역(기본적으로 프로그램)입니다. 실행 파일에 포함되어 있습니다(컴파일러는 소스 코드를 기반으로 작성합니다).
    • 이것데이터초기화된 데이터(예: 값이 있는 변수 int myvar = 1)가 포함된 영역과 초기화되지 않은 데이터를 보관할 수 있는 충분한 공간(라고 함)BSS), 예를 들어 배열(예 char buffer[256]: )입니다.
    • 이것더미영역. 이 부분은 제가 댓글에서 말했듯이 설명하기가 좀 까다롭습니다.Maurice J. Bach가 나보다 더 잘했어요(2장, 섹션 2.2.2). 기본적으로 스택은 함수가 호출될 때 커지고 함수가 반환될 때 줄어드는 메모리의 동적 영역입니다. 프로그램이 실행되면 main해당 함수에 해당하는 프레임이 스택에 푸시됩니다. 프로그램이 종료되면 이러한 프레임이 표시됩니다.

이제 이것이 프로그램을 실행하기에 충분해 보일 수도 있지만 그렇지 않습니다. 이제 프로세스가 실행 중이므로 커널은 여전히 ​​프로세스를 유지해야 합니다. 인용하다:

2장에서 설명한 것처럼 프로세스의 수명 주기는 개념적으로 프로세스를 설명하는 상태 집합으로 나눌 수 있습니다.(UNIX 운영 체제 설계, Maurice J. Bach, 6장: 프로세스 구조).

이는 프로세스가 항상 "실행 중"이 아니며 항상 주 저장소("RAM"이라고 함)에 있지 않음을 의미합니다. 예를 들어:

  • 프로세스가 절전 모드로 전환되는 경우(프로세스가 해당 프로세스에 의해 구동되기 때문에)텍스트, 또는 무언가를 기다리고 있기 때문에) 커널은 이를 보조 저장소(일반적으로 스왑 영역)로 교체하기로 결정할 수 있습니다. 이런 일이 발생하면 프로세스는 더 이상 주 저장소("메모리/RAM")에 없습니다. 커널은 이를 저장했으며 주 저장소에 다시 로드되면 일정을 변경할 수 있습니다.
  • 프로세스가 충분한 시간 동안 실행되고 커널이 결정하는 경우잡다(그리고 잠시 동안 다른 프로세스가 실행되도록 놔두고) 메모리에 저장할 수 없으면 다시 교체할 수 있습니다.

프로세스의 일반적인 수명은 다음과 같습니다.

  1. 생성: fork시스템 호출이 사용되었습니다.
  2. 실행 준비 완료(메모리 내): 지침 및 데이터가 로드되었습니다.
  3. 실행(사용자 모드와 커널 모드 간 전환 가능, 여러 번 가능)
  4. 자고, 일어나고, 자고, 일어나고,…
  5. 종료(결국 커널 모드로 전환, 좀비 상태, 사라짐).

3단계와 4단계는 실제로 서로 얽혀 있을 수 있습니다.

알아채다프로세스UNIX 시스템의 두 가지 주요 개념 중 하나입니다.문서). 따라서 Q&A 형식으로 모든 내용을 다루기는 불가능합니다. 제가 답변에서 계속 인용하는 책은 UNIX 시스템에 대한 훌륭한 참고 자료입니다. *NIXes/UNIX 계열 시스템은 어떤 면에서는 다를 수 있지만 여전히 동일한 개념을 사용합니다.

답변2

Wikipedia 페이지를 볼 때: "프로세스실행 중인 컴퓨터 프로그램의 인스턴스입니다.".

따라서 일반적으로 실행하는 프로그램을 RAM에 로드해야 하는 경우 프로세스가 반드시 RAM에 있을 필요는 없습니다.

예를 들어, 수면 프로세스를 스왑에 넣을 수 있습니다. 프로세스가 계속 실행 중입니다(즉,메모명령), 일부 RAM 공간을 확보하기 위해 해당 상태가 디스크에 기록됩니다.

관련 정보