[시스템 소프트웨어]02-1 프로세스

yesman·2021년 12월 11일
0

시스템 소프트웨어

목록 보기
2/23

프로세스는 수행중인 프로그램이다. 운영체제를 이해하는데 가장 중요하다.

프로세스: 운영체제를 이해하기 위한 가장 기본적인 개념. 멀티프로그래밍의 기본 단위이다.
멀티 프로그래밍: 두개 이상의 프로그램이 도는 것.

프로세스 하나와 스레드 하나는 구분이 안된다. 프로세스가 실행되는 순서는 운영체제에서 스케줄링을 통해 정할 수 있다.

프로세스는 action이 일어나고 있음을 알려준다.
예를 들어 볶음밥 만드는 프로그램을 수행한다고 하면 실제로 진행 중일 때 볶음밥 만들기 프로세스라고 말할 수 있다. 다만 볶음밥을 만드는 것은 visible 하지만 프로그램의 수행은 invisible하다. 따라서 데이터의 시간에 대한 변화(stat, 상태 또는 snapshot)로써 그들을 관리함으로써 프로세스를 관리한다.

snapshot마다 변화를 볼 수 있으므로 관리가 가능한 것이다. 보이지 않지만 관리가 이루어져야한다.

program counter(PC)가 필요하다. 위치가 저장되어 있어서 프로그램의 어디를 실행하는지 알 수 있다. 다음에 해야할게 어디인지 저장하는 곳은 stack pointer(SP)이다.

예를 들어서 프로그램 실행이 A, B 순서로 되어 있다. 만약 프로그램 A를 실행하다가 A에서 함수를 호출하면 B의 위치를 SP에 저장하고 PC에 위치를 넣는다. CPU안에는 중요한 정보를 저장하는 register가 있고 snapshot안에 들어간다.

프로그램 카운터, 스택 포인터, 데이터, 레지스터를 모두 합치면 Program Counter Block(PCB)이 된다.

프로세스는 수행되면서 자신의 상태가 바뀐다. 이 상태는 연속적이지 않다. 상태 변화를 일으키는 이벤트로는 interrupt by timer, dispatch, I/O wait, I/O complete가 있다.

  • interrupt by timer: time slice(time slot)의 시간이 경과했음을 알려주는 event.
    다른 일을 하고 있을 때 신호를 보낸다. (time slot: 프로세스에 배당된 시간)
    두 개 이상의 프로세스가 실행중이면 스케줄링으로 timeslot을 배당해서 번갈아가면서 실행하도록 한다. timeslot이 다 됐다는 것을 알려주는 것이 interrupt by timer이다.
  • dispatch: 스케줄러에 의해 ready queue로부터 적절한 프로세스를 선택하여 CPU를 할당한다. (ready queue: 실행할 준비가 되어 있는 프로세스가 저장되어 있다.)
  • I/O wait: 어떤 프로세스가 I/O에 들어가서 오랫동안 머무를 경우 block 되어 다른 일을 할 수 있도록 한다.
  • I/O complete: I/O가 완료되었다는 event가 발생한다.

프로세스의 상태로는 5가지가 있다.

  • RUNNING: 실제로 CPU를 사용하는 상태. run queue를 사용할 수도 있다.
  • READY: 대기중인 상태에서 CPU가 선택을 하면 RUNNING상태가 된다. ready queue가 필요하다. CPU가 할당될 때까지 기다린다. 다른 프로세스이 실행되도록 즉시 멈춘 상태이다.
  • BLOCKED: 이벤트가 일어날 때까지 기다린다. 외부의 이벤트가 알려줄 때까지 실행 상태를 멈춘 상태. I/O이벤트가 일어난 후 기다리다가 오랜시간 입력이 없으면 BLOCKED상태가 된다. wait queue가 필요하다.
  • NEW: 프로세스가 생성된 상태. 생성된 후 ready queue에 저장됨. ready queue에서 스케줄링으로 뭘 실행 시킬지 선택한다.
  • TERMENATED: 프로세스의 실행이 끝난 상태.

프로세스의 상태 전이도

상태 변이에는 4가지가 있는데 자의, 타의로 나눌 수있다.

  • 타의
    dispatch: READY -> RUNNING
    timerunout: RUNNING -> READY
    wakeup: BLOCKED -> READY
  • 자의
    block: RUNNING -> BLOCKED
profile
유니티

0개의 댓글