운영체제 프로세스 관리

NOAH·2021년 1월 10일
0

OS

목록 보기
5/5
post-thumbnail

프로세스 생성(Process Creation)

  • 생성 :
    부모 프로세스가 자식 프로세스를 생성합니다.
  • 공유 :
    운영체제로 부터 자원을 받으며, 자식 프로세스와 자원을 공유합니다. 자원은 부모-자식 모두 공유, 일부 공유 또는 공유 하지 않을 수 있습니다.
  • 수행(Exucution) :
    부모와 공존하며 수행되는 모델, 자식인 종료(terminate)될 때까지 부모가 기다리는 모델이 있습니다.
  • Copy on write(COW)
    내용이 바뀔 때(Write) 부모의 코드-데이터-스택을 복사해서 새로운 것을 만드는 것(Copy)
  • 주소 공간(Adderss space)
    자식은 부모 공간을 복사(Binary and OS Data)하여 새로운 그로그램을 올립니다.

프로세스와 관련한 시스템콜(fork)

  • 유닉스의 예
    fork() 시스템콜이 새로운 프로세스를 생성하면 부모를 그대로 복사하고 다음에 이어지는 exec() 시스템콜은 새로운 프로그램을 메모리에 올립니다.

fork의 결과 값이 0 이냐 1이냐에 따라서 부모인지, 자식인지 분별할 수 있습니다. 자식프로세스는 PC(program conter)는 fork() 밑의 코드부터 가리키케 됩니다. 이런식으로 fork()를 하는 순간에 새로운 프로세스가 만들어집니다.

프로세스와 관련한 시스템콜(exec)

  • exec() 시스템콜을 만나게되면 그 다음 명령어를 실행하는 것이 아니라, 그 이전의 기억은 모두 잊고, 프로그램을 새 출발을 하게 됩니다. 위의 경우에는 누군가가 코딩해둔 date라는 프로그램이 main()부터 다시 실행됩니다.

프로세스와 관련한 시스템콜(wait)

  • wait()
    프로세스에 wait() 시스템 콜이 호출되면 자식 프로세스가 종료 될때 까지 부모 프로세스는 잠들어 있다가, 자식프로세스가 종료되면 실행됩니다.

프로세스와 관련한 시스템콜(exit)

  • 자발적 종료
    마지막 statement가 수행 후 자동적을 exit()시스템 콜을 통해서 종료되며, 프로그램에 명시적으로 넣어주지 않아도 컴파일러가 main()함수가 종료될 때에 넣어줍니다.
  • 비자발적 종료
    자식프로세스가 한계치가 넘는 메모리를 요구하거나 할당된 테스크가 별로 필요하지 않을 경우 부모프로세스가 자식프로세스를 강제로 종료 시킵니다. 키보드로 kill, break를 치거나 하면 실행됩니다.

프로세스 간 협력 Message Passing

기본적으로 프로세스는 독자적인 코드-데이터-스택을 각자의 주소 공간을 가지고 독립적으로 작동합니다.

  • 메시지 통신 방식 (Message passing)

    프로세스간 통신은 메시지 송수신을 통해서 이루어집니다.프로세스간의 통신은 항상 운영체제 커널을 통해서 메시지를 패싱합니다. 상대의 이름을 명시하느냐 그렇지 않느냐에 따라 간접/직접 통신을 나뉩니다.

  • 공유 메모리 (shared memory)
    상당한 신회 관게를 가진 프로세스간에 일부 주소 공간을 공유하게 하는 메커니즘

*thread
사실상 하나의 프로세스이므로 프로세스간 형렵으로 보기는 어렵지만 하나의 프로세스안에서 같은 주소를 공유하는 쓰레드끼리 협력이 가능합니다.

Interprocess communication, CPU and I/O Bursts in Program Execution

프로그램에 따라서 빈번도의 약간의 차이는 있을 수 있지만, 프로그램의 패쓰는 CPU burst와 I/O burst이 반복되면서 프로그램은 실행됩니다.

CPU-burst Time의 분포

I/O bound jobd 빈도수가 빈번하게 짧은 시간동안 CPU를 사용합니다. 주로 사람과 양방향 작업(interactive job)이므로 사람이 답답하지 않게 CPU를 I/O bound job가 선점할 수 있도록 스케쥴링합니다.
대부분의 CPU bound job은 계산 위주의 작업으로 빈번하진 않지만 연속적으로 CPU를 점유하는 시간이 상대적으로 길다.

프로세스의 특성 분류

CPU Scheduler & Dispatcher

  • CPU Scheduler
    운영체제 내의 기능 중하나, 준비상태의 프로세스 중에 CPU를 줄 프로세스를 고릅니다.
  • Disptcher
    운영체제의 기능 중 하나, CPU제어권을 스케쥴러에 의해 선택된 프로세스에 넘겨줍니다.
  • process 상태 변화
    (1). Running -> Blocked ( I/O 요청하는 시스템 콜)
    (2). Running -> Ready ( 할당시간 만료로 Timer Interrupt)
    (3). Block -> Ready ( I/O 완료후 인터럽트)
    (4). Terminate
    (1),(4) = nonpreemptive(= 자진반납)
    (2),(3) = preemptiv(= 강제반납)

0개의 댓글