IT recording...

[OS] 4. 프로세스 시스템콜, 협력 - (3) 본문

Operating System

[OS] 4. 프로세스 시스템콜, 협력 - (3)

I-one 2022. 4. 24. 01:33

[이화여자대학교 반효경 교수님의 강의를 듣고 정리한 글입니다.]

운영체제

운영체제 운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각 www.kocw.net

 

운영체제

운영체제는 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로서 모든 컴퓨터 시스템의 필수적인 부분이다. 본 강좌에서는 이와 같은 운영체제의 개념과 역할, 운영체제를 구성하는 각

www.kocw.net


[그림과 함께 편하게 보려면 여기로]

https://adorable-aspen-d23.notion.site/OS-4-3-e40d2a8753a741289cad5e00340ca079

 

[OS] 4. 프로세스 시스템콜, 협력 - (3)

1. 프로세스 시스템콜

adorable-aspen-d23.notion.site

1. 프로세스 시스템콜

1. 프로세스 생성이란?

  • 부모 프로세스가 자식 프로세스를 생성하는 것
    • 프로세스의 트리(계층 구조)형성
    • 사용자 프로그램이 직접 생성할 수는 없고, 운영체제에 부탁해야 한다. (시스템 콜)
  • 보통 복제로 생성 후, 그 주소 공간에 새로운 프로그램 올림
    • fork() : 프로세스의 문맥을 복제 (code, data, stack, pc 등등)
      • 부모의 주소공간(Address Space)를 복사
    • exec() : 새로운 프로그램을 메모리에 올림
    ex) 과제같은 경우 템플릿은 복사하고 (fork), 새로 내용 작성함(exec)

2. 부모-자식 프로세스 관계

1. 부모와 자식이 공존하며 수행되는 모델

  • 부모와 자식이 경쟁함
    • Copy-On-Write(COW)
      • write 발생 전까지는 부모와 데이터를 공유하다가,
      • write가 발생했을 때 copy를 한다. (이후에 자식만의 데이터 꾸려나감)

2. 자식이 종료(terminated)될 때까지 부모가 기다리는 (wait)모델

  • 부모가 자식을 기다림

3. 프로세스 종료

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌

1. exit() 시스템콜

  • 항상 자식이 먼저 종료되고, 부모가 뒷처리를 담당
  • 프로세스의 각종 자원들이 운영체제에게 반납됨

2. abort() 시스템콜

  • 일 시키려고 자식 프로세스 생성했는데, 더 이상 시킬 일 없음
  • 자식이 너무 자원 막씀
  • 부모가 종료되어야 할 때 자식을 먼저 종료시켜야 함

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

1. fork()

  • 자식은 fork()가 일어난 이후 문맥부터 실행된다.
    • 부모의 문맥을 복제하기 때문에 PC도 복제되기 때문
  • pid : 부모와 자식 프로세스를 구분한다.
    • 부모 : 양수 / 자식 : 0

2. exec()

  • 새로운 프로그램으로 다시 태어남 → 독자적인 작업 수행이 가능하다.
  • 한 번 exec하게 되면 다시 돌아올 수 없다.
    • 오른쪽의 경우 1 > 3 까지만 출력되고 2는 출력되지 않음

3. wait()

  • 프로세스 A가 wait()시스템콜을 호출하면
    • 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다. (block 상태)
    • child process가 종료되면 커널은 프로세스 A를 깨운다. (ready 상태)
  • ex) shell 프롬포트에서 하나의 프로그램이 띄워져 있음. 커서 깜박깜빡이면서 다른 프로그램 입력을 기다리는 프로그램
    • → 다른 프로그램이 입력되어서 실행되면 wait이 되고 , 자식 프로그램 종료를 기다림
    • → 자식 프로그램이 종료되면 다시 커서 깜빡깜빡이면서 실행

