📖
Mini's Today I Learned
  • Today I Learned
  • 💻Computer Science
    • 🧱Computer Science
      • Computer Architecture
    • 🦕OperatingSystem
      • System Structure
      • 01. 운영체제 역할
      • 02. History로 이해하는 운영체제
      • 03. 운영체제 구조
      • 04. 프로세스 스케쥴링
      • 05. 스케쥴링 알고리즘
      • 06. 프로세스 상태와 스케쥴러
      • 07. 인터럽트
      • 08. 프로세스와 컨텍스트 스위칭
      • 09. 프로세스간 커뮤니케이션(IPC 기법)
      • 10. Thread(스레드)
      • 11. 가상메모리 (Virtual Memory System)
      • 12. 파일시스템 이해
      • 13. 부팅의 이해
      • 14. 가상머신(Virtual Machine)
  • 📈Database
    • MySQL CLI (Frequently used)
    • 1-Tier, 2Tier, 3Tier
    • Basic SQL
    • Built in function
    • Sub Query
    • View
    • Stored Program
    • index
    • Normalization(정규화)
    • Transaction
    • Transaction
  • 🌐 Network
    • 🔌 TCP&IP Basic
      • 01 TCP/IP 맛보기
      • 02 TCP/IP 개요
      • 03 통신 서비스와 프로토콜
      • 04 애플리케이션 계층
      • 05 트렌스포트 계층
      • 06 네트워크계층
      • 07 데이터 계층과 물리계층
      • 08 라우팅
      • 09 보안
      • 10 HTTP 프로토콜
    • 🐿️HTTP 완벽 가이드 요약
      • 1. HTTP: 웹의 기초
      • 2. URL 과 리소스
      • 3. HTTP Message
      • 4. Connection Management
      • 5. Overview of web server architectures
      • 6. Proxies
      • 7.Caching
      • 8. Integration Points: Gateways, Tunnels, and Relays
      • 9. Web Robots
      • 10. HTTP/2.0
      • 11. Client Identification and Cookies
      • 12. Basic Authentication
      • 13. Digest Authentication
      • 14. Secure HTTP
      • 15. Entities and Encodings
      • 16. Internationalization
      • 17. Content Negotiation and Transcoding
      • 18. Web Hosting
  • 🏴Language
    • ☕JAVA
      • Comparable vs Comparator
  • 🛠️ Framework
  • 🧩Design Pattern
    • 객체 지향 설계 원칙 (SOLID)
    • Design Pattern 개요
    • Template method
    • Singleton
  • 🐥FrontEnd
    • HTML&CSS
      • 01 Intro
      • 02 HTML Basic
      • 03 Content Section
      • 04 Block and Inline Elements
      • 05 Text Contents
      • 06 Inline Elements
      • 07 Multi Media
      • 08 Table&Form&etc
      • 09 Global Attribute & etc
      • 10 css basic
      • 11 css config
      • 12 css unit
      • 13 Box Model
      • 14 Font & Text
      • 15 Float(띄움) & Position
      • 16 Background
      • 17 Transitions & Transforms
      • 18 Animation & Multi Columns(다단)
      • 19 Flex
      • 20 Grid
    • Sass(SCSS)
    • TypeScript
    • Webpack Introduction
      • 웹팩의 기본 구조
      • CommonJS
      • ESM
      • WebpackConfig
        • 1. Handlebars
        • 2. Caching
        • 3. Minification & Mangling
        • 4. Mode(Development mode & Production Mode)
        • 5. 이미지 파일 모듈로 다루어보기(file-loader)
        • 6. 이미지 파일 모듈로 다루어보기(url-loader)
        • 7. SASS Loader
        • 8. Post CSS
        • 9. BLOWSERS LIST
        • 10. Stylelint
        • 11. Babel
      • Webpack-Practice
    • ETC
      • GIT
      • MarkDown
Powered by GitBook
On this page

Was this helpful?

  1. Computer Science
  2. 🦕OperatingSystem

