프로세스 살펴보기

SeunghoChoe·2021년 4월 7일
0
post-custom-banner

탄생 배경

  • 프로그래밍 방식의 발전에 따라 다수의 프로그램이 한번에 메모리에 적재되면서, 각각의 프로그램을 보다 견고하게 제어하고 구획화할 필요성이 대두되었음

정의 및 개념

  • 실행 중인 프로그램이며 작업의 단위
  • 하나의 시스템은 프로세스의 집합체
    • 운영체제 프로세스는 시스템 코드를 실행
    • 사용자 프로세스들은 사용자 코드를 실행
  • 다음과 같은 맥락에서 다른 용어로 표현되기도 하지만 유사한 면을 갖으므로 프로세스로 통칭
    • 일괄 처리 시스템에서 잡(job)
    • 시분할 시스템에서 테스크(task)
    • 단일 테스킹만을 지원하는 임베디드 시스템에서 실행된 프로그램

메모리 구성

  • 코드 섹션: 실행코드
  • 데이터 섹션: 전역 변수
    • 프로세스 제어 블록(PCB): 프로그램 카운터 값, CPU레지스터 값
  • 힙: 동적으로 할당된 메모리
  • 스택: 함수의 매개변수, 복귀 주소, 로컬 변수가 저장되는 공간

프로세스 상태

프로세스는 실행되면서 그 상태가 변한다. 상태값들은 프로세스 제어 블록(PCB)에 저장되며, 프로세스 상태의 종류는 다음과 같다.

  • new(생성): 프로세스가 생성 중이다
  • running(실행): 명령어들이 실행되고 있다.
  • waiting(대기): 프로세스가 어떤 사건이 일어나기를 기다린다.
  • ready(준비완료): 프로세스가 CPU에 할당되기를 기다린다.
  • terminated(종료): 프로세스의 실행이 종료되었다.

프로세스 제어 블럭

프로세스 제어블럭은 다음과 같은 정보들을 포함한다.

  • 프로세스 상태: new, ready, running, waiting, halted
  • 프로그램 카운터: 프로세스가 다음에 실행할 명령어의 주소
  • CPU레지스터: 누산기, 인덱스 레지스터, 스택 레지스터, 범용 레지스터들과 상태코드
  • CPU스케줄링 정보: 프로세스 우선순위, 스케줄링 큐에 대한 포인터, 스케줄링 매개변수
  • 메모리 관리 정보: 기준 레지스터, 한계 레지스터의 값, 페이지 테이블 또는 세그먼트 테이블
  • 회계 정보: CPU 사용 시간과 경과된 시간, 시간 제한, 계정 번호, 프로세스 번호
  • 입출력 상태 정보: 프로세스에 할당된 입출력 장치들, 열린 파일의 목록
profile
I'm a software engineer
post-custom-banner

0개의 댓글