5장 프로세스의 생성과 소멸 (1)

Lamjwi·2024년 1월 3일

Section 01 : 프로세스(process)의 이해

  • 오늘날의 운영체제를 가리켜 "멀티 프로세스(Multi-Process) 운영체제"라고 한다.
    • "프로세스라는 것이 여러 개 존재할 수 있는 운영체제"

프로세스란 무엇인가?

  • 실행 중에 있는 프로그램을 의미한다.
    • block.exe는 프로그램 -> 더블클릭 -> 메모리 할당 -> 바이너리 코드가 메모리에 올라감
    • 이순간부터 프로그램은 프로세스라 부른다.

프로세스를 구성하는 요소

Execution of "c" program

  • 공부하다 배운 메모리 구조
    • Data 영역
      • 전역변수나 static 변수를 할당
    • Stack 영역
      • 지역변수와 함수 호출시 전달되는 인자값들을 저장하는 곳
    • Heap 영역
      • 동적할당(malloc,c++(new))을 할때 쓰는 영역
    • Code(ROM)
      - 실행파일을 구성하는 명령어들이 올라가는 메모리 영역을 가리킨다.
      P130 5-2사진
  • 이 사진 자체가 프로세스라고 표현한다.
    • 프로그램 실행을 위해서 명령어들이 메모리 공간에 올라와 있는 상태이고, 프로그램 실행을 위해서 필요한 메모리 공간이 할당되어 있는 상태이기 때문이다.
    • 여러개의 프로그램을 돌리는 상황
      • 메모리 구조는 실행되고 있는 프로세스 개수 만큼 생성된다.

Register Set

  • 프로그램을 실행을 위해서 레지스터는 절대적으로 필요하다.
  • CPU 내에 존재하는 레지스터들은 현재 실행 중인 프로그램을 위한 데이터들로 채워진다.
  • 레지스터들의 상태까지도 프로세스의 일부로 포함시켜 말할 수 있다.

Section 02 : 프로세스의 스케줄링과 상태 변화

  • 질문 : "CPU는 하나인데, 어떻게 여러 개의 프로그램이 동시에 실행 가능한 것인가?"
  • 기본적으로 CPU는 한 순간에 하나의 프로그램만 실행 가능하다. 동시에 둘 이상의 프로그램을 실행시킬 수 없다.

프로세스의 스케줄링(Scheduling)

  • 해결할 방법
    • 하나의 CPU가 여러 개의 프로세스를 고속으로 번갈아 가면서 실행해야 한다.
      • CPU는 아주 빨라서 사람은 동시에 사용한다고 느낀다.
  • 멀티 프로세스 운영체제에서 여러 개의 프로세스가 실행되는 것처럼 보이는 이유?
    • 여러 개의 프로세스들이 CPU 할당 시간을 나누기 떄문이다.

스케줄링의 기본 원리

  • 스케줄링(Scheduling)
    • 프로세스의 CPU 할당 순서 및 방법을 가리
  • 스케줄링 알고리즘(Scheduling Algorithms)
    • 스케줄링에 사용되는 알고리즘
  • 스케줄러
    • 스케줄링 알고리즘을 적용해서 실제로 프로세스를 관리하는 운영체제 요소(모듈)이다.
    • 운영체제를 구성하는 중요한 요소 중 하나.
  • p133 5-3

멀티 프로세스는 CPU를 바쁘게 한다

  • 상황 A,B,C 프로세스를 돌려야되는 상황
  • 첫번쨰 : 고전적인 방법
    • A실행 A완전히 종료 B실행 B완전히 끝나고 C실행
    • 실행해야 할 일을 순차적으로 실행시키는 것
  • 두번쨰 : 동시에 실행되는 형태
    • A,B,C 다 실행시킨 후 스케줄러에 의해서 프로세스 관리
    • 정해진 순서에 의해서 CPU의 실행 시간을 나눠서 할당받아 실행하는 형태
  • 둘중에 뭐가 더 좋아보이는가?
  • 대충 생각하면 끝내는데 시간은 별차이없어보인다. 그러나 실행되는 프로그램의 특성에 따라서 많은 차이를 보인다.
  • 프로그램이 실행되는 과정에서 많은 시간을 I/O에 할당함.
    • I/O 종류
      • 데이터의 입력 및 출력.
      • 네트워크(인터넷)로 연결되어 있는 호스트(컴퓨터)와 데이터를 송-수신.
    • 입력 및 출력에 관련된 일을 할 경우 상당 시간 CPU는 아무 일도 하지 않고 대기한다.
      • 특별히 다른 일을 시키지 않는한.
  • I/O 측면만 고려한다면 고전적인 방식 < 멀티 프로세스 기반 프로세스 효율적
    • 고전적인거는 A가 I/O할떄 CPU는 아무일도 안함
    • BUT 멀티 프로세스는 처리하면 A가 I/O중일떄 B 실행 가능
  • 실행되어야 할 프로세스가 다수 존재하는 상황이라면, CPU에게 쉴 틈이 주어지지 않는다.

프로세스의 상태 변화

P134 5-4

  • 프로세스의 상태 변화를 보여주는 사진

