운영체제(OS) & Network

프로세스(Process) (2)

jih0ssang 2023. 9. 13. 16:46

목차

    프로세스

    프로세스 생성

    • 프로세스가 또 다른 프로세스를 만든다
      • 부모 프로세스가 자식 프로세스 생성
        • fork(복제 생성)하여 생성
      • 프로세스의 트리(계층 구조) 형성
      • 로세스는 자원을 필요로 함
        • 운영체제로부터 공급 받는다.
        • 부모와 공유한다.
      • 원 공유 방식
        • 1. 부모와 자식이 모든 자원을 공유하는 모델
        • 2. 일부를 공유하는 모델
        • 3. 전혀 공유하지 않는 모델
      • 수행(Execution)
        • 부모와 자식은 공존하며 수행되는 모델
        • 자식이 종료(terminate)될 때까지 부모가 기다리는(wait) 모델
    • 주소 공간 (Address space)
      • 자식은 부모의 공간을 그대로 복사함 (binary and OS data)
      • 자식은 그 공간에 새로운 프로그램을 올림
    • 유닉스의 예
      • fork() 시스템 콜이 새로운 프로세스를 생성
        • 부모를 그대로 복사 (OS data except PID + binary)
        • 주소 공간 할당
      •  fork 다음에 이어지는 exec() 시스템 콜을 통해 새로운 프로그램을 메모리에 올림

     

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

    fork() 시스템 콜

    • 현 프로세스(부모)와 동일한 구조를 가진 프로세스(=자식)를 하나 더 생성한다.둘은 별개의 프로세스이다.(context 복사함)
    • 자식 프로세스의 새 주소 공간을 생성한다.

    • fork()를 하면 새로운 프로세스(자식)가 생성된다. 
    • PID == 0이 아니면 부모프로세스고, PID == 0이면 자식프로세스이다.

    exec() 시스템 콜

    • 현 프로세스는 exec 시스템 콜에 의해 다른 프로세스로 대체된다.(덮어쓴다)
    • PID는 동일
    • EX.
      • 자식 프로세스에게 다른 프로그램을 돌리게 하고 싶을 때 씀
        • fork() → exec()
      • 프로그램 갱신 및 업데이트, 새로운 프로그램 실행
      • execlp(“cp”, “cp”, “A”, “B”, (char*) 0);
      • (프로그램 이름 1, 2 , 프로그램에게 전달할 argument)

    wait() 시스템 콜

    • 프로세스 A가 wait() 시스템 콜을 호출하면
      • 커널은 자식 프로세스가 종료될 때까지 부모 프로세스를 sleep시킨다.(block 상태)
      • 자식 프로세스가 종료되면 커널은 부모 프로세스를 깨운다. (ready 상태)
        • 이제서야 cpu를 얻을 수 있다.
      • 사용하는 상황
        • Linux에서 Command를 입력하면 자식 프로세스로 처리한다. 이 때, 부모 프로세스는 wait()하여 block되고 자식 프로세스가 종료될 때까지 sleep된다. 

    exit() 시스템 콜

    • 프로세스 종료시키는 시스템 콜이다.
    • 분류
      • 자발적 종료
        • 명시적으로 코드 끝에 적어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어준다.
      • 비자발적 종료
        • 부모 프로세스가 자식 프로세스를 강제 종료시킴
          • 자식 프로세스가 한계치를 넘어서는 자원 요청
        • kill, break 등을 친 경우
        • 부모가 종료하는 경우
    • 명시적으로 쓰지 않아도 기본

    프로세스의 독자적 동작

    서로 관여하지 않는다.

    프로세스 간 협력

      • 독립적 프로세스
        • 프로세스 각 주소 공간(stack,data,code)을 가지고 수행. 서로 영향X
      • 협력 프로세스
        • 프로세스 협력 메커니즘으로 서로에게 영향O
      • 프로세스 간 협력 메커니즘(IPC: Interprocess Communication
        • 1. 메시지 전달 방법
          • message passing: 커널을 통해 메시지 전달
        • 2. 주소 공간 공유 방법
          • shared memory: 서로 다른 프로세스 간 일부 주소 공간 공유

    thread는 동일한 프로세스를 구성하는 쓰레들 간 주소 공간 공유하여 협력이 더 쉬운편 

    통신 방식

    1. 프로세스 A가 커널에게 메시지 전달
    2. 커널이 프로세스 B에게 메시지 전달 

    Message Passing

      • Message System
        • 프로세스 간 공유 변수를 사용하지 않고 통신
      • Direct Communication
        • 통신하는 프로세스의 이름을 명시적으로 표시

      • Indirect Communication
        • 통신하는 프로세스의 이름을 명시적으로 표시하지 않고, mailbox(또는 port)를 통해 메시지 간접 전달