[운영체제] 프로세스(2)

covy·2024년 1월 24일

CS) 운영체제

목록 보기
5/7

멀티 프로세스란?

  • 두개 이상 다수의 프로세서가 협력적으로 하나 이상의 작업을 동시에 처리하는 것이다. (병렬처리)
  • 각 프로세스 간 메모리 구분이 필요하거나 독립된 주소 공간을 가져야 할 경우 사용한다.

장점

  • 독립된 구조라서 안정성이 높다
  • 한 프로세스가 죽어도 다른 프로세스에 영향을 주지 않는다

단점

  • context switching시 멀티 스레드에 비해 비용이 많이 든다.

프로세스 수행상태 변화

  • 크게 시작, 준비, 실행, 봉쇄, 완료 단계로 나눌 수 있다.

new (시작)

  • 프로세스가 생성 중인 상태
  • 프로세스를 위한 각종 자료구조는 생성되었지만 메모리 획득을 하지 못한 상태

ready (준비)

  • CPU만 보유하면 바로 명령을 실행할 수 있지만 CPU 할당을 받지 못한 상태

running (실행)

  • 프로세스가 CPU를 보유하고 기계어 명령을 실행하고 있는 상태
  • 단일 CPU에서 실행상태에 있는 프로세스는 하나

waiting (봉쇄)

  • CPU를 할당받더라도 당장 명령을 실행할 수 없는 프로세스 상태

terminated (완료)

  • 프로세스가 종료 중인 상태
  • 작업은 끝났으나 자료구조를 완전히 정리 못한 상태

프로세스끼리 협력하는 방법

  1. 메시지 전달 방식

    프로세스는 다른 프로세스에게 전달할 메시지를 운영체제에게 시스템 콜 방식으로 요청해 전달한다.

  2. 공유 메모리 방식

    시스템 콜 방식을 통해 각 프로세스 간 공유하는 공간을 만들어, 프로세스 간 같은 공유 공간에 대해 읽고 쓸 수 있도록 한다.

fork() 명령어

유닉스에서 fork() 명령어는 새로운 프로세스를 생성하게 해주는 시스템 콜이다

fork() 시스템콜을 통해 부모 프로세스의 내용을 그대로 복제한 자식 프로세스를 생성할 수 있다

이때 부모 프로세스와 자식 프로세스의 주소 공간은 각각 따로 갖지만, 주소 공간 내에는 동일한 공간을 갖는다.

0개의 댓글