상황 1 : S(Start)에서 Ready 상태로의 전이를 보여준다

  • S
    • 프로세스가 생성됨을 의미한다.
  • 프로세스 생성과 동시에 Ready 상태로 들어간다
    • Ready 상태에 있는 프로세스는 CPU에 의해 실행되기를 희망하는 상태
  • 의문
    • "프로세스가 생성되었으면, 바로 실행되어야 하는것 아닌가?"
    • 멀티 프로세스기 떄문에 스케줄러에 의해서 선택되기를 바라며, Ready 상태가 되어야 한다.

상황 2 : Ready 상태에서 Running 상태로의 전이를 보여준다.

  • Ready 상태에 있는 프로세스 중 스케줄러에 의해 선택된 프로세스는 Running 상태가 되어 실행되는것
    • 스케줄러는 스케줄링 알고리즘을 기반으로 Ready상태 프로세스 선택

상황 3 : Running 상태에서 Ready 상태로의 전이를 보여준다.

  • 프로세스들은 생성 시 중요도에 따라서 우선순위(Priority)라는 것이 메겨진다.
  • 우선순위 A > B
    • B가 실행중이다 A가 실행되면 B는 Ready가 되고 A가 Running상태가되고 A가 끝날떄까지 B는 Ready로 기달린다.
      p136 5-5사진

상황 4 : Running 상태에서 Blocked 상태로의 전이를 보여준다.

  • 실행 중에 있는 프로세스가 실행을 멈추는 상태(Blocked 상태)로 들어가는 것이다.
    • 데이터 입/출력에 관련된 일을 하는 경우에 발생한다.
    • 입/출력떄는 CPU에 의해서 프로세스가 더이상 실행 될 수 없다.
  • 데이터 입/출력을 진행하는 프로세스는 잠시 내려오게하고(Blocked 상태가 되게 하고), Ready 상태에 있는 프로세스 중 하나를 대신 실행시키는 것이 CPU를 효율적으로 사용하는 것.
  • P136 5-6

상황 5 : Blocked 상태에서 Ready 상태로의 전이를 보여준다.

  • Blocked 상태는 스케줄러에 의해서 선택될 수 없는 상태를 의미한다.
    • Ready 상태와의 가장 큰 차이점이다.
  • Ready 상태는 스케줄러에 의해 선택되어 지금 당장이라도 실행 가능한 상태
  • Blocked 상태는 스케줄러에 의해서 선택될 수 없는 상태이다.
    • 입/출력이 완료되면 Blocked -> Ready 가된다.

프로세스의 상태 변화, 시나리오 다시 이해하기

혼란의 최소화

  • Running 상태에서 Ready 상태로 전이되는 상황은 아직도 해 야 할 일이 있음에도 불구하고 어쩔 수 없이 다른 프로세스에게 실행을 양보하는 상황
  • Blocked 상태는 스케줄러 관심 밖에 있는 상태이다.

사진 으로 정리하기

Section 03 : 컨텍스트 스위치(Context Switching)

  • 지금까지는 장점만 말한것 단점도 존재한다
  • 실행 중인 프로세스(Running 상태의 프로세스)의 변경은 시스템에 많은 부하를 가져다 주기도 한다.
    • "CPU 내에 존재하는 레지스터들은 현재 실행 중에 있는 프로세스 관련 데이터들로 채워진다"
    • 고민
      • 실행 중인 프로세스가 변경되면 CPU 내에 존재하는 레지스터들의 값이 변경되기 떄문이다.
    • 프로세스 A 실행중에 프로세스 B를 실행(우선순위 A<B)한다고 가정
      • 프로세스 B가 실행되기 전에, 현재 레지스터들이 지니고 잇는 데이터들은 어디가에 저장해야만 한다.
      • 프로세스 A가 실행을 이어서 진행할 경우 필요한 데이터들이기 떄문이다.
  • 그림 P141 5-11 사진
  • 컨텍스트 스위칭 작업 단계 예시
    1. A가 실행 중이라 레지스터안에는 프로세스 A의 데이터가 들어있고 B는 현재 Ready 상태로 프로세스 b와 관련된 레지스터 정보가 메모리에 저장(Backup)되어 있당.
    2. B가 Running상태가 될경우 데이터로 레지스터들이 채워진당 그래야 작업을 이어서 진행 가능하다.
    3. B가 Running상태가 상태로 돌아가고, A는 Ready 상태로 빠져 나와야함.
  • p142 5-12사진
    • 이작업을 가리켜 컨텍스트 스위칭이라 함.
  • "실행되는 프로세스의 변경과정에서 발생하는 컨텍스트 스위칭은 시스템에 많은 부담을 준다."
  • 멀티 프로세스의 단점
    1. 레지스터 갯수 많을 경우 성능 저하
    2. 프로세스별로 관리되어야 할 데이터 종류가 많을 경우 성능 저하
  • 시스템을 디자인하는데 잇어서(프로그램 구현) 컨텍스트 스위칭 부담을 최소화 할려고 노력을 많이한다.

고려사항

  1. 프로그램 실행과정에서 발생하는 I/O를 고려해 보면, 멀티 프로세스 기반의 프로그램 실행은 많은 성능 향상
  2. 컨텍스트 스위칭이 미치는 영향을 고려한 경우, 오히려 성능에 저하를 가져올 수 있다.
  • 구현하는 프로그램에 성격에 따라 달라진다.

1차 24.01.03
2차 24.01.04
3차 24.01.05
4차 24.01.09
5차 24.01.10

profile
ㅇㅅㅇ

0개의 댓글