프로세스와 관련된 시스템 콜

정하윤·2022년 8월 19일
0
post-custom-banner

fork( ) :create a child (copy)

exec( ): overlay new image

wait( ) : sleep until child is done

exit( ) : frees all the resources, notify parent

주소 공간

  • 자식은 부모의 공간을 복사함
  • 자식은 그 공간에 새로운 프로그램을 올림

유닉스의 예

  • fork ( ) 시스템 콜이 새로운 프로세스를 생성

    -부모를 그대로 복사(OS data except PID + binary)

    -주소 공간 할당

  • fork 다음에 이어지는 exac ( ) 시스템 콜을 통해 새로운 프로그램을 메모리에 올림

fork ( ) 시스템 콜


wait( ) 시스템 콜

-프로세스 A가 wait( )시스템 콜을 호출하면

  • 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다 (block 상태)
  • Child process가 종료되면 커널은 프로세스 A를 깨운다 (ready 상태)

exit( ) 시스템 콜

자발적 종료

  • 마지막 statement 수행 후 exit( ) 시스템 콜을 통해
  • 프로그램에 명시적으로 적어주지 않아도 main 함수가 리턴되는 위치에 컴파일러가 넣어줌

비자자발적 종료

  • 부모 프로세스가 자식 프로세스를 강제 종료시킴

    -자식 프로세스가 한계치를 넘어서는 자원 요청

-자식에게 할당된 태스크가 더 이상 필요하지 않음

  • 키보드로 kill,break 등을 친 경우
  • 부모가 종료하는 경우

-부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

프로세스 간 협력

독립적 프로세스

  • 프로세스는 각자의 주소 공간을 가지고 수행되므로 원칙적으로 하나의 프로세스는 다른 프로세스의 수행에 영향을 미치치 못함

협력 프로세스

  • 프로세스 협력 메커니즘을 통해 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

프로세스 간 협력 메커니즘(IPC: Interprocess Communication)

-메시지를 전달하는 방법

  • message passing: 커널을 통해 메시지 전달

-주소 공간을 공유하는 방법

  • shared memory : 서로 다른 프로세스 간에도 일부 주소 공간을 공유하게 하는 shared memory 메커니즘이 있음
  • thread : thread 는 사실상 하나의 프로세스이므로 프로세스 간 협력으로 보기는 어렵지만 동일한process를 구성하는 thread들 간에는 주소 공간을 공유하므로 협력이 가능

Message Passing

  • Message system

-프로세스 사이에 공유 변수를 일체 사용하지 않고 통신하는 시스템


프로세스는 그 특성에 따라 다음 두 가지로 나눔

  • I/O- bound process

    -CPU를 잡고 계산하는 시간보다 I/O에 많은 시간이 필요한 job

-(many short CPU bursts)

  • CPU - bound process

-계산 위주의 job

(few very long CPU bursts)

CPU Scheduler

  • Ready 상태의 프로세스 중에서 이번에 CPU를 줄 프로세스를 고른다

Dispatcher

  • CPU의 제어권을 CPU scheduler 에 의해 선택된 프로세스에게 넘긴다
  • 이 과정을 context switch(문맥 교환)라고 한다.

CPU 스케쥴링이 필요한 경우는 프로세스에게 다음과 같은 상태 변화가 있는 경우이다.

  1. Running →Blcoked (ex : I/O 요청하는 시스템 콜)
  2. Running →Ready (ex: 할당시간만료로 timer interrupt)
  3. Blocked →Ready (ex:I/O완료후 인터럽트)
  4. Terminate

1,4 에서의 스케쥴링은 nonpreemptive(=강제로 빼앗지 않고 자진반납)

2,3은 preemptive(=강제로 빼앗김)

post-custom-banner

0개의 댓글