4. exit()

  • 프로세스 자발적 종료
    • exit() 시스템콜을 통해
    • 프로그램에 명시적으로 넣어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어줌
  • 프로세스 비자발적 종료
    • 부모 프로세스가 자식 프로세스를 강제 종료시킴
      • 자식 프로세스가 한계치를 넘어서는 자원 요청
      • 자식에게 할당된 태스크가 더이상 필요하지 않음
    • 키보드로 kill, break등을 친 경우
      • ctrl+c, 인터넷 창 X 버튼 등
    • 부모가 종료하는 경우
      • 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

2. 프로세스 간 협력

1. 프로세스 간 협력이란? (IPC : Interprocess Communication)

  • 독립적 프로세스
    • 원칙적으로 프로세스는 각자의 주소 공간을 가지고 있으며 매우 독립적이다.
    • 자기 메모리 주소 공간만 볼 수 있음
  • 협력 프로세스
    • 경우에 따라 프로세스가 협력을 해야만 효율적으로 실행되는 경우가 존재한다.
    • 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

1. 메시지를 전달하는 방법 (Message Passing)

  • 메모리 공간을 공유하지 않기 때문에 공유 변수 같은 것이 존재하는 것이 아님
  • ⇒ 커널을 통해 메시지를 전달한다.
    • Direct communication : 전달받을 프로세스의 이름을 명시
    • Indirect Communication : 전달받을 프로세스 이름 명시X, mailbox혹은 port를 통해 간접적으로 전달

2. 주소 공간을 공유하는 방법 (Shared Memory)

  • 시스템콜을 통해 메모리 공간을 공유하겠다는 요청을 한다.
    • 두 프로세스의 물리적 주소 공간이 겹치게 매핑됨

1. 프로세스 시스템콜

1. 프로세스 생성이란?

  • 부모 프로세스가 자식 프로세스를 생성하는 것
    • 프로세스의 트리(계층 구조)형성
    • 사용자 프로그램이 직접 생성할 수는 없고, 운영체제에 부탁해야 한다. (시스템 콜)
  • 보통 복제로 생성 후, 그 주소 공간에 새로운 프로그램 올림
    • fork() : 프로세스의 문맥을 복제 (code, data, stack, pc 등등)
      • 부모의 주소공간(Address Space)를 복사
    • exec() : 새로운 프로그램을 메모리에 올림
    ex) 과제같은 경우 템플릿은 복사하고 (fork), 새로 내용 작성함(exec)

2. 부모-자식 프로세스 관계

1. 부모와 자식이 공존하며 수행되는 모델

  • 부모와 자식이 경쟁함
    • Copy-On-Write(COW)
      • write 발생 전까지는 부모와 데이터를 공유하다가,
      • write가 발생했을 때 copy를 한다. (이후에 자식만의 데이터 꾸려나감)

2. 자식이 종료(terminated)될 때까지 부모가 기다리는 (wait)모델

  • 부모가 자식을 기다림

3. 프로세스 종료

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌

1. exit() 시스템콜

  • 항상 자식이 먼저 종료되고, 부모가 뒷처리를 담당
  • 프로세스의 각종 자원들이 운영체제에게 반납됨

2. abort() 시스템콜

  • 일 시키려고 자식 프로세스 생성했는데, 더 이상 시킬 일 없음
  • 자식이 너무 자원 막씀
  • 부모가 종료되어야 할 때 자식을 먼저 종료시켜야 함

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

1. fork()

  • 자식은 fork()가 일어난 이후 문맥부터 실행된다.
    • 부모의 문맥을 복제하기 때문에 PC도 복제되기 때문
  • pid : 부모와 자식 프로세스를 구분한다.
    • 부모 : 양수 / 자식 : 0

2. exec()

  • 새로운 프로그램으로 다시 태어남 → 독자적인 작업 수행이 가능하다.
  • 한 번 exec하게 되면 다시 돌아올 수 없다.
    • 오른쪽의 경우 1 > 3 까지만 출력되고 2는 출력되지 않음

