프로그램은 어떻게 실행되나?

litien·2019년 11월 17일
0

프로그램은 어떻게 실행되나?

프로그램은 하드디스크에 존재하는 명령어집합으로서 실행 시 다음과 같은 과정을 거칩니다.

  1. 하드디스크에 적재되어 있는 프로그램이 프로세스 풀에 올라옵니다. 이때가 프로세스 실행주기 중 new에 해당됩니다.

  2. 장기 스케쥴러에 의해 프로세스 풀에 올라와 있는 프로세스 중 하나가 선택되어 ready que로 들어오게 되어 메모리가 할당됩니다.

  3. 단기 스케쥴러에 의해 ready que에 있는 프로세스 중 하나에게 cpu 자원을 할당합니다. 자원을 할당 받은 프로세스는 running 상태가 됩니다. 이때 ready que에서 어떤 프로세스를 선택할지는 cpu 스케쥴링 알고리즘에 의해 결정됩니다.

위가 프로세스 관점에 본 프로그램 동작 과정입니다. 그러나 유닉스 계열에서는 루트 프로세스만 이렇게 실행을 하고 다른 프로세스는 아래와 같은 복제기법을 거쳐 실행됩니다.

  1. 현재 실행중인 프로세스(OS)에서 시스템 콜 exec를 통해 자식 프로세스를 생성합니다.
  2. exec는 내부적으로 fork를 통해 프로세스를 복사 생성하고, 이때 인자로 받은 파일 위치에 있는 코드와 데이터를 복사 생성된 프로세스에 덮어 씌웁니다.
  • 본 포스팅은 11번가 온라인 스터디를 진행 중에 제가 출제한 문제에 대한 솔루션입니다.
profile
어려운 문제를 함께 풀어가는 것을 좋아합니다.

0개의 댓글