Study 5주차 정리_Operating System

Park Jae Hong·2022년 7월 8일
0

CPU 스케줄링

: CPU는 프로그램의 기계어 명령을 실제로 수행하는 컴퓨터 내의 중앙 처리 장치이다. 프로그램이 시작되어 메모리에 올라가면 프로그램 카운터(PC) 라는 이름의 레지스터가 현재 CPU 에서 수행할 코드의 메모리 주소값을 가지고 있게 된다.

기게어 명령어

  • CPU 내에서 수행되는 명령
    ex) Add 명령 : CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저장하는 명령이다. 이러한 명령은 CPU 내의 레지스터에 있는 두 값을 더해 레지스터에 저장하는 명령
    수행 속도가 매우 빠름

  • 메모리 접근을 필요로 하는 명령
    ex) Load 명령 : 메모리에 있는 데이터를 CPU로 읽어 들이는 명령,
    Store 명령 : CPU 에서 계산된 결과 값을 메모리에 저장하는 명령.
    비교적 짧음

  • 입출력을 동반하는 명령
    : 이 외에 키보드로 부터 입력을 받거나 화면에 출력, 디스크를 읽어오는 명령에 해당
    시간이 오래 걸림

사용자 프로그램이 수행되는 과정

: CPU와 I/O 작업의 반복으로 구성된다. 프로그램이 수행되는 중에 I/O를 요청하면 CPU의 제어권이 운영체제 커널로 넘어갈 뿐 아니라 상대적으로 매우 느린 입출력 장치의 접근이 필요하게 된다. 이와 같은 프로그램 수행은 서로 다른 두 단계의 조합으로 이루어 진다.

  1. 사용자 프로그램이 CPU 를 직접 가지고 빠른 명령을 수행하는 일련의 단계 : CPU 버스트(burst) -> 프로그램이 I/O를 한 번 수행한 후 다음 I/O를 수행하기까지 직접 CPU를 가지고 명령을 수행하는 작업.

  2. I/O 요청이 발행해 커널에 의해 입출력 작업을 진행하는 비교적 느린 단계이다. I/O 버스트 -> I/O 작업이 요청된 후 완료 되어 다시 CPU 버스트로 돌아가기까지 일어나는 작업

CPU 버스트와 I/O 버스트가 차지하는 비율에 따라 I/O 바운드 프로세스, CPU 바운드 프로세스로 나누어 볼수 있다.

  • I/O 바운드 프로세스
    : I/O요청이 빈번해 CPU 버스트가 짧게 나타나는 프로세스를 말한다.
    -> 사용자로 부터 인터랙션을 계속 받아가명 수행 시키는 대화형 프로그램

  • CPU 바운드 프로세스
    : I/O 작업을 거의 수행하지 않아 CPU 버스트가 길게 나타나는 프로세스
    -> 프로세스 수행의 상당 시간을 입출력 작업 없이 CPU 작업에 소모하는 계산 위주의 프로그램


CPU 스케줄러

:준비 상태에 있는 프로세스들 중 어떠한 프로세스에게 CPU를 할당 할지 결정하는 운영체제 코드.

CPU 스케줄링이 필요한 경우

  • 실행 상태에 있던 프로세스가 I/O 요청 등에 의해 봉쇄 상태로 바뀌는 경우

  • 실행 상태에 있던 프로세스가 타이머 인터럽트 발생에 의해 준비 상태로 바뀌는 경우

  • I/O 요청으로 봉쇄 상태에 있던 프로세스의 I/O 작업이 완료되어 인터럽트가 발생하고 그 결과 이 프로세스의 상태가 준비 상태로 바뀌는 경우

  • CPU에서 실행 상태에 있는 프로세스가 종료되는 경우


CPU 스케줄링 방식

  • 비선점형 방식
    : CPU를 획득한 프로세스가 스스로 CPU를 반납하기 전까지는 CPU를 빼앗기지 않는 방법

  • 선점형 방식
    : 프로세스가 CPU를 계속 사용하기를 원하더라도 강제로 빼앗을 수 있는 방식
    -> 방법으로는 할당시간(time quantum)을 부여한 후 타이머 인터럽트를 발생시키는 방법


디스패처

: CPU 스케줄러가 어떤 프로세스에게 CPU를 할당해야 할지 결정하고나면 선택된 프로세스에게 실제로 CPU를 이양하는 작업이 필요하다.
이와 같이 새롭게 선택된 프로세스가 CPU를 할당받고 작업을 수행할 수도 있도록 환경설정을 하는 운영체제의 코드를 디스패처라고 부른다.

디스패처 수행과정

  1. 현재 수행 중이던 프로세스의 문맥을 그 프로세스의 PCB에 저장

  2. 새롭게 선택된 프로세스의 문맥을 PCB로부터 복원

  3. 프로세스에게 CPU를 넘기는 과정을 수행

  4. 새로운 프로세스의 문맥을 복원시킨 후에는 시스템의 상태를 사용자모드로 전환해 사용자 프로그램에게 CPU의 제어권을 넘긴다.

  5. 사용자 프로그램 카운터로 부터 현재 수행할 주소를 찾을 수 있게 된다.

디스패처가 하나의 프로세스를 정지시키고 다른 프로세스에게 CPU를 전달하기까지 걸리는 시간을 디스패치 지연시간 이라고 하며, 이때 대부분은 문맥교환 오버헤드에 해당된다.

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글