3. wait()

  • 프로세스 A가 wait()시스템콜을 호출하면
    • 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다. (block 상태)
    • child process가 종료되면 커널은 프로세스 A를 깨운다. (ready 상태)
  • ex) shell 프롬포트에서 하나의 프로그램이 띄워져 있음. 커서 깜박깜빡이면서 다른 프로그램 입력을 기다리는 프로그램
    • → 다른 프로그램이 입력되어서 실행되면 wait이 되고 , 자식 프로그램 종료를 기다림
    • → 자식 프로그램이 종료되면 다시 커서 깜빡깜빡이면서 실행

4. exit()

  • 프로세스 자발적 종료
    • exit() 시스템콜을 통해
    • 프로그램에 명시적으로 넣어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어줌
  • 프로세스 비자발적 종료
    • 부모 프로세스가 자식 프로세스를 강제 종료시킴
      • 자식 프로세스가 한계치를 넘어서는 자원 요청
      • 자식에게 할당된 태스크가 더이상 필요하지 않음
    • 키보드로 kill, break등을 친 경우
      • ctrl+c, 인터넷 창 X 버튼 등
    • 부모가 종료하는 경우
      • 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

2. 프로세스 간 협력

1. 프로세스 간 협력이란? (IPC : Interprocess Communication)

  • 독립적 프로세스
    • 원칙적으로 프로세스는 각자의 주소 공간을 가지고 있으며 매우 독립적이다.
    • 자기 메모리 주소 공간만 볼 수 있음
  • 협력 프로세스
    • 경우에 따라 프로세스가 협력을 해야만 효율적으로 실행되는 경우가 존재한다.
    • 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

1. 메시지를 전달하는 방법 (Message Passing)

  • 메모리 공간을 공유하지 않기 때문에 공유 변수 같은 것이 존재하는 것이 아님
  • ⇒ 커널을 통해 메시지를 전달한다.
    • Direct communication : 전달받을 프로세스의 이름을 명시
    • Indirect Communication : 전달받을 프로세스 이름 명시X, mailbox혹은 port를 통해 간접적으로 전달

2. 주소 공간을 공유하는 방법 (Shared Memory)

  • 시스템콜을 통해 메모리 공간을 공유하겠다는 요청을 한다.
    • 두 프로세스의 물리적 주소 공간이 겹치게 매핑됨

1. 프로세스 시스템콜

1. 프로세스 생성이란?

  • 부모 프로세스가 자식 프로세스를 생성하는 것
    • 프로세스의 트리(계층 구조)형성
    • 사용자 프로그램이 직접 생성할 수는 없고, 운영체제에 부탁해야 한다. (시스템 콜)
  • 보통 복제로 생성 후, 그 주소 공간에 새로운 프로그램 올림
    • fork() : 프로세스의 문맥을 복제 (code, data, stack, pc 등등)
      • 부모의 주소공간(Address Space)를 복사
    • exec() : 새로운 프로그램을 메모리에 올림
    ex) 과제같은 경우 템플릿은 복사하고 (fork), 새로 내용 작성함(exec)

2. 부모-자식 프로세스 관계

1. 부모와 자식이 공존하며 수행되는 모델

  • 부모와 자식이 경쟁함
    • Copy-On-Write(COW)
      • write 발생 전까지는 부모와 데이터를 공유하다가,
      • write가 발생했을 때 copy를 한다. (이후에 자식만의 데이터 꾸려나감)

2. 자식이 종료(terminated)될 때까지 부모가 기다리는 (wait)모델

  • 부모가 자식을 기다림

3. 프로세스 종료

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌

1. exit() 시스템콜

  • 항상 자식이 먼저 종료되고, 부모가 뒷처리를 담당
  • 프로세스의 각종 자원들이 운영체제에게 반납됨

2. abort() 시스템콜

  • 일 시키려고 자식 프로세스 생성했는데, 더 이상 시킬 일 없음
  • 자식이 너무 자원 막씀
  • 부모가 종료되어야 할 때 자식을 먼저 종료시켜야 함

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

1. fork()

  • 자식은 fork()가 일어난 이후 문맥부터 실행된다.
    • 부모의 문맥을 복제하기 때문에 PC도 복제되기 때문
  • pid : 부모와 자식 프로세스를 구분한다.
    • 부모 : 양수 / 자식 : 0

