ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [정보처리기사]기사따기10일차_3과목_운영체제_2_190204
    자격증/정보처리기사-합 2024. 11. 24. 11:02
    반응형

    # 최초 등록일 : 2024년 11월 24일 11:02

    # 최근 변경일 : 2024년 11월 24일 11:02

    # 내용 : 정보처리기사 필기 3과목 공부 후 정리한 내용 올리기

     

    이전 기사따기9일차는 아래에 링크로

     

    [정보처리기사]기사따기9일차_3과목_운영체제_1_190203

    # 최초 등록일 : 2024년 11월 23일 21:57# 최근 변경일 : 2024년 11월 23일 21:57# 내용 : 정보처리기사 필기 3과목 공부 후 정리한 내용 올리기 이전 기사따기8일차는 아래에 링크로 [정보처리기사]기사따

    doradorabean.tistory.com

     

    이건 많이 언급되는 단어

    이건 내가 궁금한거 쳐봐서 나온 결과

     

    ------------------------------------------------------------------------------------------------------------------------------

     

    2.프로세스 관리

    프로세스 개념

     

    프로세스의 개념

     - 주기억 장치에 상주된 프로그램이 CPU에 의해서 처리되는 상태, 즉 현재 실행되고 있는 프로그램

     - 프로세서가 할당되는 개체로서 디스패치(Dispatch 추후 설명)가 가능한 단위이다.

     - 비동기적 행위1를 일으키는 주체이다.

     - 프로시저가 활동 중인 상태, 즉 CPU가 할당되는 실체

     - 운영체제가 관리하는 최소 단위의 적업

     

    프로세스의 상태

    1) 프로세스 상태 전이도

     

     - 준비(Ready) 상태 : 프로세스가 처리기(CPU)를 사용하고 있지는 않지만 언제든 사용할 수 있는 상태

     - 실행(Run) 상태 : 프로세스가 CPU를 차지하고 있는 상태, 명령이 실행되고 있는 상태

     - 대기(Block, Wait) 상태 : 어떤 사건이 일어나기를 기다리고 있는 상태, 입출력 작업 중인 상태

     

    3) 프로세스 상태의 변화

     - 디스패치(Dispatch) : 준비 상태에 있는 여러 프로세스 중 프로세스를 선정하여 CPU를 할당하는 시점

     - 할당 시간 종료(Timer Run Out) : 자신에 할당된 시간만큼 CPU를 사용하고 준비 상태로 변하는 시점

     - I/O(입출력) 발생 : I/O 행위가 필요하여 대기 상태로 이동하는 시점

     - 꺠움(Wake up) : I/O 작업이 완료되어 준비 상태로 이동하는 시점

     - 프로세스의 모든 자원 이용 순서는 요청 -> 사용 -> 해재로 이루어진다.

     - 시간 할당량(Time Slice, Quantum) : 프로세스가 CPU를 사용하는 시간

     

    4) 스풀(Spool)과 버퍼링(Buffering)

     - 스풀 : 프로그램과 이를 이용하는 I/O 장치와의 속도차를 극복하기 위한 장치로 대부분 하드 디스크가 중재

     - 버퍼링 : CPU와 입출력 장치와의 속도 차이를 줄이기 위해 메모리가 중재

     

    인터럽트(Interrupt) 처리

     

    인터럽트의 개념

    1) 인터럽트 : 프로세스가 수행 중에 다른 프로세스를 수행하기 위하여 현재 수행 중인 프로세스를 중단하거나 외부 입력 장치에 의해 프로세스가 중단되는 상태

    2) 인터럽트 처리를 위한 작업 순서 : 운영체제가 제어권을 받음 -> 현재의 프로세스 상태를 저장 -> 지정되어 있는 루틴으로 제어권을 넘겨줌 -> 인터럽트 처리 -> 이전 프로세스 상태로 복구 -> 그 시점 이후부터 프로세스 실행

     

    인터럽트 종류

    1) SVC 인터럽트 : SuperVisor Call은 감시 프로그램을 호출시 발동하며 입출력 수행 루틴 호출, 기억 장치 할당 루팅, 오퍼레이터와의 대화등을 위해 발생하는 인터럽트

    2) 입출력 인터럽트 : I/O 인터럽트는 하드웨어적 인터럽트로 입출력 채널 확인, 준비, 할당, 완료 시에 발생한다.

    3) 외부 인터럽트 : External 인터럽트는 외적인 요인으로부터 발생하며, 인터럽트 시계에 의해 프로세스가 시간 할당량이 종료된 경우다.

    4) 재시작 인터럽트 : Restart 인터럽트는 사용자에 의해서 운영체제를 메모리에 다시 상주시킬 때 발생한다.

    5) 프로그램 검새 인터럽트 : Program Check는 프로그램 명령어를 수행하는 과정에서 부분적으로 발생되는 문제들에 의해 발생

                                           Overflow나 Underflow 상태 시, 나눗셈에서 분모가 0인 경우 발생

    6) 기계 검사 인터럽트 : Hardware Check 인터럽트는 시스템의 기계 고장시 발생한다.

     

    문맥 교환(Context Switching)

    1) 문맥 교환의 개념 : CPU가 할당되는 프로세스를 변경하기 위하여 현재 CPU를 사용하여 실행되고 있는 프로세서의 상태 정보를

                                  저장하고 제어권을 인터럽트 서비스 루틴에게 넘기는 작업

       프로그램 실행 -> 프로그램 중단 -> 문맥 교환 -> 인터럽트 처리 -> 인터럽트 서비스 루틴 -> 프로그램 중단 부분 재실행

     

    2) 문맥 교환과 시간 할당량

     - 문맥 교환과 인터럽트 : 문맥 교환이 많이 일어난다는 것은 인터럽트가 많이 발생한다는 것이다.

     - 문맥 교환과 시간 할당량 : 시간 할당량이 작아지면 문맥 교환 수, 인터럽트 횟수, 오버헤드가 증가하고 여러개 프로세스가 동시에 수행되는 느낌을 갖는다.

     

    프로세스 제어 블록(PCB : Process Control Block)

     - 운영체제 내에서 한 프로세스의 존재를 정의함, 각 프로세스를 구분하기 위한 프로세스 정보 블록이다.

     

     

      1. 프로세스 식별자 : 프로세스들을 구분할 수 있는 태그

      2. 프로세스 현재 상태 : 현재 상태를 기억시킴 (준비, 실행, 대기 상태)

      3. 프로그램 카운터(계수기) : 다음에 실행되는 명령어의 주소 = (PC : Program Counter)

      4. 프로세스 우선순위 : 프로세스의 우선순위에 대한 정보를 기억

      5. 프로세스가 적재된 기억 장치 부분을 가리키는 포인터 : 프로세스 시작 기억 장치의 시작 번지

      6. 프로세스에 할당된 자원을 가리키는 포인터 : 프로세스 처리 중에 필요한 자원의 정보를 갖고 있는 기억 장소의 시작 번지를 기억

      7. 처리기 레지스터 정보

      8. CPU의 각종 레지스터 상태를 가리키는 포인터 : 1비트로 구정된 레지스터의 비트열 값을 기억

      9. 계정 정보 : CPU 사용 시간의 정보, 각종 스케줄러에 필요한 정보

      10. 기억 장치 관리 정보 : 적재될 기억 장치의 상한치, 하한치, 페이지 테이블 등의 정보를 기억시킴

      11. 입출력 정보 : 프로세스 수행 시 필요한 주변 장치, 파일들의 정보를 기억

      12. 부모 프로세스를 가리키는 포인터

      13. 자식 프로세스를 가리키는 포인터

     

    중앙 처리 장치(CPU) 스케줄링

     

    CPU 스케줄링

    1) CPU 스케줄링의 개념 : CPU나 자원을 효과적이며 생산성 있게 사용하기 위한 소프트웨어적 계획

    2) 스케줄러의 종류 : 상위(시스템 내의 자원 관리) 중위(CPU 스케줄러) 하위(디스패치의 시기 결정하는 프로세스 스케줄러)로 나뉨

    3) 프로세스 스케줄링(Process Scheduling)의 목적

     - 모든 프로세스들에게 공정하게 배정

     - 단위 시간당 가능한 최대한 많은 양이 처리될 수 있도록

     - 응답 시간이 신속해야함

     - 거의 같은 시간과 비용으로 실행될 수 있어야 함.

     - 오버헤드를 최소화 하며 자원이 사용하지 않는 시간이 없도록 유지해야함.

     - 응답 시간과 자원의 활용 간 적절한 균형이 필요하며, 프로세스가 무한정 기다리를 것을 피해야 한다.

     - 프로세스 상태를 파악하고 우선순위를 부여하고, 체증이 발생하지 않도록 조절해야함.

     

    4) 프로세스 스케줄링의 성능 평가 기준 : CPU 이용율, 처리 능력(Throughput), 대기 시간(Waiting Time), 응답시간(Response Time), 반환 시간(Turn-around Time)

     

    프로세스 스케줄링 알고리즘

    1) 프로세스 스케줄링 알고리즘의 개념 : 다중 프로그래밍 방식에서 CPU의 사용률과 처리율을 최대로 하기 위한 방법

    2) 비선점(Non Preemptive)형 방식과 선점(Preemptive)형 방식의 비교

     비선점형  선점형
     * 프로세스가 CPU에 할당되면 권한을 뺏을 수 없음
     * 일괄 처리 방식 적합
     * 대화형, 시간 분할, 실시간 시스템에 부적
     * 응답 시간 예측이 용이
     * 문맥교확이 적어서 오버헤드가 적음
     * FIFO, SJF, HRN 등이 대표
     * 프로세스가 CPU에 할당되면 우선순위가 높으면
        빼앗을 수 있다.
     * 일괄 처리 방식에 부적합
     * 대화형, 시간 분할, 실시간 시스템에 적당
     * 응답 시간 예측이 어려움
     * RR, SRT, MFQ 방식이 여기에 속함

    비선점형 방식

    1) FIFO(First Input Fist Out put, FCFS : First Come Fist Served)

     - 먼저 입력된 작업을 먼저 처리하는 방식으로 가장 간단한 방법.

     - 큐 방식을 이용한 프로세스 처리 방식이다.

     

    2) SJF(Shortest Job Fist, 최단 작업 우선) 스케줄링

     - 작업이 끝나기까지의 실행 시간 추정치가 가장 작은 작업을 먼저 실행시키는 방식, 즉, 짧은 작업들을 우선적으로 처리

     - 주의할 점은 긴 작업일지라도 이미 CPU를 점유하고 있다면 뒤로 밀려나지 않고 처리됨. 다음 작업들을 대상으로 재정리

     - 평균 대기 시간을 최소화함.

     - 노화(Aging) 기법2 사용 해결.

     

    3) HRN(Highest Response-ratio Next) 스케줄링

     - 서비스 시간과 대기 시간의 비율을 고려한 스케줄링 방법이다.

     - 

     

    4) 우선순위 스케줄링 : 대기 리스트에 있는 프로세스들에게 작업의 우선순위를 부여하여 CPU를 할당하는 방법

    5) 기한부(Deadline) 스케줄링 : 제한된 시간 내에 반드시 작업이 완료되도록 스케줄링 하는 방식, 그 시간 만큼에 CPU 사용 시간을 제한

     

    선점형 방식

    1) 라운드 로빈(RR : Round-Robin) 스케줄링

     - 시간 할당량만큼씩 CPU를 사용하는 방법

     - FIFO 스케줄링을 선점형으로 변환한 방식

     

    2) SRT(Shortest Remaining Time) 스케줄링

     - 작업이 끝나기 까지 "남아 있는" 실행 시간의 추정치가 가장 낮은 프로레스를 먼저 실행하는 방식

     - 서비스 받은 시간을 기록하기 때문에 오버헤드가 늘어난다.

     - 실행 시간을 추적해야 하므로 오버헤드가 증가함

     - 임계 치(Threshold Value)3를 사용

     

    3) 다단계 피드백 큐(MFQ : Multi level Feedback Queue) 스케줄링

     

     - 짧은 작업이나 CPU를 적게 사용하는 입출력 작업들은 최상위 큐에서 빨리 처리하자는 것.

     - 즉, 처음의 프로세스들은 FIFO 방식으로 A 대기 리스트레 쌓은 다음 RR로 관리가 된다.  아래로 내려갈 수록 RR의 대기 기준 시간은 늘어나게 되고, 마지막에는 그냥 단순 RR방식으로 프로세스를 처리한다.

     - 우선순위가 빠른 처리속도가 빠른 프로세스가 들어오면 도중에 인터럽트 후에 프로세스를 차지하여 실행시킨다.

     

    4) 다단계 큐(MQ : Multi-level Quere)

     

     - 선점과 비선점을 결합한 스케줄링으로써, 우선순위가 높을 수록 A에 가깝게 배치시키고 낮으면 E에 배치시킨다.

     - MFQ와 마찬가지로 우선순위가 높은 프로그램이 들어오면 인터럽트 후에 그 위 대기리스트를 처리한다.

     

    병행 프로세스와 교착상태

     

    임계 구역(Critical Section, 위험 지구)

    1) 임계 구역의 개념 : 다중 프로그래밍 운영체제에서 한 순간에 여러 개의 프로세스에 의하여 공유되는 데이터 및 자원에 대하여, 반드시 하나의 프로세스에 의해서만 자원 또는 데이터가 사용되도록 하는 것, 또는 그런 구역.

    2) 임계 구역의 원칙 : 두 개 이상의 프로세스가 동시에 사용 불가. 순서를 지키면서 신속하게 사용. 하나의 프로세스가 독점 불가 중단, 무한 반복되어서도 안된다. 인터럽트가 불가능한 상태로 만드러야 한다.

    3) 임계 구역의 구현 조건

     - 한 프로세스가 임계 구역을 수행 중일 경우, 어떤 다른 프로세스도 임계 구역을 수행해서는 안된다.

     - 영역에 대한 진입 요청 후, 일정 시간 내에 진입을 허락해야함.

     - 임계 구역에서 실행되는 프로세스가 없는 경우, 잔류 영역 이외에 있는 프로세스는 임계 영역에 진입 불가

     - 임계 구역 내의 프로세스는 다른 프로세스가 임계 구역 내로 들어오는 것을 허용할 수 있는 권하는 없다.

     

    4) 공유 자원 : 하나의 컴퓨터시스템에서 여러 개의 프로세스가 운영되고 있을 때 각 프로세스는 동시에 접근해서는 안 되는 공유 자원을 임계 구역이라 할 수 있음

     

    5) 프로세스 간 데이터 전달(프로세스 통신)

     - 두 개 이상의 프로세스가 하나의 결과 값을 얻기 위해 협력 가능. 이러한 공유 기억 장소를 임계 구역 이라 함.

     

    상호배재(Mutual Exclusion)

    1) 상호배재 개변 : 임계 구역을 어느 시점에서 단지 한 개의 프로세스만이 사용할 수 있도록 하며, 접은하려고 할 때 금지하는 행위

    2) 상호배재 알고리즘

     - 인터럽트 불능 처리 : 하나의 프로세스가 하나의 공유 자원을 점유하게 되면 인터럽트를 발생하지 않도록 봉쇄

     - 잠금(Lock) : 공유 자원을 점유하게 되는 경우에 그 자원을 어떠한 프로세스도 접근하지 못하도록 하는 방법

     - 엄격한 교대(Dekker 알고리즘) : 두 개 이상의 프로세스가 교대로 공유 자원을 점유하는 방식

     - 엄격한 교대의 문제점 : 항상 하나의 프로세스가 우선권을 갖게 해야하며, 교대로 점유해야함.

                                       사용 중에 중단되면 다른 프로세스는 영원히 사용할 수 없는 교착상태에 빠짐

                                       바쁜 대기(Busy Wait)4 현상은 계속 발생함.

     - TSL(Test & Set Lock) 명령어 기법 : 엄격한 교대의 문제점을 해결, 특수한 하드웨어 자원을 이용해 자원을 공유하는 법

     

    세마포어(Semaphore)

    1) 세마포어 종류

     - 이진 세마포어 : 세마포어 변수가 오직 0과 1의 값을 가지며 하나의 임계구역만을 상호 배제하기 위한 알고리즘

     - 산술(계수형) 세마포어 : 세마포어 변수가 0과 양의 정수를 값으로 가지며 임계 구역을 여러 개 관리하기 위한 상호배재 알고리즘.

    2) 산술 세마포어 구현 : P, V 연산 (아래 설명)에 의해 임계 구역의 접근을 제어함.

    3) 세마포어의 특징

     - 상호배제를 위한 알고리즘

     - 여러 개의 프로세스가 동시에 그 값을 수정하지 못함.

     - 세마포어에 대한 연산은 처리 중에 인터럽트 되어서는 안 된다.

     - 소프트웨어나 하드웨어로 구현이 가능하다.

     - 알고리즘은 프로세스 사이의 동기를 유지

     - V 조작은 블록 큐에 대기 중인 프로세스를 깨움, P 조작은 임계 영역을 사용하려는 프로세서들의 진입 여부를 결정하는 조작

     

    모니터(Monitor)

    1) 모니터의 개념 : 상호배제를 위한 데이터 및 프로그램 모듈로, 운영체제 내부의 프로그램

    2) 모니터의 특징 : 병행성 구조이며 자원을 원하는 프로세스는 반드시 해당 모니터의 진입부의 호출해야 함.

                              외부의 프로세스는 모니터 내부의 데이터를 직업 액세스할 수 없다.

                              자료 추상화와 정보 은폐의 개념을 기초적으로 하며, 스위치 개념을 사용하여 한순간에 하나에 모니터에 진입한다.

                              연산은 Wait와 Signal이 있으며, 상호배제는 모니터의 경계에서 일어난다.

     

    교착상태(Dead-Lock)

    1) 교착상태 정의 : 두 개 이상의 프로세스가 하나의 자원을 공유하여 사용하고 있을 때 서로가 사용 중인 자원을 요구하지만 요구를 영원히 들어줄 수 없는 상태

    2) 교착상태 발생 필수 4대 요소(필요 충분 조건)

     - 상호배제(Mutual Exclusion)

     - 점유와 대기(Hold & Wait)

     - 비선점(Non Preemption)

     - 순환 대기(Circular Wait, 환형 대기)

     

    3) 교착상태 해결 방안

     - 교착상태 예방(Prevention) : 상호배제 부정, 점유와 대기 부정, 비선점 부정, 순환 대기 부정

     - 교착상태 회피(Avoidance) : 프로세스가 자원을 요구할 때 시스템이 안전 상태를 유지할 수 있는 프로세스의 자원 요구만을 할당해 주는 방안, Dijkstra가 제안한 은행원 알고리즘이 대표적임!

     - 교착상태 회복(Recovery)

      * 선점을 통한 회복

      * 복귀(Rollback)를 통한 회복

      * 제거(Kill)를 통한 회복

      * 사용자의 조치 경로 선택(Routing)

    반응형
Designed by Tistory.