[운영체제] 프로세스 스케쥴링 - (2)

Yeongsan Son·2021년 6월 24일
0

이번에는 멀티프로그래밍과 컴퓨터 구조에 대해서 간단히 알아보자.

멀티 프로그래밍의 목적은 최대한 CPU를 많이 활용하도록록 시스템을 동작하는데 있다.

이는 시간 대비 CPU 활용도를 높일 수 있고, 응용 프로그램을 짧은 시간 안에 실행을 완료할 수 있도록 해준다.

CPU 활용도 계산해보기

  • time: 프로그램 실행에 걸린 총 시간
  • realTime: CPU 실행 시간
  • CPU 활용도 = realTime / time

멀티 프로그래밍

  • 응용 프로그램은 온전히 CPU를 사용하기 보다, 다른 작업을 중간에 필요로 하는 경우가 많다.

    • 응용 프로그램이 실행되다가 파일을 읽는다
      => 저장매체에 접근(CPU 관점에서 굉장히 느린 장치)
      => 저장 매체에 접근하는 시간 동안 다른 작업을 실행하지 못함

    • 응용 프로그램이 실행되다가 프린팅을 한다

코드로 보는 멀티 프로그래밍

#Include <unistd.h>
#Include <sty/types.h>
#Include <sys/stat.h>
#Include <fcntl.h>

Int main() 
{
  int fd:
  fd = open('data.txt'.O_RDONLY);
  if(fd=-1)
  {
    printf("Error: can not open file₩n");
    /*파일을 열지 못했으므로 종료*/
    return 1;
  }
  else
  {
    printf(*File opend and now close_₩n*);
    close(fd);
    return ();
  }
}
  • 사용자 모드에서 프로그램 실행: CPU가 순차적으로 실행
  • open() 시스템 콜 호출: data.txt 파일을 오픈하라는 명령
    => CPU 관점에서 시간이 오래 걸리는 작업
    => 다른 응용프로그램을 실행하기에 좋은 구간
  • 커널 모드로 전환
  • opne() 함수를 처리하는 sys_open() 커널 함수 호출
  • 파일 열기 수행
  • 사용자 모드로 전환
  • open() 함수 이후의 프로그램 실행

컴퓨터 구조 - 메모리 계층

이미지출처

CPU 레지스터의 처리 속도와 다른 하드웨어의 처리 속도를 비교해 보면 왜 멀티프로그래밍이 필요한지 알 수 있다.

컴퓨터 구조 - 시스템 버스

CPU는 시스템 버스라는 통로를 통해서 데이터를 가지고 온다.

이는 실행 시간이 오래 걸리기에 다른 입출력 장치에 데이터를 가져오도록 명령하고 CPU는 다른 프로그램을 처리한다.

정리

실제로는 시분할 시스템, 멀티프로그래밍, 멀티 태스킹이 유사한 의미로 통용됨

핵심은 여러 응용 프로그램의 실행을 가능하도록 할 수 있다는 것이다.

응용 프로그램이 동시에 실행되는 것처럼 보이도록 함

CPU를 놀지 않게 응용 프로그램을 실행하도록 해서, 짧은 시간 안에 응용 프로그램이 실행 완료될 수 있도록 함

컴퓨터 응답 시간을 짧게 해서 다중 사용자 지원

  • 시분할 시스템: 다중 사용자 지원을 목표
    • 컴퓨터 응답 시간을 최소화하는 시스템
  • 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이도록 하는 시스템
  • 멀티 프로세싱: 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행하도록 해서 실행 속도를 높이는 방법
  • 멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용할 수 있도록 하는 시스템
profile
매몰되지 않는 개발자가 되자

0개의 댓글