2. exec()

  • 새로운 프로그램으로 다시 태어남 → 독자적인 작업 수행이 가능하다.
  • 한 번 exec하게 되면 다시 돌아올 수 없다.
    • 오른쪽의 경우 1 > 3 까지만 출력되고 2는 출력되지 않음

3. wait()

  • 프로세스 A가 wait()시스템콜을 호출하면
    • 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다. (block 상태)
    • child process가 종료되면 커널은 프로세스 A를 깨운다. (ready 상태)
  • ex) shell 프롬포트에서 하나의 프로그램이 띄워져 있음. 커서 깜박깜빡이면서 다른 프로그램 입력을 기다리는 프로그램
    • → 다른 프로그램이 입력되어서 실행되면 wait이 되고 , 자식 프로그램 종료를 기다림
    • → 자식 프로그램이 종료되면 다시 커서 깜빡깜빡이면서 실행

4. exit()

  • 프로세스 자발적 종료
    • exit() 시스템콜을 통해
    • 프로그램에 명시적으로 넣어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어줌
  • 프로세스 비자발적 종료
    • 부모 프로세스가 자식 프로세스를 강제 종료시킴
      • 자식 프로세스가 한계치를 넘어서는 자원 요청
      • 자식에게 할당된 태스크가 더이상 필요하지 않음
    • 키보드로 kill, break등을 친 경우
      • ctrl+c, 인터넷 창 X 버튼 등
    • 부모가 종료하는 경우
      • 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

2. 프로세스 간 협력

1. 프로세스 간 협력이란? (IPC : Interprocess Communication)

  • 독립적 프로세스
    • 원칙적으로 프로세스는 각자의 주소 공간을 가지고 있으며 매우 독립적이다.
    • 자기 메모리 주소 공간만 볼 수 있음
  • 협력 프로세스
    • 경우에 따라 프로세스가 협력을 해야만 효율적으로 실행되는 경우가 존재한다.
    • 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

1. 메시지를 전달하는 방법 (Message Passing)

  • 메모리 공간을 공유하지 않기 때문에 공유 변수 같은 것이 존재하는 것이 아님
  • ⇒ 커널을 통해 메시지를 전달한다.
    • Direct communication : 전달받을 프로세스의 이름을 명시
    • Indirect Communication : 전달받을 프로세스 이름 명시X, mailbox혹은 port를 통해 간접적으로 전달

2. 주소 공간을 공유하는 방법 (Shared Memory)

  • 시스템콜을 통해 메모리 공간을 공유하겠다는 요청을 한다.
    • 두 프로세스의 물리적 주소 공간이 겹치게 매핑됨

1. 프로세스 시스템콜

1. 프로세스 생성이란?

  • 부모 프로세스가 자식 프로세스를 생성하는 것
    • 프로세스의 트리(계층 구조)형성
    • 사용자 프로그램이 직접 생성할 수는 없고, 운영체제에 부탁해야 한다. (시스템 콜)
  • 보통 복제로 생성 후, 그 주소 공간에 새로운 프로그램 올림
    • fork() : 프로세스의 문맥을 복제 (code, data, stack, pc 등등)
      • 부모의 주소공간(Address Space)를 복사
    • exec() : 새로운 프로그램을 메모리에 올림
    ex) 과제같은 경우 템플릿은 복사하고 (fork), 새로 내용 작성함(exec)

2. 부모-자식 프로세스 관계

1. 부모와 자식이 공존하며 수행되는 모델

  • 부모와 자식이 경쟁함
    • Copy-On-Write(COW)
      • write 발생 전까지는 부모와 데이터를 공유하다가,
      • write가 발생했을 때 copy를 한다. (이후에 자식만의 데이터 꾸려나감)

2. 자식이 종료(terminated)될 때까지 부모가 기다리는 (wait)모델

  • 부모가 자식을 기다림

3. 프로세스 종료

  • 프로세스가 마지막 명령을 수행한 후 운영체제에게 이를 알려줌

