공부한 기록/운영체제

운영체제(3)

YongE 2022. 9. 15. 15:00

프로세스

=================================
프로세스 (process): 실행 중인 프로그램, 스택, 힙, 데이터 같은 메모리 구조와 레지스터처럼 현재 사용 중인 자원에 대한 정보를 갖고 있는 동적인 개체이다. 병행하는 프로그램들은 자원을 공유하고 이를 제어하는 것이 필요한데, 이는 프로새스의 '역할'이다.
- 스택(stack): 데이터를 일시적으로 저장하는 공간. 지역변수에 사용되고 이 범위가 밖으러 나갔을 때 해제된다. 호출한 함수의 반환 주소, 값, 매개변수 등에 사용된다. 함수를 호출하면 힙(heap)의 방향으로 늘어나고, 반환하면 줄어든다. 스택 포인터와 힙 포인터가 만나면 메모리가 소진되었다는 뜻.
- 힙(heap): 사용자가 직업 관리하는 주소 영역. 사용자에 의해 메모리 공간이 동적으로 할당되거나 해제된다. 보통 할당된 공간은 자동으로 해제되지 않으며 이를 '메모리 누수'라고 하는데 java와 같은 프로그래밍언어에서 가비지콜렉터가 자동으로 이를 해준다.
- 데이터(data): 프로그램의 가상 주소 공간. 전역 변수와 정적 변수가 할당되거나 저장하거나, 실행 전에 초기화된다.
- 코드(code): 읽기 전용의 실행 명령을 포함하는 메모리거나 목적 파일에 있는 프로그램 영역이다.
+사용자 관점에서 프로세스는 주소 공간을 가지고 실행하는 프로그램이다.

프로세스의 종류

프로세스 상태의 변화와 정보


디스패치: 실행 중인 프로세스에서 종료되거나 인터럽트가 발생하면 선택한 프로세스를 실행 상태로 바꾸는 것.


앞선 위의 상태보다 더 세분화된 상태이다.
• 작업 스케줄러는 스풀러가 디스크에 저장한 작업 중 실행할 작업 선정하고 준비 리스트에 삽입하여 다중 프로그래밍의 정도 결정
• 프로세스 스케줄러는 선정한 작업의 상태를 변화시키며 프로세스의 준비에서 종료까지 과정 수행

프로세스 제어 블록

Process Control Block: 운영체제가 프로세스 제어 시에 필요한 특정 프로세스 상태의 정보가 저장된 데이터 블록 또는 레코드, 작업 제어 블록(task control block)이라고도 함. 

프로세스가 실행되면 메모리에 프로세스 제어 블록도 생성됨. 종료되면 사라짐.

프로세스의 문맥 교환: 인터럽트나 시스템 호출 등으로 프로세스 제어를 다른 프로세스에 넘겨 실행상태가 되게 하는 것.

프로세스의 관리

프로세스 구조

프로세스는 실행 중에 프로세스 생성 시스템을 호출하여 새로운 프로세스 생성이 가능하다. 기존 프로세스는 부모 프로세스(Parent process), 새로이 생성되는 프로세스는 자식 프로세스 또는 서브 프로세스(child process or subprocess)라 한다.

 

프로세스 생성

일괄처리형 환경에서는 작업이 도착할 때 프로세스를 생성하고, 대화형 환경에서는 사용자가 로그온 할 때 생성한다.

프로세스를 생성할 때 다음과 같은 세부 과정이 필요하다.

  1. 새로운 프로세스에 프로세스 식별자를 할당.
  2. 프로세스의 모든 구성 요소를 포함하는 주소 공간과 프로세스 제어 블록 할당.
  3. 프로세스 제어 블록 초기화
  4. 링크을 걺.(큐에 삽입한다고 한다)

프로세스 종료

프로세스가 마지막 명령을 실행완료하면 운영체제에 프로세스 삭제를 요청한다.

일관처리 환경에서는 작업 종료를 의미하는 인터럽트 신호를 보내거나 시스템 호출로 중단을 명령한다.

대화형 처리환경에서는 사용자가 로그오프하거나 터미널을 닫는다.

 

부모 프로세스의 자식 프로세스 종료

• 보통 부모 프로세스 종료하면 운영체제가 자식 프로세스도 종료(연속 종료)

• 자식 프로세스가 할당된 자원을 초과하여 자원을 사용할 때

• 자식 프로세스에 할당한 작업이 더는 없을 때

 

프로세스의 종료 이유는 다음과 같다.

  • 정상종료
  • 시간 초과: 명시된 시간을 초과했을 때
  • 실패: 파일 검색 실패
  • 오류: 산술 오류, 데이터 오류
  • 메모리 부족, 액세스 위반

프로세스 제거

사용하던 자원을 시스템에 돌려주고, 해당 프로세스는 시스템 리스트나 테이블에서 사라져 프로세스 제어 블록 회수.

프로그램은 여전히 디스크에 저장돼있음. 부모프로세스를 제거하면 자식 프로세스는 자동제거.

 

프로세스 문맥교환

이전 프로세스의 상태 레지스터 내용 보관하고 다른 프로세스의 레지스터 적재하여 프로세스를 교환하는 일련의 과정

728x90
반응형