운영체제(2)

2023. 3. 15. 12:33zerobase/CS

728x90

   운영체제 스케줄링 기본

    ● 배치 처리 시스템

        ○ 여러 프로그램을 순차적으로 실행시킬 수 있도록 해야함

            -  어떤 프로그램은 실행이 너무 시간이 많이 걸려서, 다른 프로그램이 실행하는데 시간을 많이 기다 려야 한다.

 

    ● 시분할 시스템

        ○ 시분할 시스템: 다중 사용자 지원을 위해 컴퓨터 응답 시간을 최소화하는 시스템

            -  여러 사용자가 동시에 하나의 컴퓨터를 쓰려면 어떻게 해야 하나요? (다중 사용자 지원)

 

    ● 멀티 태스킹

        ○ 멀티 태스킹: 단일 CPU에서, 여러 응용 프로그램이 동시에 실행되는 것처럼 보이도록 하는 시스템

             - 나는 MP3 음악을 들으며, 문서 작성을 한다.

        ○ 10 ~ 20 ms 단위로도 실행 응용 프로그램이 바뀜

 

    ● 멀티 프로그래밍

        ○ 최대한 CPU를 많이 활용하도록 하는 시스템

             -  응용 프로그램은 CPU외 다양한 하드웨어 사용 (파일 읽기)

 

    ● 메모리 계층 ‑ 컴퓨터 구조 이해

 

    ● System Bus ‑ 컴퓨터 구조 이해

 

    ● 멀티 프로그래밍과 Wait

        ○ 멀티 프로그래밍: CPU 활용도를 극대화 하는 스케쥴링 알고리즘

        ○ Wait: 간단히 저장매체로부터 파일 읽기를 기다리는 시간으로 가정

 

    ● 멀티 태스킹과 멀티 프로세싱

        ○ 멀티 태스킹: 단일 CPU

        ○ 멀티 프로세싱: 여러 CPU에 하나의 프로그램을 병렬로 실행해서 실행속도를 극대화시키는 시스템

 

 

    ● 현업, IT 기술과 컴퓨터공학의 이해

        ○ 프로그램 성능을 높이는 방법

            - 가능한 메모리상에서 실행하도록 해야 함

            - 예: Redis, Scala

   

    ● 정리

        ○ 시분할 시스템: 다중 사용자 지원, 컴퓨터 응답시간을 최소화하는 시스템

        ○ 멀티 태스킹: 단일 CPU에서 여러 응용 프로그램을 동시에 실행하는 것처럼 보이게 하는 시스템

        ○ 멀티 프로그래밍: 최대한 CPU를 일정 시간당 많이 활용하는 시스템

        ○ 멀티 프로세싱: 여러 CPU에서 하나의 응용 프로그램을 병렬로 실행해서, 실행속도를 높이는 기법

 

스케쥴링 알고리즘 구현 이해

    ● 스케쥴링 알고리즘

        ○ 목표

            - 시분할 시스템 예: 프로세스 응답 시간을 가능한 짧게

            - 멀티 프로그래밍 예: CPU 활용도를 최대로 높혀서, 프로세스를 빨리 실행

 

    ● FIFO 스케쥴러

        ○ 프로세스가 저장매체를 읽는 다든지, 프린팅을 한다든지 하는 작업 없이, 쭉 CPU를 처음부터 끝까지 사용한다.

        ○ 가장 간단한 스케쥴러 (배치 처리 시스템)

        ○ FCFS (First Come First Served) 스케쥴러

 

    ● 최단 작업 우선(SJF,Shortest Job First) 스케쥴러

        ○ 가장 프로세스 실행시간이 짧은 프로세스부터 먼저 실행을 시키는 알고리즘

        ○ SJF 스케쥴러도 실제로 좋은 개발자답게 작성한다면?

            - 자료구조와 알고리즘에 익숙한 상태라면, 좋은 개발자는 분명히 최소한 우선순위 큐와 힙 자료구 조 사용을 고려할 것임 (시간복잡도가 O(nlogn) 임)

            - 스케쥴러는 운영체제 핵심기능으로 빈번하게 호출되므로, 스케쥴러 알고리즘은 운영체제 성능에 큰 영향을 미침

            - 왜 자료구조와 알고리즘이 필요한지, 코딩테스트를 왜 보는지 이해할 수 있음

 

「가끔 이야기가 나오는 용어 알아두기

● RealTime OS(RTOS): 응용 프로그램 실시간 성능 보장을 목표로 하는 OS

○ 정확하게 프로그램 시작, 완료 시간을 보장

○ Hardware RTOS, Software RTOS

● General Purpose OS(GPOS): 프로세스 실행시간에 민감하지 않고, 일반적인 목적으로 사용되는 OS

○ 예: Windows, Linux 등 」

 

    ● 우선순위 기반(Priority‑Based) 스케쥴러

        ○ 정적 우선순위

            - 프로세스마다 우선순위를 미리 지정

        ○ 동적 우선순위

            - 스케쥴러가 상황에 따라 우선순위를 동적으로 변경

 

    ● Round Robin 스케쥴러

 

    ● 프로세스 상태 기반 스케쥴러

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

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

        ○ block state: 특정 이벤트 발생 대기 상태(예: 프린팅이 다 되었다!)

 

    ● 프로세스 상태간 관계

        ○ ready, running, block states

 

    ● 정리

        ○ FIFO (FCFS) 스케쥴링 알고리즘 (배치 처리 시스템)

        ○ 최단 작업 우선(SJF) 스케쥴링 알고리즘

        ○ 우선순위 기반 스케쥴링 알고리즘

            - 정적 우선순위, 동적 우선순위

        ○ Round Robin 스케쥴링 알고리즘

            - 시분할 시스템

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

            - 멀티 프로그래밍

 

    ● 현업, IT 기술과 컴퓨터공학의 이해

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

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

        ○ 최근 리눅스 스케쥴러: O(1) 와 같이 보다 효율적인 알고리즘을 사용 중

        ○ 현업 프로그램은 성능에 민감함

            - 대용량 서비스

        ○ 성능을 위해 꼭 체크해야 하는 포인트

            - 당신의 프로그램이 IO‑bound 냐, CPU‑bound 냐

            - IO‑bound : IO 관련 기능이 주로 사용하는 프로그램

            - CPU‑bound : CPU / 메모리를 주로 사용하는 프로그램

'zerobase > CS' 카테고리의 다른 글

Cross Browsing(크로스 브라우징)  (0) 2023.03.30
운영체제(3)  (0) 2023.03.15
운영체제(1)  (0) 2023.03.15
컴퓨터 구조(Computer Science)(2)  (0) 2023.03.11
컴퓨터 구조(Computer Science)(1)  (0) 2023.03.05