[운영체제] 프로세스와 프로세스 스케쥴링

꾸준히·2023년 3월 15일
0
post-thumbnail

📌 프로세스 란?

우리가 프로그램을 실행하면 해당 프로그램은 메모리에 올라가서 실행된다. 이렇게 메모리 위에서 실행 중인 프로그램을 "프로세스"라는 이름으로 부른다.

📌 프로세스 스케쥴링

📜 프로세스 스케쥴링?

우리는 시스템을 사용해서 여러 프로그램을 실행한다. 그렇다면 어떠한 순서로 이 프로세스들을 동작시킬지 결정하는 방법이 프로세스 스케쥴링이다.
가장 쉽게는 먼저 실행한 순서대로 실행시킬 수 있을 것이다 (배치 처리 시스템).

한번에 하나의 프로세스만 동작시킬 수 있다면, 어떠한 프로세스가 끝나길 기다려야 다음 프로세스가 실행 될 것이다. 이는 간단하지만 비효율적이다. 해당 프로세스의 동작 중, CPU를 점유하지 않을때 (ex. 데이터 조회 등)는 다음 프로세스를 중간중간 실행 시킬 수도 있다. 이렇게 하나의 CPU 점유 사간을 잘게 쪼개서 여러 프로세스에 할당 한다면, 조금더 효율적이고 빠른 스케쥴링 기법이 될 수 있을 것이다(멀티 태스킹)

그렇다면 여러 작업을 동시에 수행하는 것 말고, 하나의 작업을 하는데 성능을 높힐 수는 없을까? 여러개의 CPU를 사용하면 된다. 여러 CPU(프로세스)에 하나의 프로그램을 잘라서 병렬로 실행하도록 하면 실행속도와 성능이 극대화 될 것이다. (멀티 프로세싱)

그리고 웹이나 서버와 같이 다중 사용자가 동시에 하나의 프로세스에 접근하여 사용하고 싶을 수도 있을 것이다. 이럴 경우 멀티 태스킹과 마찬가지로 CPU 점유시간을 잘게 쪼개서 여러 사용자에게 할당 시켜서 다중사용자의 사용환경에서 응답시간을 최소화 시킬 수 있는 스케쥴링 기법도 있다.(시분할 시스템)

💡 시분할 vs 멀티 프로세싱

두 기법 모두 구현상 하나의 프로세스를 잘게 쪼개어 작업을 할당한다는 공통점이 있다.(구현상의 공통점)
하지만 두 기능의 목적은 확연히 다르다.

  • 시분할 시스템: 다중 사용자 지원을 위한 목적
  • 멀티 프로세싱: CPU의 활용도를 높히는 것이 목적

💡 멀티 태스킹 vs 멀티 프로세싱

  • 멀티 태스킹 : 단일 CPU에서 여러 작업을 동시에 실행되어 보이도록 하는것
  • 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행 속도를 극대화 하는 것

📜 메모리 계층과 멀티 프로세싱

멀티 프로세싱의 동작 방식을 이해하려면 메모리 계층을 이해할 필요가 있다.
우선 메모리 계층은 아래 그림과 같다.

위 구조는 시스템이 여러 종류의 메모리로 이루어져 있다는 것을 보여준다. 그리고 위 사진이 피라미드 구조인 것에 주목해 보자. 이 뜻은 위로 갈 수록 용량이 적고, 아래로 갈 수록 용량이 크다는 뜻이다. 그리고 용량이 적은 메모리는 왜 쓰느냐? 속도가 빠르기 때문에 쓰는 것이다.

필요한 데이터가 레지스터에 저장되어 있다면 속도가 빠르겠지만, 데이터가 하드디스크에 저장되어 있는경우 데이터 조회 시간이 오래 걸린다. CPU는 점유상태이지만 계산에 사용되지 않는 유휴 상태가 되는 것이다.

이 유휴 상태를 이용하여 다른 작업을 수행할 수 있을 것이다. 그렇다면 CPU의 효율이 극대화 될 것이다. 이렇게 작업을 시간단위로 잘게 쪼개 스케쥴링을 하는 기법이 멀티 프로세싱이다.

0개의 댓글