1. exit() 시스템콜

  • 항상 자식이 먼저 종료되고, 부모가 뒷처리를 담당
  • 프로세스의 각종 자원들이 운영체제에게 반납됨

2. abort() 시스템콜

  • 일 시키려고 자식 프로세스 생성했는데, 더 이상 시킬 일 없음
  • 자식이 너무 자원 막씀
  • 부모가 종료되어야 할 때 자식을 먼저 종료시켜야 함

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

1. fork()

  • 자식은 fork()가 일어난 이후 문맥부터 실행된다.
    • 부모의 문맥을 복제하기 때문에 PC도 복제되기 때문
  • pid : 부모와 자식 프로세스를 구분한다.
    • 부모 : 양수 / 자식 : 0

2. exec()

  • 새로운 프로그램으로 다시 태어남 → 독자적인 작업 수행이 가능하다.
  • 한 번 exec하게 되면 다시 돌아올 수 없다.
    • 오른쪽의 경우 1 > 3 까지만 출력되고 2는 출력되지 않음

3. wait()

  • 프로세스 A가 wait()시스템콜을 호출하면
    • 커널은 child가 종료될 때까지 프로세스 A를 sleep시킨다. (block 상태)
    • child process가 종료되면 커널은 프로세스 A를 깨운다. (ready 상태)
  • ex) shell 프롬포트에서 하나의 프로그램이 띄워져 있음. 커서 깜박깜빡이면서 다른 프로그램 입력을 기다리는 프로그램
    • → 다른 프로그램이 입력되어서 실행되면 wait이 되고 , 자식 프로그램 종료를 기다림
    • → 자식 프로그램이 종료되면 다시 커서 깜빡깜빡이면서 실행

4. exit()

  • 프로세스 자발적 종료
    • exit() 시스템콜을 통해
    • 프로그램에 명시적으로 넣어주지 않아도 main함수가 리턴되는 위치에 컴파일러가 넣어줌
  • 프로세스 비자발적 종료
    • 부모 프로세스가 자식 프로세스를 강제 종료시킴
      • 자식 프로세스가 한계치를 넘어서는 자원 요청
      • 자식에게 할당된 태스크가 더이상 필요하지 않음
    • 키보드로 kill, break등을 친 경우
      • ctrl+c, 인터넷 창 X 버튼 등
    • 부모가 종료하는 경우
      • 부모 프로세스가 종료하기 전에 자식들이 먼저 종료됨

2. 프로세스 간 협력

1. 프로세스 간 협력이란? (IPC : Interprocess Communication)

  • 독립적 프로세스
    • 원칙적으로 프로세스는 각자의 주소 공간을 가지고 있으며 매우 독립적이다.
    • 자기 메모리 주소 공간만 볼 수 있음
  • 협력 프로세스
    • 경우에 따라 프로세스가 협력을 해야만 효율적으로 실행되는 경우가 존재한다.
    • 하나의 프로세스가 다른 프로세스의 수행에 영향을 미칠 수 있음

1. 메시지를 전달하는 방법 (Message Passing)

  • 메모리 공간을 공유하지 않기 때문에 공유 변수 같은 것이 존재하는 것이 아님
  • ⇒ 커널을 통해 메시지를 전달한다.
    • Direct communication : 전달받을 프로세스의 이름을 명시
    • Indirect Communication : 전달받을 프로세스 이름 명시X, mailbox혹은 port를 통해 간접적으로 전달

2. 주소 공간을 공유하는 방법 (Shared Memory)

  • 시스템콜을 통해 메모리 공간을 공유하겠다는 요청을 한다.
    • 두 프로세스의 물리적 주소 공간이 겹치게 매핑됨

'Operating System' 카테고리의 다른 글

[OS] 6. CPU 스케줄링  (0) 2022.04.24
[OS] 5. 쓰레드  (0) 2022.04.24
[OS] 3. 프로세스 스케줄링 - (2)  (0) 2022.04.24
[OS] 2. 프로세스란? - (1)  (0) 2022.04.24
[OS] 1. 운영체제  (0) 2022.04.24
Comments