06. 프로세스 상태와 스케쥴러

  • 프로세스 상태

    • 스케쥴링 알고리즘이 어떤 특정 시점에, 어떤 proceess를 실행시킬지 판단해야하는데, 이 때 중요한 요인을 '프로세스의 상태정보' 라고 한다.

    • 프로세스 상태 종류

      • new: 프로세스 생성 중

      • ready state: CPU에서 실행 가능 상태(실행 대기 상태)

      • running state: 현재 CPU에서 실행상태

      • block state: 특정 이벤트 발생 대기 상태

        (예: 프린팅 다 되었다, 저장 매체에서, 파일 읽기 요청)

      • exit(terminated): 종료(시스템 자원을 풀어줘야하는 경우)

    • single core proceess 라면, running state는 하나.

  • 프로세스 상태 기반 스케쥴링 알고리즘

    • 프로세스 상태 간 관계

      • (파일 읽기 요청하면) 프로세스가 Running state => Block상태가 됨(특정 이벤트 대기)

      • Ready상태에 있는 다른 프로세스를 선택해서 Running state로 바뀜

      • 시분할 시스템과 같은 경우, 응답 시간을 줄이고자 running상태를 ready상태로 바꿈

      • Block 상태는 Ready상태로 변경이됨

    • state정보만 으로는 어떤 상태를 골라야할지 스케쥴러는 고민하게 됨

      그래서, 새로운 알고리즘을 고안 하게됨!

    • 예: state별로 queue를 둠(ready, running, block)

    • 참고: idle상태 > CPU가 아무것도 실행하지 않는 상태

  • 선점형과 비선점형 스케쥴러

    • 선점형 스케쥴러 (Preemptive Scheduling)

      • 하나의 프로세스가 다른 프로세스 대신에 프로세서(CPU)를 차지할 수 있음

      • 프로세스 running중에 스케쥴러가 이를 중단시키고 다른 프로세스로 교체 가능.

      • 중간에 강제 중단 시키고, 다른 프로세스를 실행하는 것을 구현하는 것이 어려워 후반에 나왔다.

      • 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용

      • 선점으로 인한 오버 헤드 초래할 수 있음

      • 선점을 위해 시간 배당을 위한 인터럽트용 타이머 클럭 필요

      • 종류: SRT, 선점 우선순위, RR(Round Robin), 다단계 큐, 등

    • 비선점형 스케쥴러 (Non-Preemptive Scheduling)

      • 하나의 프로세스가 끝나지 않으면, 다른 프로세스는 CPU를 사용할 수 없음

      • 프로세스가 자발적으로 blocking상태로 들어가거나,

      • 실행이 끝났을 때만 다른 프로세스로 교체 가능

      • 종류: FIFO(FCFS), SJF, 우선순위, HRN, 기한부(Deadline) 등

    • 비선점형 스케쥴러 => 선점형 스케쥴러

  • 스케쥴링 알고리즘 조합

    • 스케쥴러 구분(정책, policy)

      • FIFO, SJF, Priority-Based 는 어떤 프로세스를 먼저 실행 시킬 지에 대한 알고리즘

      • Round Robin은 시분할 시스템을 위한 기본 알고리즘

    • 조합 예시

      • 프로세스 실행: 정적 우선순위

      • 각 프로세스 스테이트(상태) 고려

      • CPU 선점: 시분할시스템(2초단위)

      • 선점형

    • 여러 알고리즘을 조합하여, 사용자가 편리할 수 있도록 개선 해야 한다.

    • 최신에는 훨씬 더 복잡한 알고리즘을 조합하지만, 현재는 위와 같은 사례를 학습.

  • 가볍게 듣기

    • 랙? 마우스/ 키보드 반응이 느린 경우?

      스케쥴러가 해결해야하는 이슈! 다양하고 복잡한 스케쥴링 알고리즘 필요

    • 리눅스 스케쥴러: O(1), CFS와 같이 다양한 방식으로 변경시도 중

      • 인터렉티브, IO, CPU 중심 프로세스로 미리 구분할 수 있다면 보다 개선된 스케쥴링이 가능함.

    • 프로세스 수가 많이 띄워져 있을수록, 실행 시간이 길어진다.

Previous05. 스케쥴링 알고리즘Next07. 인터럽트

Last updated 4 years ago

Was this helpful?

💻