반응형

제1장 OS의 개요

1.1 OS의 개념 및 종류

1.1.1 운영체제의 개념

     (1) 정의 - 제한된 컴퓨터의 각종 자원을 효율적으로 관리, 운영함으로써 사용자에게 최대의 편리

                성을 제공하고자 하는 인간과 컴퓨터 사이의 인터페이스를 위한 시스템 소프트웨어

     (2) 역할 - 사용자와 컴퓨터 시스템간의 인터페이스 정의

              - 사용자들간의 하드웨어의 공동사용         - 여러 사용자간의 자원 공유    

              - 자원의 효과적인 운영을 위한 스케쥴링     - 입출력에 대한 보조 역할      

              - 에러에 대한 처리                         - 사용자들간의 간섭 방지

              - 자원의 사용량 계산                       - 병렬 수행을 위한 편의 제공

              - 데이터에 대한 보안과 신속한 사용         - 통신 네트워크 관리

     (3) 목적

        1) 사용의 편리성 - 사용자로 하여금 컴퓨터의 하드웨어와 각종 정보를 효율적으로 관리하여 

                           컴퓨터를 보다 편리하게 사용할 수 있도록 제공

        2) 시스템 성능의 향상 - 성능의 최대 발휘를 목적으로 하며 다음의 기준으로 판단

           ① 처리능력(throughput) - 일정 단위 시간 동안 컴퓨터가 처리하는 작업의 양

           ② 응답시간(turn around time) - 한 작업을 처리할 때 입력으로부터 결과가 출력될 때까지

                                           의 경과 시간

           ③ 사용의 용이성(availability) - 사용자가 필요로하는 컴퓨터를 적절한 때에 얼마나 빨리 

                                          사용할 수 있도록 할 것인가

           ④ 신뢰도(reliability) - 컴퓨터가 올바로 작동되는가

     (4) 구성

        1) 제어 프로그램(control program)

           ① 감시 프로그램(supervisor program)

           ② 데이터 관리 프로그램(data management program)

           ③ 작업 제어 프로그램(job control program)

        2) 처리 프로그램(processing program)

           ① 언어 번역 프로그램(language translator program)

           ② 서비스 프로그램(service program)

           ③ 문제 프로그램(problem program)

     (5) 운영체제의 구조

        - 커널 : 인터럽트처리기, 디스패쳐, 프로세서 동기를 위한 기능 지원, H/W와 밀접하게 관련

        - 기억장치 관리기       - 입출력 시스템        - 파일 관리기

        - 단기 스케줄러 : 시스템 내 활성 큐 관리, CPU 관리, H/W와 무관

        - 자원관리기 : CPU를 제외한 다른 자원들을 관리

        - 장기 스케줄러 : 프로세서의 생성, 소멸, 제어를 담당

        - 명령어 해석기 : 사용자와 직접 대화, Shell 이라 부름


1.1.2 OS의 종류

     (1) 운영체제의 등장

         1) 1950년대 초 general motors사에서 IBM 701을 위한 최초의 운영체제를 개발하였으며 그 전에는 

            운영체제의 할 일이 사람에 의해서 직접 처리되었다.

         2) 특징(1950년대) - 일괄처리 시스템의 시작

                          - 작업제어 언어의 등장

     (2) 초기 운영체제 시스템

         - 한번에 하나의 작업만 수행하며 준비시간이 많이 걸린다

         - 장치 구동기 사용

     (3) 일괄처리 시스템(batch processing system)

         1) 1950년대 초기의 컴퓨터 처리방법 중 하나로 처리할 데이터를 일정량을 모아 한꺼번에 처리 

         2) 상주모니터(resident monitor) - 사용자가 한번에 한 작업씩 수행하던 것을 한 개의 batch로 묶어 

                                          자동 처리되게 한 OS

             * 상주모니터 구성요소

                - 인터럽트와 트랩 벡터, 장치 구동기, 작업의 순서화(대기 작업들), 제어카드 해석기

         3) 장점 - 시스템의 사용계획을 구체적으로 세워 능률적으로 사용할 수 있다

         4) 단점 - 반환시간이 늦고 프로그램의 오류수정 작업이 어려우며 CPU가 유휴상태로 되기 쉽다

             * 단점 보완 방법

               - 상주모니터, 오프라인 연산, 버퍼링, 스풀링

     (4) 다중 프로그래밍 시스템(multi programming system)

         - 하나의 중앙처리장치에 여러 개의 프로그램을 실행시킴으로써 짧은 시간에 많은 작업을 수행할 

           수 있게 하여 시스템의 효율을 높여 주는 것

         1) 고려사항 - CPU스케줄링, 기억장치관리기법, 장치스케줄링, 교착상태, 병행제어 및 보호문제

         2) 장점 - 다중 작업을 구현하므로 시스템의 효율이 높다

         3) 단점 - CPU의 유휴 시간이 길어진다

                 - 기억장치 관리 기법, CPU 스케쥴링 기법이 필요

     (5) 다중 처리 시스템(multi processing system) 기출96

         - 하나의 공용 기억장치를 통하여 두 개 이상의 프로세서를 제어하는 시스템

         - 공유된 주기억장치의 사용을 스케줄링 하는데 어려움이 존재

         1) 장점 - CPU를 여러 개 사용하여 작업속도와 신뢰성을 높일 수 있다

     (6) 시분할 시스템(time sharing system)

         - 한 대의 컴퓨터로 일정한 시간 내에 여러 가지 작업을 처리하는 방법

         1) 장점 - 여러 사람이 공동으로 CPU를 사용하며 여러 개의 프로그램을 기억장치에 적재

         2) 단점 - 운영체제를 복잡하게 한다

     (7) 실시간 시스템(real time system)

         - 처리 대상 데이터가 발생하는 즉시 처리하여 결과를 산출하는 방식

         1) 장점 - 사용자의 노력이 절감되고 처리시간이 단축되며 처리비용이 절감

         2) 단점 - 입출력 자료의 일시저장 및 대기가 필요하고 특정상태의 재현이 불가능

                 - 시스템에 장애가 발생할 때 단순한 재실행이 불가능

     (8) 분산처리 시스템(distributed processing system)

         - 지역적으로 분산되어 있는 여러 대의 컴퓨터가 프로세서 사이의 특별한 데이터 링크를 통해 교신

           하면서 한 조직 내의 동일한 업무를 수행하고 정보 교환을 위해 네트워크로 상호 결합된 시스템

         - 특징 : 자원공유, 신뢰성, 계산속도 증가, 통신


1.1.3 운영체제 관점

 * 운영체제에 대한 사용자의 관점은 시스템 프로그램 특히 명령어 해석기에 의해 결정

     (1) 프로세스 관점

         1) 운영체제를 프로세스의 상태를 변화시키는 프로그램의 일종으로 보는 관점

         2) 중앙처리장치는 한 시점에서 하나의 작업만 수행하므로 각 프로세스의 상태를 변화시켜야 한다

     (2) 자원 관리자 관점

         - 운영체제를 시스템 자원들을 관리하기 위해 설계된 프로그램의 집단이라고 보는 관점

         1) 프로세스 관리 기능 - 어느 작업에게 CPU를 할당할 것인가를 결정

         2) 기억장치 관리 기능 - 어느 프로세스에게 기억장치를 할당할 것인가를 결정

         3) 장치관리 기능 - 장치를 할당하는데 어떤 방법이 효율적인지를 결정

         4) 정보관리 기능 - 어느 작업에게 어떤 자원을 사용하도록 할 것인지를 결정

     (3) 계층구조 관점

         1) 계층 1 - 프로세서 관리

            : 동기화 및 프로세서의 스케쥴링을 위한 프로세서 관리를 담당

         2) 계층 2 - 기억장치 관리

            : 기억공간의 할당 및 회수 기능을 실행하는 기억장치 관리를 담당

         3) 계층 3 - 프로세스 관리

            : 프로세스의 생성, 제거, 프로세스간 메시지전달, 프로세스의 시작과 정지 담당

         4) 계층 4 - 주변장치 관리

            : 주변장치의 상태파악 및 입출력 장치의 스케쥴링을 하고 입출력에 대한 전반 사항 지시

         5) 계층 5 - 파일 및 데이터 관리

            : 파일 생성과 소멸, 파일 오픈과 닫기, 파일의 유지 및 관리 등을 담당

     (4) 하드웨어 확장 관점 - 운영체제를 하드웨어의 기능 확대라는 측면에서 보는 관점

     (5) 기능적 관점 - 운영체제를 시스템 구성원 중의 일부로 보는 관점

     (6) 작업제어 언어 관점


1.2 System Software의 종류

1.2.1 System Software의 개념

     (1) 정의 - 특정한 문제를 해결하기 위한 알고리즘을 하드웨어에 정의해 주는 명령문과 데이터를 가진 

                프로그램으로 구성

     (2) 특징 - 컴퓨터의 작동, 수행에 있어서 기본이 되며 하드웨어 환경을 직접 제어

              - 컴퓨터 제조회사나 시스템 프로그래머에 의해 작성


1.2.2 System Software의 종류

     (1) 매크로(macro) - 프로그램에서 동일한 코드가 반복되어 나타나는 경우 이를 매번 나열하기 보다

                         하나의 간단한 코드로 정의하여 사용하는 기법

     (2) 링커(linker)

         - 목적프로그램 안에서 다른 목적프로그램을 호출하거나 여러 목적 프로그램들이 하나의 데이터를 

           공동으로 이용할 수 있도록 각 모듈간의 호출 및 공동 데이터의 이용을 가능하게 해주는 시스템 

           프로그램

     (3) 로더(loader)

        1) 절대로더(absolute loader) - 기계어 코드 프로그램에서 미리 지정한 번지에 프로그램과 데이터를 

                                      로드 한다

        2) 상대로더(relocating loader) - 로드 과정에서 메모리의 적당한 영역을 찾아 로드


2장 프로세스 관리

2.1 프로세스의 개념

2.1.1 프로세스 기출95

     (1) 개요 - 시스템에서 진행 중에 있는 모든 활동을 의미

     (2) 정의 - 현재 실행중이거나 곧 실행이 가능한 PCB를 가진 프로그램

              - 비동기적 행위, 순차적 실행, 능동적 개체, 수행중의 작업

              - 목적 또는 결과에 따라 발생되는 사건들의 과정

              - 지정된 결과를 얻기 위한 일련의 계통적 동작

              - 프로세스가 할당하는 개체로서 디스패치가 가능한 단위


2.1.2 순차 프로세스   - 의미 : 현재 실행중인 프로세스


2.1.3 프로세스의 상태

     (1) 프로세스 상태도

          보류(pending) → 준비(ready) ← 대기(blocked)

                                ↓↑      ↑

                                실행(running)

                                     ↓

                                완료(terminate)

     (2) 프로세스 상태

         1) 보류상태(pending) - 작업이 제출되어 스풀공간인 디스크에 수록되어 있는 상태

         2) 준비상태(ready)

            - CPU를 할당받을 수 있는 상태로서 CPU가 프로세스 자신을 처리해 주기를 기다리고 있는 것

         3) 실행상태(running)

             - 프로세스가 CPU를 차지하고 있는 상태로서 CPU에 의해 프로세스를 수행하고 있는 것

             - 부모 프로세스는 모든 자식 프로세스들이 종료될 때까지 기다린다

         4) 대기상태(blocked)

             - 프로세스가 CPU를 차지하고 실행되다가 입출력 처리와 같은 사건이 발생하게 되면 CPU를 

               양도하고 입출력 처리가 완료될 때까지 대기 큐에서 대기하고 있는 상태

         5) 완료상태(terminated)

             - 프로세스가 CPU를 할당받아 주어진 시간 내에 수행을 종료한 상태

             - 문장이 실행을 마쳤을 때 부모 프로세스에게 실행 결과를 돌려준다

     (3) 프로세스의 상태 전환 기출94

         1) 준비상태 -> 실행상태 : dispatch

            - 준비 상태의 프로세스들 중에서 우선순위가 가장 높은 프로세스를 선정하여 CPU를 할당함으

              로써 실행상태로 전환

         2) 실행상태 -> 준비상태 : time runout(할당시간 초과)

            - CPU의 지정된 할당 시간을 모두 사용한 프로세스는 다른 프로세스를 위해 다시 준비 상태로 

              되돌아간다

         3) 실행상태 -> 대기상태 : block

            - 실행중인 프로세스가 입출력 명령을 만나면 인터럽트가 발생하여 입출력 전용 프로세서에게 

              CPU를 양도하고 자신은 대기 상태로 전환 

         4) 대기상태 -> 준비상태 : wake up

            - 입출력 완료를 기다리다 입출력 완료 신호가 들어오면 대기중인 프로세스는 준비 상태로 전환


2.1.4 프로세스 제어블록(PCB)

     - 운영체제에 프로세스에 대한 중요한 정보를 제공해 주는 자료구조 테이블

     (1) PCB 수록 내용 기출94 기출96

         1) 프로세스 상태 - 보류, 실행, 준비, 대기, 정지 등의 상태

         2) 프로세스 번호 - 프로세스의 고유 번호

         3) 프로그램 카운터 - 프로세스가 다음에 실행할 명령어의 주소

         4) 레지스터 - 누산기, 인덱스레지스터, 스택 레지스터 등 범용레지스터와 상태코드 정보

         5) 기억장치 관리정보 - 경계 레지스터나 페이지 테이블들을 포함

         6) 계정 정보(회계정보) - CPU가 사용된 시간량, 시간의 범위, 계정번호, 작업 또는 레지스터 번호

         7) 입출력 상태 정보 - 입출력 요구들, 입출력 장치들과 개방된 파일 목록등

     (2) PCB의 관리

       - 프로세스 생성시에 만들어지며 모든 프로세스는 각각 고유한 PCB를 가지게 되고 수행이 완료된 

         프로세스인 경우에는 해당 PCB도 함께 삭제된다


2.1.5 프로세스 스케줄러의 종류 기출96

     (1) 장기 스케줄러(작업 스케쥴러)

         - 모든 job의 상태 파악, 다음에 수행될 job 선택, 시스템 자원 분배

         - 디스크 공간에 제출된 프로세스들을 선택하여 주기억 장치로 적재

         - 실행 간격이 비교적 크기 때문에 다음에 실행할 적절한 프로세스를 선택하는 시간을 더 사용해도 

           된다, 처리될 작업 결정, 다중 프로그래밍의 정도를 결정

     (2) 단기 스케쥴러(CPU스케쥴러)

         - 실행 준비가 되어있는 프로세스들 중에서 한 프로세스를 선택하여 CPU를 할당

         - 프로세스들간에 CPU를 자주 선택하기 때문에 수행 빈도수가 많고 각 프로세스의 CPU 할당 시간

           을 적게 한다면 더욱 자주 수행될 것이다, 주기억장치 내 작업들 중 실행작업 선택

     (3) 중기 스케쥴러

         - 기억장치에서 CPU를 경쟁하는 프로세스들의 수를 줄여서 다중 프로그래밍의 정도를 완화하는 것


2.1.6 프로세스의 종류

     (1) 독립적 프로세스(independent process)

         - 한 프로세스가 실행되면 다른 프로세스에 영향을 주거나 받지 않는 프로세스

         1) 프로세스가 독립적이므로 타 프로세스에 의한 공유가 없다

         2) 동일 입력은 동일한 결과를 갖는다

         3) 실행결과는 입력에 의해서만 결정된다

         4) 안정적으로 중단, 재실행될 수 있다

     (2) 유기적 프로세스(cooperating process)

         - 다른 프로세스와 데이터를 공유함으로써 영향을 주고받는 프로세스를 말한다

         1) 프로세스를 공유한다

         2) 실행결과는 입력뿐 아니라 상대적 실행순서에 의존한다

         3) 동일한 입력이라도 실행결과는 매번 다를 수 있다


2.2 병행 프로세스

2.2.1 병행 프로세스의 개요

  - 의미 : PCB를 가진 두 개 이상의 프로그램이 각각의 프로세스를 형성하여 동시에 수행


2.2.2 병행 프로세스에서 사용되는 주요 개념

     (1) 경쟁조건(race condition)

         - 공유메모리 : 함께 동작하는 프로세스들은 종종 메모리를 공유함

         - 경쟁 조건 : 2개 이상의 프로세스들이 공유 메모리에 읽기/쓰기를 하고, 그 결과가 어떤 프로세스

                       에 언제 실행되느냐에 따라 달라질 수 있는 상황

     (2) 상호배제(mutual exclusion)

         - 경쟁조건을 피하기 위한 방법

         - 상호배제 : 한 프로세스가 공유 메모리 혹은 공유 파일을 사용하고 있을 때 다른 프로세스들이 

                      사용하지 못하도록 배제시키는 제어기법 

                   or 두 프로세스가 하나의 자원을 동시에 점유할 수 없도록 조절하여 순차적으로 사용할 

                      수 있도록 하는 것(=상호보완)

     (3) 임계영역(critical section) 기출94

         - 임계영역 : 공유 메모리가 참조되는 프로그램의 부분

              or 두 프로세스가 한 버퍼에 있는 데이터를 동시에 접근하여 읽기/쓰기를 하고자 할 때의 버퍼 

         - 시간 종속 오류를 다루는 최초의 고급 수준 언어구조

           * 시간 종속 오류 : 프로세스들이 임의적으로 변수들을 공유할 때, 특정 순서로 실행될 때 발생

         - 임계영역 문제

            : 프로세스들이 서로 유기적으로 사용해야 하는 프로토콜을 설계

            : 각 프로세스는 그 임계구역에 들어갈 수 있는지의 여부를 미리 요청

            : 해결 ; 동기화 장치 또는 세마포어

         - 수행 순서를 잘 조절하여 2개 이상의 프로세스가 동시에 임계영역에 들어가지 않도록 한다면 

           경쟁 조건을 피할 수 있다

         - 상호배제를 위한 4가지 요구조건

           ① 상호배제조건 : 두개 이상의 프로세스들이 동시에 임계영역에 있어서는 안됨

           ② 진행조건 : 임계구역 바깥에 있는 프로세스가 다른 프로세스의 임계구역 진입을 막아서는 안됨

           ③ 한계대기조건 : 어떤 프로세스도 임계구역으로 들어가는 것이 무한정 연기되어서는 안됨

           ④ 프로세스들의 상대적인 속도에 대해서는 어떠한 가정도 하지 않는다


2.2.3 병행 프로세스의 문제점

     (1) 동기화(synchronization)

         - 두 프로세스가 한 기능을 사용할 때 상호배제가 이루어지도록 공동 협력하여 사용하는 것

     (2) 결과의 동일성 문제(determinancy)

         - 여러 프로세스가 동시에 수행될 때 각 프로세스의 수행결과는 수행순서와 시간에 관계없이 항상

           같아야 함

     (3) 의사소통 문제(communication)

         - 프로세스 사이의 데이터 교환에 관한 문제로서 일반적으로 메시지 전달 방법을 이용하여 데이터

           의 송수신을 확인

     (4) 외부 스케줄(explicit schedule)

         - 외부에서 프로그래머가 프로그램의 개발, 운영체제의 개발을 통하여 직접 해결할 수 있도록 하는 

           문제

     (5) 교착상태 문제(dead lock)

         - 상호배제와 동기화문제를 해결하지 못하여 프로세스들이 아무런 작업도 수행할 수 없도록 되는 

           문제

     (6) 동시처리 문제(concurrent processing)

         - 프로그래머가 직접 언어를 통하여 병행처리가 가능하도록 프로그래밍하는 것


2.2.4 세마포어(semaphore)

     (1) 세마포어의 개요 기출95 기출96

         1) 세마포어란 ?

            - 복잡한 문제에 있어서 상호배제를 해결하기 위한 동기화 도구

            - 신호기라는 뜻으로 각 프로세서에 제어신호를 전달하여 순차적으로 진행하기 위한 동기화구현

            - Dijkstra-데커의 알고리즘을 n개의 프로세스로 확장하여 상호배제 문제를 소프트웨어로 해결

         2) 세마포어의 사용

            - n개의 프로세스 임계구역 문제를 다루는데 사용

            - 여러 가지 동기화 문제를 해결하는데 사용

     (2) 표준연산

         - 세마포어 S는 표준단위연산 P(wait)와 V(signal)에 의해서만 접근 가능한 변수

         1) P(wait) 연산 : 프로세스를 대기상태로 전환하는 wait 연산을 수행

            # s.wait():

                 if (s.value > 0)  s.value--;

                 else 현재의 프로세스를 s.list에서 기다린다

         2) V(signal) 연산 : 프로세스에게 wake up 신호를 전달하는 signal 연산을 수행

            # s.signal():

                 if (1개 이상의 프로세스가 s에서 대기중이면)  그 중 1개 프로세스 수행

                 else s.value++;

         3) wait와 signal 연산이 세마포어 변수를 수정하는 것은 개별적으로 수행되므로 한 프로세스가 

            세마포어 변수 s를 수정 하면 다른 프로세스는 동일 변수 s에 대해 수정할 수 없다

     (3) 세마포어 응용

         1) 세마포어를 이용한 상호배제의 구현

            - 단지 세마포어 변수의 값을 1로 주고 임계영역에 들어가기 전에 wait를, 나올 때 signal을 호출

              하기만 하면 된다

         2) 세마포어를 이용한 동기화

            - block/wakeup 프로토콜 : 한 프로세스가 입출력을 요구하면 입출력이 끝날 때까지 그

              프로세스는 블록 상태가 되는데 이때 다른 프로세스는 이 블록된 프로세스를 깨워 줌

         3) 세마포어를 이용한 생산자 소비자 문제

            - 생산자는 소비자의 버퍼가 비었는지를 기다리고 소비자는 생산자의 버퍼가 채워졌는지를 

              기다림


2.2.5 모니터(monitor)

     - 상호배제에 대한 문제를 확실히 해결하여 여러 프로세스들이 자원을 안전하고 효과적으로 공유 할 수 

       있도록 한 기법

     (1) 목적 : 동기화를 자동적으로 제공하기 위함

     (2) 특징

         1) 모니터는 상호배제를 엄격하게 실시되어 한 순간에 하나의 프로세스만 모니터 내에서 수행

         2) 순차적으로만 사용할 수 있는 공유자원을 할당하는데 사용된다

         3) 데이터, 프로시저를 포함하는 병행성 구조

         4) 정보의 은폐(information hiding) 기법 - 모니터내부의 변수는 모니터 내부에서만 접근가능

         5) 모니터는 프로세스들이 추상 자료형을 안전하고 효과적으로 공유할 수 있게 함 


2.2.6 프로세스간 통신

     (1) 통신기법 기출94 기출95

         1) 공유 기억장치 기법(shared memory)

            - 통신하는 프로세스간에 기억장치 공간의 일부를 공유하도록 한다.

            - 통신 제공의 책임은 프로그래머에게 달려 있고, 운영체제는 단지 공유 기억장소만 제공

         2) 메시지 시스템 방법

            - 프로세스가 공유 변수에 의존하지 않고도 메시지를 이용하여 서로 통신할 수 있다.

            - 메시지를 관리, 전달하는 책임은 운영체제에 있다.

            - 일반적으로 send 와 receive 두 개의 연산을 제공한다.

            - 발생 가능한 예외적 상황 : 프로세스 종료, 메시지 상실, 메시지 혼합

            - 프로세스에 의해 보내지는 메시지 형태 : 고정크기, 가변크기, 타입을 가진 메시지

     (2) 명명(naming)

         1) 직접 통신 링크

            - 메시지를 주고받기를 원하는 프로세스가 수신자나 송신자의 이름을 명시적으로 표현해야 함

            - 통신을 원하는 프로세스 쌍 사이에는 자동으로 링크가 설정됨

            - 프로세스는 통신하는 상대 프로세스의 고유 이름만 알면 된다.

            - 링크는 두 프로세스와 관계하고 양방향성이다.

            - 어드레싱면에서 대칭적이고 일대일 통신이다.

            - 안정성과 신뢰성이 높다.

         2) 간접 통신 링크

            - 우편함을 통하여 메시지를 주고받을 수 있다.

            - 각 우편함은 메시지를 구별할 수 있는 유일한 이름을 갖는다.

            - 두 개의 프로세스는 공유 우편함을 갖고 있을 때에만 링크가 성립하여 통신이 가능하다.

            - 각 프로세스 쌍 사이에, 하나의 우편함에 관계되는 여러 개의 서로 다른 링크가 있을 수 있다.

            - 링크는 단방향 또는 양방향일 수 있다.


2.3 교착상태(Deadlock)

2.3.1 교착상태의 개요 기출95

     (1) 정의 

         1) 하나 또는 둘 이상의 프로세스가 더 이상 계속할 수 없는 어떤 특정 사건(자원의 할당과 해제)을 

            기다리고 있는 상태

         2) 둘 이상의 서로 다른 프로세스가 요구한 자원을 할당받아 점유하고 있으면서 상호간에 상대방 

            프로세스가 가지고 있는 자원을 요구하는 경우

     (2) 발생 예

         - 프로세스 1은 자원 1을 가지고 있으면서 자원 2를 요구하고, 프로세스 2는 자원 2를 가지고

           있으면서 자원 1을 요구하는 상태

     (3) 스풀링 시스템에서 교착상태

         1) 현재 수행중인 여러 작업이 인쇄할 행을 만들어 스풀링 파일로 보내고 있는 도중 이미 스풀링 

            파일 공간이 차버린 경우

         2) 교착상태 해결방법

            - 예상 필요 공간보다 많은 스풀링 파일 공간을 할당

            - 스풀링 파일이 일정한 포화 임계치를 넘지 못하도록 억제

     (4) 무한연기(infinite postpoment)

         1) 정의 - 여러 다른 프로세스들이 시스템에서 스케쥴링되어 처리되는 동안 한 특정 프로세스의

                   스케쥴링이 무기한으로 연기될 수 잇는 현상

         2) 발생원인 - 시스템(운영체제)의 편중된 자원 할당 정책 때문

         3) 노화(aging) 기법 - 프로세스가 자원을 기다리고 있는 시간에 비례하여 우선순위를 부여 기출95

  * 기아상태(starvation)

     - 자원 선점을 이용하여 교착상태를 제거하는데 있어서 희생자 선택을 할 때 동일한 프로세스가 매번

       선택되어 지정된 작업을 결코 완료할 수 없는 경우.


    # 무한연기와 교착상태의 비교

      

     (5) 자원의 종류

         1) 선점형 자원(preemptive resource)

            - 자원이 어떤 프로세스에게 할당되면 도중에 빼앗기는 경우

            - CPU나 주기억 장치

         2) 비선점형 자원(non-preemptive resource)

            - 일단 그 자원이 어떤 프로세스에게 할당되면 도중에 빼앗기지 않는 경우

            - 디스크, 테이프

         3) 전용 자원

            - 디스크나 테이프 같이 특정의 한 프로세스가 독점하여 사용하는 자원

         4) 공용 자원

            - 주기억장치, CPU같이 다수의 프로세스들 사이에서 공동으로 사용되는 자원

         5) 재사용(reusable) 자원

            - 전체 총량이 고정되고 부수적인 자원들이 생성되거나 파괴되지 않는 경우

         6) 소비(consumable) 자원

            - 전체 용량이 고정되지 않고 부수적인 자원들이 생성되거나 파괴되는 경우

     (6) 시스템 모델

         - 프로세스의 자원 사용 순서

         1) 자원요구(resource request)

            - 한 프로세스가 자원을 요구할 때 다른 프로세스가 이미 그 자원을 사용중이면 할당받을 수 

              없으므로 자원을 요구한 프로세스는 그 자원을 사용할 수 있을 때까지 기다린다

         2) 자원할당(resource allocation)

            - 프로세스는 운영체제로부터 자원을 할당받아 그 자원을 사용하여 수행을 계속한다

         3) 자원해제(resource release)

            - 프로세스는 이전의 자원요구에 의해 할당받았던 자원을 사용 후에는 운영체제에게 반납한다


2.3.2 교착상태 발생의 4가지 필요조건

     (1) 상호배제(mutual exclusion) 조건

         - 프로세스가 사용중이면 다른 프로세스는 반드시 기다려야 한다. 프린터

         - 프로세스들이 자원을 배타적으로 점유하고 있어서 다른 프로세스들이 그 자원을 사용할 수 

           없도록 만든다.

     (2) 점유와 대기(block and wait) 조건 : 부분할당

         - 프로세스들은 동일한 자원이나 다른 종류의 자원을 부가적으로 요구하면서 이미 어떤 자원을

           점유하고 있다

         - 대기조건

            : 프로세스가 자원을 요청할 때 그 프로세스는 어떠한 자원도 할당받지 않은 상태여야 한다.

     (3) 비선점(non-preemption) 조건

         - 자원은 사용이 끝날 때까지 이들을 갖고 있는 프로세스로부터 제거될 수 없다.

         - 자원들은 그들을 점유하고 있는 프로세스로부터 벗어나지 못하고 단지 프로세스들 자신이 

           점유한 자원을 해제할 수 있다

     (4) 환형대기(circular wait) 조건

         - 프로세스와 자원들이 원형을 이루며 각 프로세스는 자신에게 할당된 자원을 가지면서 상대방의

           자원을 상호 요청하는 경우


2.3.3 교착상태의 연구분야

     (1) 교착상태의 예방(deadlock prevention)

         - 교착상태의 발생 가능성을 사전에 모두 제거하도록 시스템을 조절

         - 가장 명료한 해결책으로 널리 사용됨

         - 자원의 비효율적인 이용결과를 낳을 수 있음

         - 교착상태 발생 필요조건의 네 가지 중 하나를 부정함으로써 수행 됨

     (2) 교착상태의 회피(deadlock avoidance) 기출94

         - 교착상태 발생 가능성을 인정하고 교착상태가 발생하려고 할 때 이를 적절히 피해가는 방법

         - 예방보다는 좀더 덜 엄격한 조건을 요구

     (3) 교착상태의 발견(deadlock detection) 기출95

         - 불안정 상태가 만들어졌을 때 검출 알고리즘 실행

         - 원하는 것이든지 아니든지 교착상태가 발생하도록 허용하여 교착상태가 일어났는지를 판단하고

           교착상태에 관련된 프로세스와 자원을 조사하여 결정해 내는 방법

         - 프로세스와 자원을 결정해 내면 교착상태를 시스템으로부터 제거할 수 있다

     (4) 교착상태의 회복(recovery from deadlock)

         - 시스템으로부터 교착상태를 제거하여 이후로는 시스템이 교착상태에 빠지지 않고 잘 진행되게 함

         - 교착상태에 빠진 프로세스가 완료되고 그 프로세스에 할당된 자원을 회수할 수 있도록 한다

         - 교착상태 발생 확률이 작거나 회복비용이 적게 소요되는 컴퓨터 시스템에서 사용할 때 유리


2.3.4 교착상태의 해결방안

     (1) 교착상태의 예방

         - 사전에 교착상태의 발생 가능성을 없애는 것(교착상태 발생요건중 1개만 부정)

         - 자원의 낭비가 따른다

         1) 점유와 대기조건의 부정

            - 프로세스는 필요한 모든 자원을 한꺼번에 요청하고, 시스템은 요청된 자원들을 전부 할당하든

              지 전혀 할당하지 않든지 하는 방식

            - 장점 : 프로세스들이 자원을 기다리는 동안은 아무 자원도 점유하지 않으므로 점유와 대기조건

                     이 부정되며 교착상태도 발생하지 않는다

            - 단점 : 자원 낭비와 비용 증가, 자원공유 불가능, 무한 연기 발생 가능

         2) 비선점 조건의 부정

            - 어떤 자원을 가지고 있는 프로세스가 더 이상 자원 할당 요구가 없으면 가지고 있던 자원을

              반납하고, 필요시 다시 자원을 요구하는 방법

            - 문제점 : 비용증가, 무한연기 발생가능(시간낭비)

         3) 환형대기 조건의 부정

            - 모든 프로세스에게 각 자원의 유형별로 할당순서(고유번호)를 부여하는 방법

            - 문제점 : 새로운 자원 추가 시 재구성 해야함

         4) 상호배제 조건 부정

            - 공유할 수 없는 자원을 사용할 때 성립

     (2) 교착상태의 회피

         - 시스템의 운영중 상황을 보아가면서 교착 상태 가능성을 피해 가는 것

         1) 안전 상태와 불안전 상태

            - 안전상태 : 시스템이 특정 순서대로 각 프로세스에게 자원을 할당할 수 있고 교착상태를 

                         방지하여 모든 작업이 완료될 수 있는 상태

            - 불안전 상태 : 교착상태가 발생할 수 있는 상태

         2) 은행가(banker) 알고리즘

            - 알고리즘 구현을 위한 기본 자료구조

              * n : 시스템의 프로세스 수  m : 자원 형태(종류)의 수

              ① Available : 각 자원의 형태별로 사용가능한 자원의 수를 표시하는 길이가 m인 벡터

                            Available[j] = k라면, 자원형태 Rj인 자원이 k개가 남아 있다

                            (사용 가능하다)는 의미(잔여량)

              ② Max : 각 프로세스의 최대 자원의 요구를 정의하는 n×m 행렬 Max[i,j] = k라면

                        프로세스 Pi는 자원 형태가 Rj인 자원을 최대로 k개까지 요구할 수 있다는

                        의미(최대 요구량)

              ③ Allocation : 현재 각 프로세스에 할당된 자원의 수를 정의한 n×m 행렬 

                             Allocation[i,j] = k라면 프로세스 Pi는 현재 Rj라는 자원형태를 k개 할당 

                             받고 있다는 의미(할당량)

              ④ Need : 각 프로세스의 남아있는 자원요구를 표시하는 n×m 행렬 Need[i,j] = k라면 

                        프로세스 Pi는 자신의 작업을 종료하기 위해 자원형태 Rj를 추가로 k개 더 요

                        구한다는 의미(추가 요구량)

            <은행가 알고리즘>

              : Requesti를 프로세스 Pi를 위한 요청 벡터라 함. Requesti[j] = k라면 프로세스 Pi는

                Rj형 자원을 k개 요구한다. 프로세스 Pi가 자원을 요청하면 다음의 조치를 취함

              (ㄱ) Requesti ≤ Needi라면 (ㄴ)으로 가고 그렇지 않으면 최대 요구량을 초과하기

                   때문에 오류(요구량 > 필요량 → error)

              (ㄴ) Requesti ≤ Available라면 (ㄷ)으로 가고 그렇지 않으면 자원이 부족하기 때문에

                   대기(요구량 > 잔여량 → 대기)

              (ㄷ) 시스템은 상태를 다음과 같이 수행하여 요구된 자원들을 프로세스에게 할당되도록 

                   한다

                  Available(잔여량) = Available(잔여량) - Requesti(요구량)

                  Allocationi(할당량) = Allocationi(할당량) + Requesti(요구량)

                  Needi(필요량) = Needi(필요량) - Requesti(요구량)

         2) 안전 알고리즘

            <안전 알고리즘>

              (ㄱ) Work, Finish를 각각 길이가 m, n인 벡터라고 하면, Work = Available로

                   Finish[i] = false, i = 1, 2, 3, ..... , n으로 초기화 한다. Work에는 남아 있는

                   자원 수인 Available의 임시변수이다.

              (ㄴ) 다음과 같이 되는 i 값을 찾는다.

                   a) Finish[i] = false

                   b) Needi ≤ Work

                   이런 i 값이 존재하면 (ㄷ)으로 없으면 (ㄹ)로 간다.

              (ㄷ) 자원을 할당한 후 해제한다.

                   Work = Work + Allocationi 

                   Finish[i] = true

                   (ㄴ)단계로 간다.

              (ㄹ) 만약 모든 i에 대하여 Finish[i] = true면 시스템은 안전 상태

     (3) 교착상태의 발견

         - 시스템 운영중에 교착상태가 발생했는지 결정하고 교착상태에 관련된 프로세스와 자원을 발견

         1) 자원 유형마다 여러 개의 자원이 있는 경우

            - 자료구조 정의

              ① Available : 각 자원의 형태별로 사용가능한 자원의 수를 표시하는 길이가 m인 벡터

              ② Allocation : 현재 각 프로세스에 할당된 자원의 수를 정의한 n×m 행렬

              ③ Request : 각 프로세스의 현재 요구를 표시하는 n×m 행렬

              ④ Request[i,j] = k라면 프로세스 Pi는 자원형태 Rj의 자원을 k개 더 요구


            <발견 알고리즘>

              (ㄱ) Work, Finish를 각각 길이가 m, n인 벡터라고 하면, Work = Available로 초기화

                   한다. i = 1, 2, 3, ..... , n일 때 만약 Allocation ≠ 0이면 Finish[i] = false 이고,

                   그렇지 않으면 Finish[i] = true로 초기화한다.

              (ㄴ) 다음과 같이 되는 인덱스 i 값을 찾는다.

                   a) Finish[i] = false

                   b) Requesti ≤ Work

                   이런 i 값이 존재하면 (ㄷ)으로 없으면 (ㄹ)로 간다.

              (ㄷ) Work = Work + Allocationi 

                   Finish[i] = true

                   (ㄴ)단계로 간다.

              (ㄹ) Finish[i] = false면 1 ≤ i ≤ n인 범위에서 시스템은 교착상태

         2) 자원 유형마다 하나의 자원이 있는 경우 교착 상태 발견

            - 대기 그래프 사용 : 자원할당 그래프에서 자원형태 노드들을 삭제하고 적절히 연결선들을

                                 제거하여 사용

            - 대기 그래프가 사이클을 포함하는 경우 교착 상태 존재

     (4) 교착상태의 회복

         - 시스템이 교착상태에 빠지면 교착상태는 하나 또는 그 이상의 교착상태 필요조건을 제거함으로서 

           회복된다

         1) 프로세스 중지

            ① 교착상태 프로세스를 모두 중지하는 방법

               : 교착상태 사이클 제거시 효과적, 비용이 많이 든다

            ② 교착상태 사이클이 제거될 때까지 한 프로세스씩 중지 : 오버헤드가 걸림

            ③ 한 프로세스씩 중지를 위한 희생자 선택의 원칙(희생자 선택 시 고려사항) 기출96

               - 프로세스의 우선순위

               - 수행된 시간과 종료 시간(얼마나 수행되었고 앞으로 얼마나 수행될 것인가)

               - 사용한 자원의 유형과 수(얼마나 많은 자원을 사용중인가)

               - 종료를 위해 필요한 자원의 수(얼마나 많은 자원을 더 필요로 할 것인가)

               - 복귀하는데 포함된 프로세스의 수(몇 개의 프로세스를 복귀시킬 것인가)

               - 대화식인지 일괄 처리식인지의 여부

         2) 자원 선점

            - 교착상태의 프로세스로부터 자원을 선점하여 다른 프로세스에게 제공

            - 자원 선점 시 고려해야할 문제(교착상태 처리 시 강제해제의 문제점)

               : 희생자 선정문제, 복귀문제, 기아상태 문제


2.4 CPU 스케쥴링

2.4.1 스케쥴링

     (1) 개요

         1) 정의 - 작업을 처리하기 위해 프로세스들에게 중앙처리 장치나 각종 처리기들을 할당하기 위한

                   정책을 계획하는 것

         2) 목적

            - 공정한 스케줄링 : 무한대기에 빠지는 프로세스가 없어야 함

            - 처리능력 극대화 : 단위 시간당 처리량의 최대화

            - 응답시간 최소화 

            - 반환시간 예측가능 

            - 우선순위제 실시

            - 무한대기 상태 회피

            - 응답시간과 자원이용간의 균형유지

            - 균형있는 자원 사용

         2) 스케쥴링의 기준

            - I/O중심 프로세스와 연산중심 프로세스의 적절한 혼용

            - 작업형태 고려  - 우선순위 고려  - 페이지 부재율 고려  - 자원선점 고려

            - 버스트시간 고려  - 잔여 실행시간 고려

         3) 스케쥴링 알고리즘 성능의 기준

            - CPU이용율  - 처리율  - 수행시간  - 대기시간  - 응답시간

     (2) 프로세스 스케쥴링의 분류

         1) 단계별 분류

            ① 상위수준 스케쥴링(high level scheduling)

               - 시스템의 자원을 어느 작업에 할당할 것인가를 결정 = job 스케쥴링 = 승인 스케줄링

            ② 중간수준 스케쥴링(intermediate level scheduling)

               - CPU를 차지할 프로세스를 결정

               - 프로세스들을 일시중지시키거나 활성화시키는 작업을 수행하여 시스템의 부하를 조정

            ③ 하위단계 스케쥴링(low level scheduling)

               - 어느 프로세스에게 CPU를 할당할 것인가를 결정

               - 수행 속도가 빠르다

         2) 방법별 분류 기출96

            ① 선점(preemptive) 스케쥴링 - RR, SRT, 다단계(피드백) 큐

               - 한 프로세스가 CPU를 차지하고 있을 때 우선순위가 높은 다른 프로세스가 현재

                 프로세스를 중지시키고 자신이 CPU를 차지할 수 있는 경우

               - 높은 우선순위를 가진 프로세스들이 빠른 처리를 요구하는 시스템에서 유용

               - 빠른 응답시간을 요구하는 시분할 시스템에 유용

               - 높은 우선순위 프로세스들이 들어오는 경우 오버헤드를 초래

            ② 비선점(nonpreemptive) 스케쥴링

               - 한 프로세스가 CPU를 할당받으면 다른 프로세스는 CPU를 점유못함 

               - 짧은 작업을 수행하는 프로세스가 긴 작업이 종료될 때까지 기다려야 함

               - 모든 프로세스들에게 공정하고 응답시간의 예측이 가능

         3) CPU 스케쥴링 알고리즘별 분류

            ① 우선순위(priority) 스케줄링 - nonpreemptive

               - 프로세스에게 우선순위를 부여하여 우선순위가 높은 순서대로 처리

               - 일반 프로세스는 0~15사이, 실시간 프로세스는 16~31 사이의 우선순위를 받는다.

               ㄱ) 정적(static) 우선순위 방법

                   - 주변 환경 변화에 적응하지 못하여 실행중 우선순위를 바꾸지 않음, 

                     구현이 쉽고 오버헤드가 적다

               ㄴ) 동적(dynamic) 우선순위 방법

                   - 상황 변화에 적응하여 우선순위를 변경, 구현이 복잡, 오버헤드 많다,

                     시스템의 응답속도를 증가시켜 효율적

            ② 기한부(deadline) 스케줄링 - nonpreemptive

               - 작업을 명시된 시간이나 기한내에 완료되도록 계획

               - 작업시간이나 상황등 정보를 미리 예측하기가 어렵다

            ③ FIFO 스케줄링 - nonpreemptive

               - 프로세스들은 대기 큐에 도착한 순서대로 CPU를 할당 받는다

               - 일괄처리 시스템에서 주로 사용, 작업 완료 시간을 예측하기 용이

               - 짧은 작업이 긴 작업을 기다리게 됨

               - 중요하지 않은 작업이 중요한 작업을 기다리게하여 불합리

            ④ 라운드로빈(round robin) 스케줄링 - preemptive 기출94 기출96

               - FCFS에 의해서 프로세스들이 보내지며

               - 각 프로세스는 같은 크기의 CPU 시간을 할당받음, CPU의 타임슬라이스에 의해 제한 받음

               - 시분할 방식에 효과적, 할당시간의 크기가 매우 중요

               - 할당시간이 크면 FCFS와 같게되고, 작으면 문맥교환이 자주 일어난다.

               * SRR(selfish round robin)

                  - 프로세스가 시스템에 들어오면 우선순위가 활성 큐 내의 프로세스의 수준에 도달할

                    때까지 보류 큐에 머물러 있는 스케줄링 기법

            ⑤ SJF(shortest job first) 스케줄링 - nonpreemptive 기출94

               - 준비 큐 내의 작업 중 수행시간이 가장 짧다고 판단되는 것을 먼저 수행

               - FCFS보다 평균 대기 시간을 감소, 큰 작업은 시간 예측이 어렵다

               - 짧은 작업에 유리

            ⑥ SRT(short remaining time) 스케줄링 - preemptive

               - 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행

               - 남은 처리 시간이 더 짧다고 판단되는 프로세스가 준비 큐에 생기면 언제라도 실행중인 

                 프로세스가 선점 됨, 시분할 시스템에 유용, 서비스를 받은 시간 기록

               - 긴 작업은 SJF보다 대기 시간이 길다, 이론적으로 대기시간 최소

            ⑦ HRN(highest response ratio next) 스케줄링 - nonpreemptive

               - 긴 작업과 짧은 작업간의 지나친 불평등을 어느 정도 보완한 기법

               - 짧은 작업이나 대기시간이 긴 작업은 우선순위가 높아진다

               - 우선순위 = 

            ⑧ 다단계 큐(multilevel queue) 스케줄링 - preemptive

               - 작업들을 여러 종류의 그룹으로 나누어 여러개의 큐를 이용하는 기법

            ⑨ 다단계 피드백 큐(multilevel feedback queue) 스케줄링 - preemptive 기출95 기출96

               - 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 서로 다른 CPU의 타임 슬라이스 부여

               - 짧은 작업에 유리, 입출력 위주의 작업에 우선권을 줌

               - 하위단계 큐일수록 할당시간은 커진다

            ⑩ FSS(fair share scheduling)

               - 프로세스들 집합간에 프로세스의 스케줄링을 지원

               - UNIX 환경에서 서로 관계 있는 사용자들에게 한정된 비용으로 시스템 자원을

                 사용할 수 있게 해준다.


제3장 기억장치 관리

3.1 주기억 장치 관리

3.1.1 개요

     (1) 용어

        - 주기억 장치 : CPU가 명령이나 자료를 직접 인출 혹은 반환할 수 있는 기억장치의 부분

        - 가상기억장치 : 특정 컴퓨터 시스템에서 주기억 장치의 이용 가능한 기억 공간보다 훨씬 큰 주소

                         지정을 할 수 있도록 하는 기법

        - 단일 사용자 시스템 : 한 사람이 CPU와 모든 주기억 장치를 할당받아 사용하는기법

        - 동적적재 : 기억장치의 효율을 높이기 위해 사용. 사용되지 않는 루틴은 주기억장치에 적재되지 

                     않는다

        - 동적연결 : 언어 서브루틴 라이브러리들과 같은 시스템 라이브러리의 연결이 수행시간까지 지연

        - 절대로더 : 기계어로 된 프로그램을 미리 지정된 주기억 장치에 적재

        - 재배치로더 : 적재시간에 주기억 장치의 사용여부에 따라 주기억 장치의 여러 다양한 곳에 적재

        - 링킹로더 : 프로그램 적재시 필요한 프로그램들을 결합하여 이진 프로그램 이미지를 주기억장치에 

                     적재

        - 링키지에디터 : 링킹로더의 기능과 더불어 이진프로그램 이미지를 디스크에 보관

     (2) 기억장치 관리 정책

        1) 반입정책(fetch strategic) - 프로그램이나 데이터의 주기억장치 적재 시기 결정

           ① 요구 반입정책(demand fetch strategic)

               : 프로그램이나 자료에 대한 요구가 있을 때 주기억 장치로 가져오는 방식

           ② 예상 반입정책(anticipatory fetch strategic) : 요구가 없어도 앞으로 필요한 것이라 예상되는 

                                                        내용을 주기억장치로 미리 가져오는 방식

        2) 배치정책(placement strategic) - 프로그램이나 자료를 주기억장치의 어디에 위치시킬 것인 가를 

                                          결정하는 정책

           ① 최초적합(first-fit) : 주기억장치 공간 중 프로그램을 저장할 수 있는 최초의 유용한 공간에 

                                 우선적으로 할당하는 방법 기출94

              - 장점 : 기억장치 전체를 조사하지 않아 배치결정을 빨리 내릴 수 있다

              - 단점 : 사용되지 않은 작은 크기의 가용공간이 누적될 경우 할당결정이 늦을 수 있다

             * NEXT-fit

                - 최초 적합의 변형으로 이전에 탐색이 끝난 그 다음부터 사용가능한 공백을 탐색

           ② 최적적합(best-fit) : 주기억장치의 가용공간 중 프로그램을 저장할 때 가장 작은 공간이 남는 

                                 분할에 할당

              - 장점 : 가용공간을 반만 탐색해도 필요 공간을 찾음

              - 단점 : 가용공간이 크기 순으로 정렬되어 있지 않으면 모든 가용공간을 검색해야 한다

                     : 기억장소 정렬에 많은 시간 요구

                     : 할당한 후 작은 가용공간이 또 만들어짐

           ③ 최악적합(worst-fit) : 주기억 장치 가용 공간중 가장 큰 공간에 프로그램을 할당

              - 장점 : 할당후 남은 공간은 크므로 다른 프로그램 실행가능

              - 단점 : 가용공간이 크기순으로 되어있지 않으면 모든 공간을 검색해야 함

                     : 큰 프로그램이 적재될 가용공간이 없어진다

        3) 교체정책 - 새로 입력되는 프로그램이나 자료에 필요한 기억장소 확보를 위해 어떤 프로그램을 

                      제거할 것인가를 결정하는 정책

     (3) 기억장소 할당

        1) 연속 기억장치 할당 - 각 프로그램이 주기억장치 내에 인접되어 연속된 하나의 블록을 차지하도록  

                                배치

        2) 불연속 기억장치 할당 - 하나의 프로그램이 여러 개의 블록으로 나뉘어 분산 배치되는 방법


3.1.2 주기억장치 관리 기법

     (1) 단일 사용자 연속 기억 장치 할당

            ① 기억장치 할당 방법

               : 주기억장치 용량을 초과하는 프로그램은 실행할 수 없으며 한 순간에 오직 한 명의

                 사용자만이 주기억장치를 전용하여 사용하므로 다른 사용자는 기다림

            ② 장점 : 단순하며 이해하기 쉽다

            ③ 단점 : 기억장치의 빈 공간을 이용하지 못하기 때문에 기억장치의 낭비

                    : 한 사용자만이 기억장치로 전용하므로 자원낭비가 심하다

                    : 입출력 시 CPU는 유휴상태

                    : 사용하지 않는 프로그램이 기억장치 내에 위치

        1) 상주 모니터 - 어떤 작업이 다음에 수행되어야할 것인지에 대한 정보유지

        2) 오버레이 기법

           - 디스크에 프로그램을 유지하고 운영체제에 의해서 기억장치를 교체시키는 방법

           - 프로그램 수행도중 주기억장치의 프로그램 일부가 더 이상 필요하지 않다면 그곳에 보조기억 

             장치로부터 다른 프로그램을 적재(load)하여 겹쳐서 사용하는 방법

           - 한정된 기억장치를 확장하여 사용할 수 있는 개념 제공

           - 기억장치 할당방법 : 프로그램이 기억장치의 크기보다 클 경우에는 프로그램 수행을 허용

                              : 오버레이 중첩을 이용하여 오버레이 영역보다 커다란 프로그램도 처리 가능

        3) 교체기법(swapping)

           - 다중 프로그래밍 환경에서는 CPU 할당 시간이 초과되면 기억장치 관리자는 실행이 끝난

             프로세스를 보조기억 장치로 보내고 다른 프로세스를 주기억장치의 가용 공간으로 불러와 실행

           - 교체 순서 : 한번에 하나의 사용자 프로세스만 주기억장치를 할당받는다

             ① 사용자 프로세스가 주기억장치에서 수행되다 교체된다

                - 프로세스의 실행도중 입출력 발생 시

                - CPU 사용 할당시간이 초과될 때 

                - 프로세스 수행이 완료될 때 

             ② 교체영역이 보조기억 장치에 복사됨(swap out)

             ③ 다음 사용자 프로세스가 주기억 장치에 들어와 실행됨(swap in)

        4) 시스템의 보호

           - 사용자 프로그램으로부터 운영체제를 보호하기 위해 CPU 내부에 경계 레지스터를 둔다

           - 경계 레지스터는 운영체제의 제일 마지막 명령의 주소 저장

     (2) 고정 분할 기억장치 할당(MFT : Multiple Contiguous Fixed parTition allocation) 기출95

        - 주기억 장치를 일정수의 고정된 크기들로 분할하여 실행중인 여러 프로세스에게 할당하는 기법

           (=고정분할 다중 프로그래밍)

        - 입출력 요구가 생기게 되면 데이터의 입출력 처리가 끝나기 전까지는 작업을 중단해야 한다.

        - CPU 계산과 입출력은 동시에 행해질 수 있다.

        - 입출력 속도는 CPU 속도에 비해 엄청 느리다.

         1) 절대번역과 적재(absolute compile & loading)

            - 한 작업이 실행준비가 되어있다 하더라도 지정된 자신의 분할이 이미 차 있으면 다른 분할이 

              이용가능 하더라도 그 작업은 기다려야 한다

            - 미리 정해진 주기억 장치의 적재 위치에서만 해당 프로그램을 실행할 수 있게 하는 것 

            - 장점 : 간단하고 구현하기 쉽다

            - 단점 : 기억장치의 낭비 발생

         2) 재배치 번역과 적재(relocation compile & loading)

            - 모든 작업을 하나의 작업 큐에 넣어서 어느 분할에서든지 실행 가능하도록 한 기법

            - 장점 : 기억장소의 낭비가 없다

            - 단점 : 재배치 번역과 적재의 설계가 복잡(운영체제가 복잡)

         3) 고정분할 기억장치 할당에서의 보호

            - 여러 개의 경계 레지스터(합당한 사용자 주소범위를 나타내는 하한 레지스터와 상한 레지스터

              로 되어 있다)를 사용

         4) 고정분할 기억장치 할당의 장단점

            - 장점 : 다중 프로그래밍 가능, 수행속도 증가로 CPU를 효율적으로 사용

                   : 한 작업이 입출력을 수행할 때 CPU는 다른 작업의 계산을 처리할 수 있다.

            - 단점 : 단편화에 의해 기억장치의 낭비가 크다

                   : 수행할 프로그램의 크기를 미리 알고 있어야 함

     (3) 가변분할 기억장치할당(MVT : Multiple contiguous Variable parTition allocation) 기출95

         - 고정된 분할의 경계를 없애고 각 작업의 필요한 만큼의 기억장치를 할당

         - 가장 합리적인 분할의 크기를 결정하여 각 작업에게 주기억장치로 할당, 바운드 레지스터 필요

         - 장점 : 단편화방지, 자원의 효율적 사용

         - 단점 : 기억장치 집약시간 낭비

                : 작업의 크기가 기억장치 용량에 의해 제약됨, 외부단편화 심각

     (4) 기억장치의 단편화(Memory Fragmentation) 기출96

         - 단편화 : 작업을 수행하기 위한 기억장소 분할영역이 부족하거나 남는 경우

         - 단편화 종류 : 내부 단편화 - 하나의 분할에 작업을 할당하고 남은 빈 공간 

                       : 외부 단편화 - 대기중인 작업이 분할영역보다 커서 분할 전체가 빈 공간으로 있을

                                       때의 상태

         1) 고정분할 기억장치 할당에서의 단편화

            : 사용자 작업의 크기가 정확하게 분할에 맞지 않거나 작업보다 분할이 너무 작아서 이 분할에 

              대기중인 어떤 작업도 적재될 수 없는 경우 발생

         2) 가변분할 기억장치 할당에서의 단편화

            : 할당초기와 초기작업이 끝나 그들이 사용하던 기억공간이 공백으로 남을 때까지 기억공간의 

              낭비가 거의 없거나 분명하게 나타나지 않는다. 그러나, 실행을 기다리는 작업들에게 이 공백을

              할당하면서부터 기억장치의 단편화가 발생

         - 단편화의 해결 방법

            ① 공백의 통합(coalescing holes) : 가용 공간 중 이웃되는 가용공간을 하나의 커다란

                                             가용공간으로 만드는 것

            ② 기억장소 집약(storage compaction)

               : 가변분할 다중 프로그래밍에서 존재하는 여러 개의 작은 공간을 모아 하나의 커다란

                 기억공간을 만드는 것 = garbage collection

               : 장점 : 모든 미사용 공간을 모으므로 통합보다 메모리를 효율적으로 사용

                 단점 : 집약이 실행되는 동안 모든 일을 중지

                      : 실시간 처리 시스템의 경우 작업에 치명적

                      : 기억장치의 작업들이 모두 재배치되어야 함 

                      : 시스템 효율저하, 생산적으로 사용 가능한 시스템 자원을 소비한다.


3.2 가상 기억장치의 구성

3.2.1 가상 기억장치의 개요

     - 가상 기억장치(virtual memory)

        : 주기억장치에서 이용 가능한 공간보다 더 큰 저장 공간을 보조기억 장치에 생성하여 마치

          주기억장치의 연속된 공간처럼 사용하는 기억장치

        : 사용자의 논리적 기억장치를 실기억 장치로부터 분리시킨 것으로 요구페이징으로 구현

        : 실행중인 프로세스에 의해 참조되는 주소를 기억장치에서 사용할 수 있는 주소와 분리

        : 여러 사용자가 같이 사용

     - 세그먼트(segment) : 블록의 크기가 다를 때 

     - 페이지(page) : 블록의 크기가 같을 때

     - 가상주소(V) : 프로그래머에 의해 쓰여진 보조기억장치 번지

     - 실 주소(R) : 주기억장치의 사용 가능한 주소

     - 주소 사상(address mapping) : 보조기억장치에 존재하는 가상 번지를 주기억 장소의 실제 주소로 변환

     (1) 동적 주소 변환(DAT : dynamic address translation)

         : 프로세스가 수행될 때 가상주소를 실제 주소로 변환하는 기법

     (2) 블록 사상(block mapping)

         : 모든 내용을 한번에 사상할 수 없으므로 가상기억장치의 내용을 블록 단위로 분류하여 가상

           기억장소 블록이 실기억 장치의 어느 곳에 위치하는지 알아내 블록 단위로 사상하는 방법

         : 블록이 크면 - 사상기법 자체가 필요로 하는 기억공간을 줄일 수 있다

                       - 블록 이동시 전송시간이 많이 걸림

                       - 주기억장치가 많이 소요, 실기억 장소는 작아진다.

         : 블록사상을 통한 가상주소 변환


3.2.2 페이징(paging) 기법 기출94 기출95

     - 페이지는 블록단위로 보조기억장치로부터 주기억장치로 옮겨짐

     - 입력되는 페이지는 사용 가능한 페이지 프레임의 어느 곳에나 위치할 수 있다.

     - paging : 가상 메모리를 일정 크기의 블록으로 나눈 페이지를 주기억장치에 사상

              : 고정된 블록 크기로서 페이지와 관련된 가상기억장치 구성

     - 페이지 프레임 : 가상기억장치의 블록과 사상되는 주기억장치의 한 블록

                     : 고정된 페이지 크기의 정수 배에 해당하는 실기억 장치 주소에서 시작

     - 내부 단편화 발생, 페이지 크기의 1/2, 외부 단편화는 없다

     - V = (p, d) : p 페이지 번호, d 변위

     - 주소변환 방법

        1) 직접 사상에 의한 주소 변환 

           - 페이지 사상 테이블의 시작주소(b) + 페이지번호(p) = p'

           - p' + 변위(d) = 실제주소(r)

           - 컴퓨터 시스템의 속도를 절반으로 떨어뜨린다.(이를 보완하기 위해 캐시기억장치 사용)

           - 가상주소와 PMT(page map table)는 시스템 내의 제어프로세서 내에 존재하여 빠르게 실행

        2) 연관 사상 방법에 의한 주소 변환

           - 위치 지정이 아닌 내용지정의 연관 기억장치에 사상 페이지 사상표를 유지

           - 구현하는 비용이 많이 든다(캐시보다 비싸다), 가장 빠르고 융통성이 있음

           - 직접사상보다 구현이 어려움(잘 사용되지 않는다)

           - 실행 프로그램이 가상주소를 참조, 동적 주소변환을 빠르게 할 수 있다.

           - 연관 사상 테이블 내 페이지 p에 해당하는 페이지 프레임(p') + 변위(d) = r

        3) 연관 / 직접 사상에 의한 페이징 기법

           - 가장 최근에 참조된 페이지 항목들만 유지, 일부 사상 테이블만 포함

           - 캐시와 연관 기억장치의 이점을 효과적으로 혼합

           - 연관 사상 테이블을 먼저 찾은 다음 없으면 직접 사상 테이블을 찾는다.

           - 페이지 p가 사상 테이블에 있는 경우

              : 연관 사상 테이블 내 페이지 p에 사상되는 페이지 프레임(p') + 변위(d) = r

           - 페이지 p가 사상 테이블에 없는 경우

              : 페이지 사상 테이블의 시작주소(b) + 페이지번호(p) + 변위(d) = r

           - 연관 사상표(table) : 최근에 가장 많이 참조된 페이지

              페이지 사상표 : 연관 사상표에서 제외된 나머지 모든 페이지


3.2.3 세그멘테이션(srgmentation) 기법

     - segmentation : 가상 메모리를 가변 크기의 블록으로 나누어 주기억장치에 사상

                    : 가변 블록 크기로서 세그먼트와 관련된 가상 기억장치 구성

     - 외부 단편화 발생

     - 논리적 개념, 고정되어 있지 않다, 배열에 사상하는 세그먼트는 배열의 크기와 같다

     - 자료구조가 커지거나 작아짐에 따라 크고 작게 될 수 있다.

     - 프로세스는 현재 세그먼트가 주기억장치에 있을 때만 실행

     - 보호키를 사용하여 기억장치를 보호

     - V = (s, d) : s 세그먼트, d 변위

     - 접근제어(access control)

        : 엑세스 유형 ; read, write, execute, append

        : 세그먼트 엑세스 방법

          1) 엑세스 종류는 R, W, E, A의 4가지

          2) 4가지 엑세스의 조합으로 프로세스가 제한 없이 세그먼트를 엑세스 하는 것을 방지

          3) 16가지 조합 생성

          4) 세그먼트 보호의 기초 방법

     - 주소변환 방법

        1) 직접 사상에 의한 주소 변환

           - 세그먼트 사상 테이블의 시작주소(b) + 세그먼트번호(s) = s'

           - 세그먼트가 시작되는 실기억장치의 주소(s') + 변위(d) = 실제주소(r)


3.2.4 페이징 / 세그멘테이션 혼용 기법 기출96

     - 가상 기억장치의 구조에 중요한 이점을 제공, 크기는 페이지의 정수 배

     - 변환과정이 진행됨에 따라 실패할 수 있는 많은 단계가 존재

     - 참조된 페이지들은 부분적인 연관 기억장치에 있다.

     - 세그먼트 기법의 보완, 세그먼트를 페이지화 하는 것

     - V = (s, p, d) : s 세그먼트번호,  p 페이지번호,  d 변위

     - 내부 단편화 발생, 사상표가 차지하는 공간(table space)의 오버헤드도 증가

     - 주소변환 과정

        ① 연관 사상인 경우 : 연관 사상표를 탐색하여 발견되면 해당 페이지가 들어있는 주기억장치

                              내의 페이지 프레임 p'와 변위d를 더함

        ② 직접 사상인 경우 : 세그먼트 사상표의 시작주소(b) + 세그먼트번호(s) + 페이지 번호(p) + 

                              변위(d) = 실제주소(r)


3.2.5 요구페이징 기법 기출96

     - 보조기억 장치에 페이지들이 저장되어 있다가 실행 중인 프로세스에 의하여 그 페이지가 요구될 때만

        보조기억 장치에서 주기억장치로 옮겨지는 기법

     - 페이지 부재율을 낮게 유지해야 함 : 주기억장치 유효접근시간이 증가하여 수행시간이 늦어지게 된다.

     - 교체시간을 줄일 수 있다, 기억장치 사용량 절감, 많은 프로그램을 동시에 수행시킬 수 있다.

     - PMT필요, 비례할당, Thrashing문제 발생, 많은 테이블과 레지스터 필요, S/W가 복잡해진다.

   * 페이지 부재(page fault)

     - 프로세스에서 원하는 페이지가 주기억장치 내에 존재하지 않는 경우

     - 페이지 부재 처리시간의 구성요소 : 페이지부재 인터럽트 서비스, 페이지 교체, 프로세스 재실행


3.2.6 예상 페이징 기법

     - 예측 결정이 옳으면 프로세스의 실행시간은 대단히 감소

     - 정확한 결정이 내려질 수 있다. 

     - H/W 가격 하락 등 옳지 못한 결정의 결과도 그리 심각하지 않다.


3.3 가상 기억장치의 관리

3.3.1 가상 기억장치의 관리 기법

     1) 반입정책 - 보조기억장치에서 실기억장치로 사상한 페이지나 세그먼트의 적재시기 선택

     2) 배치정책 - 보조기억장치로부터 적재된 내용을 실기억장치의 어느 위치에 배치할 것인가

     3) 교체정책 - 실기억장치로 들어오는 페이지의 기억공간 확보를 위해 실기억장치의

                   어느 페이지를 가상 기억장치로 돌려보낼 것인가를 결정


3.3.2 페이지 교체 알고리즘

     (1) 최적교체 알고리즘

        - 다른 페이지 교체 기법들이 얼마나 최적성을 갖는지 비교하는데 사용

        - 현 페이지가 참조된 시점에서 그 이후로 가장 오랫동안 사용되지 않을 페이지를 교체

        - 장점 : FIFO의 모순을 피할 수 있는 알고리즘(최소의 페이지 부재율)

        - 단점 : 페이지 호출 순서에 대한 모든 상황을 미리 파악하고 있어야 하기 때문에 다루기가 어렵고 

                 비현실적

     (2) 무작위 페이지 교체 알고리즘

         - 교체할 페이지를 무작위로 선택

         - 장점 : 오버헤드가 적은 페이지 교체 기법

         - 단점 : 최악의 경우 바로뒤에 호출될 페이지도 교체될 수 있다

     (3) 선입선출(FIFO) 교체 알고리즘

         - 각 페이지가 참조된 때와 관계없이 주기억장치에 가장 먼저 들어온 페이지를 교체

         - FIFO 모순 : 페이지 프레임의 수가 증가될 때 페이지 부재가 더 증가하는 것

         - 장점 : 이해가 쉽고 설계가 간단

         - 단점 : 중요 페이지가 오랫동안 페이지 프레임을 차지 했다는 이유로 교체될 수 있다

     (4) 2차 기회 페이지 교체 알고리즘(SCR : second chance replacement)

         - 페이지의 참조비트가 0이면 교체하고 참조비트가 1이면 0으로 바꾼 다음 큐로 피드백 시켜

           두 번째 기회를 부여한 후 다음 페이지를 조사

     (5) LRU(least recently used) 교체 알고리즘 기출94

         - 한 프로세스에서 사용되는 각 페이지마다 카운터를 두어 현 시점에서 가장 오랫동안 사용되지

           않은 페이지를 제거

         - 단점 : 시간 오버헤드가 발생, 실제로 구현하기 복잡

     (6) LFU(least fraquence used) 알고리즘

         - 사용된 빈도(호출회수)가 가장적은 페이지를 교체, 구역성 문제 발생

         - 단점 : 바로 불러온 페이지가 교체될 수 있다

     (7) NUR(not used recently) 교체 알고리즘

         - 최근에 사용되지 않은 페이지를 교체. 2개의 bit를 둔다(참조 비트, 변형 비트)

         - 단점 : 현재 실행중인 페이지도 교체할 수 있다

     (8) Working Set - 프로세스가 최근 참조하는 페이지들의 집합에 속하지 않는 페이지를 모아 놓는

                        방법으로 집합에 속하지 않는 페이지를 교체

     (9) 페이지 부재 빈도 (PFF(page fault frequency))

        - 현재 페이지 부재와 바로전의 페이지 부재 사이의 시간을 관찰하여 그 시간이 지금까지의

          최소시간보다 크다면 그 사이에 호출되지 않았던 페이지들을 모두제거


3.3.3 Thrashing 기출94 기출95

     - 페이지 교체가 너무 자주 일어나는 현상

     - 프로세스 처리 시간보다 페이지 교체 시간이 더 많아지는 현상

     (1) 원인 - 실제로 사용하는 수만큼의 충분한 페이지 프레임을 갖지 못한 경우 페이지 부재가 빈번하게 

              발생하며 이 경우 실행중인 프로세스는 계속 페이지 교체를 수행해야 하므로 thrashing 현상이 

              발생

     (2) 방지 법 - 다중 프로그래밍의 정도를 낮추어야 한다(프로세스들에게 충분한 페이지 프레임을 

                  할당하여 주기억장치 내에 working set을 제대로 유지)

* 구역성(locality) = 국부성

 - 프로세스가 기억장치내의 정보를 균일하게 참조하는 것이 아니라 어느 순간 특정 부분을 집중적으로 참조

   ① 시간구역성(temporal locality) - 최근 참조된 기억장소가 가까운 장래에도 계속 참조될 가능성이 높다.

                                    (looping, subroutine, stack, counting, totaling)

   ② 공간구역성(spatial locality) - 임의 기억장소가 참조되면 그 근처의 기억장소가 연속적으로 참조될

                                  가능성이 높다(배열순례(array traversal), 순차적 코드의 수행,

                                                프로그래머가 관련 변수를 상호 이웃하게 선언하는 경향)

   - 기억장치에서 구역성이 중요한 이유 : 각 프로그램이 자주 참조하는 페이지들(working set)이

                                         주기억장치에 있으면 프로그램의 수행을 효율적으로 할 수 있다


3.3.4 Working Set 기출94

     - working set : 한 프로세스가 일정 시간동안 참조하는 페이지들의 집합

     - 프로그램이 효율적으로 수행되기 위해서는 working set이 주기억장치 내에 유지되어야 함


3.4 보조 기억장치

3.4.1 보조 기억장치의 개요

     * 보조 기억장치 ? 주기억장치에 저장되어 있는 정보를 제외한 모든 정보가 저장되어 있으며 필요에

                       따라 주기억장치에 전송

        1) 순차 기억 매체(SASD:Sequential Access Storage Device)

           - 자기 테이프 장치처럼 적절한 레코드가 찾아질때까지 차례차례 검색

        2) 직접 기억 매체(DASD:Direct Access Storage Device)

           - 자기 디스크 장치처럼 주소를 통해 직접 적절한 레코드를 찾아 가는 매체


3.4.2 자기 테이프(Magnetic Tape)

    (1) 개요

        1) 원리 - 자성 물질이 칠해진 테이프가 자기 테이프 구동장치의 헤드를 지날 때 전류를 변화시켜 

                  테이프에 정보를 기록

        2) 구성 - 총 9트랙 중 8개의 트랙은 데이터를 저장하는데 사용되고 나머지 1트랙은 데이터 전송 시

                  에러 여부를 검사하기 위한 패리티 비트를 저장하는데 사용

    (2) 특성 - 많은 양의 데이터 저장 가능

             - 속도가 느리고 순차접근을 하므로 데이터 보관용으로 사용

             - 순차처리만 가능(SASD:Sequential Access Storage Device)

             - 가격이 저렴하여 Backup용으로 많이 사용

             - 데이터를 읽기 위한 시간이 많이 걸린다

    (3) Label의 구성

        

        1) BOT(Beginning of Tape) : 테이프의 시작 부분

        2) VOL(Volume of Label) : 볼륨 레이블

        3) File Label : 파일의 앞과 뒤에 붙임

        4) TM(Tape Mark) : 레이블과 파일을 구분

        5) DATA : 실제 자료

        6) EOT(End of Tape) : 테이프의 끝 부분

    (4) 데이터의 구성

        

        󰠉<󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏󰠏>󰠋

                   물리 레코드 = BLOCK

        1) 논리 레코드(logical record) : 실제 저장되어 있는 레코드

        2) 물리 레코드(physical record) : 입출력 단위로 취급. 1개 이상의 논리 레코드로 구성 = block

        3) IRG(inter record gap) : 논리 레코드 사이의 간격

        4) IBG(inter block gap) : 블록간 데이터가 기록되지 않은 부분으로 테이프가 정상주행 속도에 

                                 이를 때까지의 시간과 멈출 때까지의 시간을 확보하기 위한 부분

        5) Blocking : 레코드의 입출력 효율을 높이기 위해 여러 개의 논리레코드를 하나의 블록으로

                      묶는 것

           * 블록화 하는 이유

              - 런 비용이 적게 든다, 물리적인 레코드의 기어용량을 절약, 입출력 실행 시 시간 절약

        6) 블록화 인수(blocking factor) : 한 물리 레코드 안에 있는 논리 레코드의 수


3.4.3 자기 디스크(Magnetic Disk)

    (1) 개요 기출94

        1) 구조 - 원형 금속판에 자성체를 입힌 것으로 트랙, 섹터, 실린더로 구성

           ① 트랙(track) - 디스크의 중앙을 중심으로 그려진 동심원

           ② 섹터(sector) - 트랙을 부채꼴 모양으로 분할한 것

           ③ 실린더(cylinder) - 각 면의 같은 위치에 있는 트랙들의 모임 또는 디스크 중앙으로부터 

                                같은 거리에 있는 트랙의 모임

        2) 접근시간

           ① 탐색시간(seek time) - 헤드를 적정 트랙으로 이동하는데 걸리는 시간

           ② 회전지연시간(rotational delay time) - 헤드가 트랙으로부터 데이터가 있는 섹터에

                                                  접근하는데 걸리는 시간

           ③ 헤드활성화시간(head activation time)

           ④ 전송시간(transmission time) - 데이터를 주고 받는데 걸리는 시간

    (2) 디스크 장치의 종류

        1) 이동 헤드 디스크 기출96

           - 판독/기록 헤드가 원하는 트랙에 위치하도록 액세스 암을 이동시켜 데이터를 읽거나 씀

           - 데이터 전송률 = 탐색시간 + 회전지연시간 + 헤드활성화시간 + 전송시간

           - 탐색 시간이 가장 많이 소요

        2) 고정 헤드 디스크

           - 각 트랙마다 읽기/쓰기 헤드를 가지고 있어 탐색시간을 없앰

           - 데이터 전송률 = 회전지연시간 + 헤드활성화시간 + 전송시간

    (3) 디스크 인터리빙(interleaving)

        - 디스크 제어기에게 기억장치로 데이터를 전송하기 위한 시간을 주기 위해 블록을 건너뛰도록 

          하는 기법

        - 지연시간 때문에 인접한 디스크 블록 사이에 두는 일정한 간격 : 인터리빙 인수

    (4) 그 외 디스크 장치

        1) 자기드럼 - 원통형 표면에 자성 데이터를 입힌 것

                    - 헤드가 움직이지 않으므로 탐색시간이 없다

                    - 저장 데이터량이 적고 부피에 비해 용량이 적다

                    - 자기디스크보다 접근시간이 빠르다

        2) 자기코어 - 환상형의 강자성체 물질로 되어 자화방향에따라 0,1을 표시

        3) 광 디스크 - 레이저 빔 이용. 처음 데이터 접근 시간은 느리나 연속된 데이터의 엑세스는 빠르다

                     - 접근시간은 자기 디스크보다 빠르다

    * 캐시(Cache)

       1) CPU 캐시 기억장치

          - CPU와 주기억장치의 속도차이를 완화시키기 위한 장치

          - 개념적으로 CPU와 주기억장치 사이에 존재하나 실제 CPU 내부에 있다

          - CPU는 캐시 기억장치와 주기억장치를 직접 접근할 수 있다

       2) 디스크 캐시

          - 국부적 휴리스틱 기법 사용 : 빈번히 사용되는 레코드가 무엇인지 알기 위해

          - 주기억장치와 디스크의 속도차이를 개선하기 위한 장치

          - 번번이 사용되는 기록을 주기억장치의 디스크 캐시 버퍼에 저장하여 사용

    (5) 디스크 가용공간 관리

        1) 비트 백터

        2) 연결 리스트 - 모든 가용 공간 블록들을 함께 연결

        3) 그룹핑(grouping) - 첫 번째 가용블록 내에 n개의 가용 블록들의 번지를 저장

        4) 카운팅(counting) - 첫 번째 가용블록의 주소와 그 첫 번째 블록에 연속된 가용 블록들의 개수를

                             보존


3.4.4 디스크 스케쥴링 기법

    (1) 개요

        1) 탐색시간 최적화 알고리즘(seek time optimization algorithm)

        2) 회전지연시간 최적화 알고리즘(rotational latency optimization algorithm)

        3) 스케쥴링 분류 기준

           ① 처리율(throughput) - 단위 시간에 디스크의 헤드가 찾을 수 있는 데이터의 수를 최대화

           ② 평균응답시간(mean response time)

           ③ 응답 시간의 편차(variance of response time)

              - 평균 응답시간을 줄이고 예측할 수 있도록 하는 것


    (2) 디스크 스케쥴링 기법

        1) FCFS(First Come First Served) 스케줄링

           - 가장먼저 입력된 요구가 우선적으로 서비스를 받는 방법

           ① 구현 - 대기 큐에 입력된 요구 순서대로 서비스 진행

           ② 특징 - 대기 큐의 순서대로 서비스하며 더 높은 우선 순위의 요청이 입력되어도 순서가

                     바뀌지 않아 공평성이 보장 됨

                   - 디스크 오버헤드(부하)가 커지면 응답시간이 길어진다

        2) SSTF(Shortest Seek Time First) 스케쥴링

           - 탐색 거리가 가장 짧은 요청을 먼저 처리하는 방법

           - 탐색 시간의 극소화, 극단적일 경우 기아상태 발생 가능

           ① 구현 - 현재 위치에서 가장 가까운 거리에 있는 요청을 서비스한다

                   - 대기 큐의 우선순위에 관계없이 다음 최단 거리 요청을 서비스

           ② 특징 - 실린더 지향 기법

                   - 가장 안쪽이나 바깥쪽의 트랙은 가운데 트랙보다 서비스를 받지 못하기 때문에 

                     응답시간의 편차가 크다

                   - FCFS보다 처리량이 많고 평균 응답시간이 짧다

                   - 일괄처리 시스템에 유용하고 응답시간의 편차가 크므로 대화형 시스템에 부적합

        3) SCAN 스케쥴링(엘리베이터 알고리즘)

           - Denning이 개발, SSTF가 갖는 응답시간의 편차와 차별을 극복하기 위한 방법

           - 오버헤드가 적은 경우

           ① 구현 - 헤드진행 방향과 같은 방향의 가장 짧은 거리에 있는 요청을 먼저 서비스하고 진행 중 

                     가장 바깥쪽까지 갔거나 더 이상 요구가 없으면 반대쪽으로 방향을 바꾸어 서비스

           ② 특징 - 디스크 오버헤드가 적어야 가장 좋은 효율을 가짐

                   - 대부분의 디스크 스케줄링의 기본 전략

                   - 밀도가 높은 쪽의 요청은 상당히 오랜 시간 대기하게 됨

        4) C-SCAN(Circular) 스케줄링 기출94 기출95

           - 가장 안쪽이나 가장 바깥쪽 실린더에 대한 차별을 제거

           ① 구현 - 바깥쪽 실린더에서 안쪽으로 진행하면서 최단거리의 요구를 서비스

                   - 더 이상 요구가 없으면 가장 바깥쪽에서 서비스하지 않은 요구로 이동하여 서비스

           ② 특징 - 진행도중 도착한 요청은 다음 수행 시 서비스

                   - 응답시간의 편차가 매우 적다

                   - 회전 시간의 최적화가 가능하며 부하(overhead)가 많이 걸리는 경우 효과적

        5) N-step SCAN 스케줄링

           - 서비스가 한쪽 방향으로 진행될 때 대기 중이던 요구들만 서비스

           ① 구현 - SCAN과 동일

                   - 진행 중 입력된 요청들은 한데 모아 반대방향 진행 때 서비스한다

           ② 특징 - 처리량과 평균응답시간에 있어 효율적

                   - SSTF 나 SCAN 방법보다 응답시간의 편차가 적다

                   - 한 실린더에 많은 요청이 도착해도 대기중인 요청만 처리하므로 무한대기가 없다

        6) 에센바흐 기법(Eshenbach scheme)

           ① 구현 - 헤드는 C-SCAN처럼 움직이는데 예외로 모든 실린더는 그 실린더에 요청이

                     있든 없든 전체 트랙이 한 바퀴 회전할 동안 서비스 받는다

           ② 특징 - 부하가 큰 항공예약 시스템을 위해 개발

                   - 탐색시간과 회전지연시간을 최적화

        7) SLTF(Shortest Latency Time First) 스케줄링

           - 회전지연시간의 최적화를 위한 기법

           ① 구현 - 디스크 헤드가 특정 실린더에 도착하면 여러 트랙을 가리키게 된다

                   - 이 여러 트랙에 대한 많은 요구들 중 가장 짧은 회전지연시간을 갖는 요청에

                     대해 먼저 서비스

           ② 특징 - 구현하기 쉽다. 이론적 최적값과 거의 일치

                   - 회전지연시간 최적화는 디스크 주변의 가장 가까운 섹터가 가장먼저 서비스되므로

                     섹터큐잉(sector queueing)이라 불림

                   - 고정헤드 디스크를 위한 스케쥴링 기법


3.4.5 실시간 처리 디스크 스케쥴링 알고리즘

     1) EDF(Earliest Deadline First) 스케쥴링

     2) P-SCAN(Priority SCAN) 스케쥴링

     3) FD-SCAN(Feasible Deadline SCAN) 스케쥴링

     4) SSEDO(Shortest Seek and Earlist Deadline by Ordering) 스케쥴링 

     5) SSEDV(Shortest Seek and Earlist Deadline by Value) 스케쥴링 

     6) SCAN-EDF 스케쥴링

     7) GSS 스케쥴링


제4장 정보관리

4.1 파일 시스템

4.1.1 개요

    (1) 파일의 개념

        - 프로그램과 데이터로 구성된 작성자에 의해 정의된 상호 관련 있는 정보의 집합체

        - 이름에 의해 참조되고 파일의 형태, 작성시기, 작성자, 길이 등의 속성을 갖는다

    (2) 파일의 종류

        1) 수행되는 기능에 따라 - 마스터, 트랜잭션, 보고서, 작업, 프로그램 파일

        2) 파일 구성에 따라 - 순차, 인덱스 된 순차, 인덱스, 직접, 다중 링 파일

    (3) 파일의 형태

        1) 원시파일   2) 목적파일   3) 텍스트파일

    (4) 디렉토리 개념

        - 디렉토리 구조는 파일 시스템에 있는 여러 파일을 구성하기 위한 기법을 제공

        - 디렉토리에 포함되는 정보 : 파일이름, 파일형태, 파일위치, 파일크기, 현재위치,

                                     보호, 사용 수, 시간, 날짜, 처리식별

    (5) 파일조작

        - 운영체제가 할일 : open, create, write, read, rewind, delete, insert, rename, close

        * 파일 단위 작업 - open, close, create, destroy, copy, rename, list

          레코드 단위 작업 - read, write, update, insert, delete

    (6) 파일 시스템의 기능

        1) 상위기능 - 디렉토리구조제공, 디스크공간할당 및 회수, 파일보호, 데이터 무결성

        2) 하위기능 - 오류검출, 디스크 스케줄링, 암호화, 블록전송

    (7) 파일 시스템의 요소

        1) 엑세스 방식 - 파일에 저장되어 있는 데이터에 대한 접근 방식

        2) 파일 관리 - 파일을 저장, 참조, 공유, 보호할 수 있는 기법 제공

        3) 보조기억장치 관리

        4) 무결성 유지 - 파일의 정보가 소실되지 않도록 보장

    (8) 파일의 특성 결정 기준

        1) 소멸성 - 파일에 자료를 추가하거나 제거하는 작업의 빈도 수

        2) 활성율 - 프로그램이 한 번 수행되는 동안 처리하는 레코드 수

        3) 크기 - 파일에 저장되어 있는 정보의 양


4.1.2 파일의 구조 및 접근방법

    (1) 파일의 구조

        1) 순차파일(sequential file) - 순차적으로 저장되며 일괄처리에 주로 사용

                                  - 테이프 장치와 천공카드, 프린터 등에 주로 쓰임

        2) 인덱스 된 순차파일(indexed sequential file)

           - 레코드가 각 레코드의 키에 따라 논리적 순서대로 배열되어 있는 것

           - 순차데이터 파일과 이 파일에 대한 포인터를 가지고 있는 인덱스로 구성

           - 정적 인덱스와 동적 인덱스방법을 사용하며 디스크 장치에 많이 사용

           - 파일 설계 시 고려해야 할 사항이 많다

        3) 직접파일(direct file)

           - DASD의 상세한 물리적 구조를 알아야 한다.

           - 다른 레코드를 참조하지 않고 어떤 임의의 레코드도 접근 가능

           - 대화형 처리에 이용되며 순차검색은 어렵다

    (2) 파일 접근 방법 기출95

        1) 순차접근(sequential access)

           ① 판독(read) - 테이프의 파일을 순차적으로 읽어 나가며 포인터는 자동 증가

           ② 기록(write) - 파일의 맨 뒤에 추가하며 파일 포인터는 추가된 내용의 끝으로 이동

        2) 직접접근(direct access)

           - 파일이 연속된 블록이나 레코드의 집합으로 간주, 키 값 필요, 가변길이 레코드에 부적합

           - 어떠한 블록도 직접 판독 또는 기록할 수 있다, 접근시간 빠르고 수정용이

        3) 색인순차접근(indexed sequential access method : ISAM)

           - 키 값에 따라 순차적으로 정렬되어있는 레코드에 대한 색인을 사용하여 접근

           - 색인 탐색 후 레코드 영역에서는 순차접근이 수행


4.1.3 기억장소 할당과 회수 방법

    (1) 연속할당(contiguous allocation)

        - 파일들이 디스크 내의 연속적으로 인접된 공간에 할당되는 것

        1) 장점 - 액세스 속도가 빠르고 파일 디렉토리가 단순하다

        2) 단점 - 새로 생성되는 파일의 기억공간의 크기를 미리 결정하며 단편화 발생

                - 원하는 만큼의 기억공간이 확보되지 않으면 그 파일은 생성되지 못함

                - 주기적 압축이 필요

    (2) 연결할당(linked allocation) - 파일이 저장되는 섹터들이 연결 리스트로 구성되고 각 섹터간에는

                                   연결을 위한 포인터를 가지고 있는 형태

        1) 장점 - 단편화가 일어나지 않으며 생성되는 파일의 크기가 문제되지 않는다

        2) 단점 - 논리적으로 연속된 블록의 검색에 긴 시간 요구

                - 연결리스트 구축에 추가시간이 요구되며 포인터를 위한 기억장소가 낭비

                - 포인터가 손상되면 데이터를 찾을 수 없다

    (3) 블록단위할당

        1) 블록체인 기법 - 연결할당과 비슷하나 할당단위가 블록 단위로 이루어지는 방법

           ① 장점 - 삽입과 삭제는 포인터만 수정하므로 간단

           ② 단점 - 속도가 느리다

        2) 색인 블록 체인 기법 - 파일마다 하나의 색인 블록을 두고 이 색인 블록에 포인터를 모아두어 

                                 직접접근을 가능하게 한 기법

           ① 장점 - 탐색 시간이 빠르다. 여러 개의 색인 블록을 서로 연결하여 사용 가능

           ② 단점 - 삽입 시 색인 블록을 재구성해야 함. 기억장치 낭비

        3) 블록지향 파일 사상 기법 - 포인터 대신 블록 번호를 사용


4.1.4 파일의 보호

    - 물리적인 손상으로부터 보호와 파일에 대한 무제한 접근을 방지하는 것

    (1) 보호방법 기출94

        1) 접근제어(access control) - 사용자에 따라 접근 대상을 다르게 구별

        2) 파일이름 명명(naming) - 파일의 이름을 알지 못하는 경우 접근대상에서 제외

        3) 암호(password) - 파일 접근 시 암호를 입력하여 접근하는 방법

    (2) 백업과 복구 - 주기적으로 시스템 파일을 복사하여 안전한 곳에 보관


4.2 보호와 보안

4.2.1 보호(Protection)

    (1) 보호 - 컴퓨터 시스템에 의하여 정의된 자원에 대하여 프로그램, 프로세스, 사용자의 접근을

               제어하는 기법

        1) 보호의 이유

           - 사용자가 자원에 대한 접근 제한을 의도적으로 위반하는 것을 방지

           - 시스템 내에서 동작중인 각 프로그램 요소가 시스템 자원의 정해진 사용정책대로 자원들을 

             사용하도록 보장

           - 시스템의 자원들이 무자격 사용자에 의하여 잘못 사용되는 것을 방지

        2) 보호영역

           - 한 프로세스는 하나의 보호영역에서만 동작하며 보호영역은 프로세스가 접근 가능한 자원을

              의미

           - 하나의 영역은 접근권한의 집합이고 접근권한은 어떤 프로세스가 객체에 대한 조작을 수행할

              수 있는 능력

    (2) 보호기법과 정책

        1) 보호기법

           - 접근제어, 이름부여(naming), 암호화(password), 해독화(cryptography), 사용자 인증

        2) 접근행렬에 의한 보호기법

           ① 전역 테이블(global table)

               - 접근행렬의 가장 단순한 구현으로 3개의 순서쌍<영역, 객체, 권한집합>들의 집합으로 구성

               - 주기억 공간에 보관 시 기억장소 낭비

               - 보조기억 장치로부터 추가적 입출력 필요

           ② 접근제어 리스트(access control list)

               - 접근행렬의 각 객체와 열을 결합하여 <영역, 권한집합>의 순서쌍을 갖는 접근 리스트로 

                 표현하는 방법

           ③ 권한 리스트(capability list) - 객체와 그 객체에 허용된 조작 리스트

           ④ Lock-Key 기법 - 접근제어리스트와 권한리스트의 절충

                             - 각 객체는 lock이라 불리는 유일한 비트 패턴 리스트를 갖고 각 영역은

                                key라는 독특한 비트열을 가지고 있다

                             - 수행중인 프로세스는 해당 영역이 객체의 lock과 일치하는 key가

                                있을 때 만 그 객체에 접근


4.2.2 보안(Security)

    (1) 개요

        1) 보안이란?

           - 컴퓨터 시스템 내에 저장된 프로그램과 데이터에 대하여 통제된 접근 방식을 어떻게 제공할

             것인가를 다루는 문제

           - 적절한 보호 시스템뿐만 아니라 시스템이 동작하는 외부 환경에 대해서도 고려

           - 시스템과 시스템 데이터가 결함 없이 보존

           - 정의된 자원에 대해 프로세스 또는 사용자의 접근을 제어

        2) 종류

           ① 외부보안 - 불법 침입자나 천재지변으로부터 시스템을 보호

             - 시설보안 : 감지기능을 통해 외부 침입자나 천재지변으로부터의 보안

             - 운용보안 : 시스템운영자, 관리자, 경영자들의 정책과 통제절차를 통해 이루어지는 보안

           ② 내부보안 - 하드웨어나 운영체제의 내장된 보안 기능을 통해 신뢰성을 유지

           ③ 사용자 인터페이스 보안 - 사용자의 신원을 운영체제가 확인하는 절차를 통해 불법 

                                       침입자로부터 시스템을 보호

     (2) 보안의 위험을 줄이는 방법

         1) 모니터 기법

            - 허락한다는 신호가 나오면 감시 프로그램이 그 파일을 액세스하고 그 결과를

               사용자 프로그램에 알려준다.

         2) 위험감시 기법

            - 중요한 작업에 대한 제어권을 사용자가 직접 갖지 못하게 하고 운영체제가 갖는 방법

            - 사용자는 운영체제에 요구만 한다.


제5장 분산 운영체제

5.1 개념 및 특징

    (1) 분산처리 시스템(distribute processing system)

        1) 분산처리 시스템이란? - 중앙으로부터 분산되어있는 컴퓨터로 모든 데이터의 처리 작업을 

                                  수행하여 그 결과를 상호 교환하도록 연결되어 있는 시스템

        2) 장점

           ① 제한된 자원의 공유 가능

           ② 시스템의 능력에 비해 업무량이 과중되어도 시스템을 바꿀 필요가 없다

           ③ 업무량 증가에 따라 컴퓨터를 네트워크에 투입하여 시스템의 성능을 향상

           ④ 하나의 컴퓨터가 고장시에도 다른 컴퓨터가 작업을 계속 수행하므로 작업에 대한 신뢰도를 

              높일 수 있다

           ⑤ 한 작업을 병렬로 처리하므로 전체적인 처리율(throughput)을 향상 시킨다

        3) 단점

           ① 분산처리 시스템에 투입되는 컴퓨터 비용 및 시스템의 구축이 쉽지 않다

           ② 여러 시스템간의 호환성을 고려하여 표준을 정해야 한다

    (2) 일반적인 형태

      1) 서브시스템을 중심으로 여러 노드들이 연결되어 있으며 각 노드에는 단말기가 설치 

      2) 통신서브 시스템 - 노드들 사이의 통신을 연결해주는 시스템으로 LAN, WAN


5.2 분산 운영체제

5.2.1 분산처리 시스템의 개발동기

        1) 자원공유(resource sharing)

           - 서로 다른 기능을 가진 많은 수의 사이트들이 서로 연결되어 있다면 한 사이트의 사용자는 

             다른 사이트의 이용 가능한 자원을 사용할 수 있다

        2) 연산속도 향상(computation speed-up)

           - 특정 연산이 동시에 수행 가능한 부분 연산들로 분할될 수 있다면 이들 연산들을 여러

             사이트에 분산시켜 연산 속도를 높일 수 있다

        3) 신뢰성(reliability)

           - 분산체제 내에서 한 사이트가 고장이 발생해도 나머지 사이트들은 계속 동작

        4) 통신(communication)

           - 다수의 사이트가 통신 네트워크를 통해 서로 연결되었을 때는 다른 사이트에 있는 사용자들이 

             정보를 서로 교환할 수 있다.

   * 분산 운영체제 구성동기(설계 이유) 기출95

      - 신뢰성 향상, 작업의 신속한 처리, 여러 자원들의 공유, DB의 공동 이용, 통신 이용


5.2.2 분산처리 시스템의 형태

    (1) 프로세서 모델에 따라

        1) 클라이언트-서버 모델 - LAN을 기본으로 구성되며 응용 프로그램이 사용자의 워크스테이션이나 

                                  PC 환경에서 수행

        2) 프로세서 풀(pool) 모델 - 응용프로그램들이 프로세서 서비스로서 관리되는 컴퓨터에서 수행

        3) 혼합모델 - 사용자의 요구와 자원처리가 매칭 된다

    (2) 위상(topology)에 의한 분류

        1) 완전 연결형 - 각 노드가 시스템내의 모든 다른 노드와 직접 연결된 상태이며 노드 및 회선에 

                         대한 비용 증가는 노드수의 제곱에 비례

                       - 전송속도가 빠르고 신뢰성이 높으나 비용이 많이 든다

        2) 부분 연결 구조 - 직접 연결되지 않은 노드가 존재하여 비용은 완전연결 구조보다 싸나 신뢰성은 

                            떨어진다

        3) 계층 구조형 = 트리 구조형 - 트리 형태로 연결되며 비용은 부분연결형보다 싸다

                                     - 부모노드가 고장나면 자식노드들은 통신이 두절

        4) 링(ring)형 = 환상형

           - 이웃 노드간의 단방향 및 양방향 통신이 가능하며 노드의 고장 발견이 쉽다

           - 보안 문제가 발생하며 새 노드 추가 시 통신회선을 절단해야하며 각 노드에서 전송지연 발생

        5) 성형(star) 구조

           - 각 노드들이 point-to-point 형태로 중앙 컴퓨터에 연결되고 중앙 컴퓨터를 경유하여 통신

           - 보수와 관리가 용이하고 노드의 고장이 다른 노드에 영향을 주지 않는다

           - 중앙컴퓨터 고장 시 전체 네트워크가 정지되며 통신망 전체가 복잡

        6) 버스(bus) 구조

           - 통신회선이 1개이므로 물리적 구조가 간단하고 노드의 추가와 삭제가 용이

           - 데이터 비밀 보장이 어렵고 통신회선의 길이에 제한이 있다

    (3) 분산 범위에 의한 분류

        1) WAN(wide area network) - 원거리 시스템을 연결하므로 통신속도가 느리고 신뢰성이 낮다

        2) LAN(local area network) - 근접 시스템을 연결하므로 속도가 빠르고 오류 발생률이 낮다

    (4) 운영체제 형태에 따른 분류

        1) 네트워크 운영체제(network operating system)

           - 각 노드가 독자적인 운영체제를 가지며 필요시 네트워크를 통해 통신

           - 설계와 구현이 쉽다

           - 자원의 공유가 번거롭고 프로세서의 운영체제가 모두 다를 때 곤란

        2) 분산 운영체제(distributed operating system)

          - 하나의 운영체제가 모든 네트워크, 프로세서 및 시스템내의 자원과 작업을 총괄

          - 사용이 편리하고 시스템간 자원공유가 쉽다

          - 설계와 구현이 어렵다


5.3 병렬처리 시스템(Parallel Processing)

5.3.1 병렬처리 시스템의 개요

    (1) 의미 - 다중처리 시스템에서 하나 또는 그 이상의 운영체제가 여러 개의 프로세서를 관리하며 동시에 

              수행하는 시스템

    (2) 병렬처리 시스템의 발전단계

        1) 1단계 - 단일 프로세서 컴퓨터에 병렬기법 도입

                 - RISC(reduced instruction set computers)

        2) 2단계 - 운영체제를 단일 컴퓨터의 운영에서 벗어나 복수의 연산소자 및 네트워크까지도 운영

                 - 알고리즘 기술 발달

        3) 3단계 - 병렬화를 묵시적으로 나타내는 새로운 언어의 개발 요구

        4) 4단계 - 사용자와 같은 레벨에서 통신할 수 있도록 높은 레벨의 사용자 인터페이스 제공


5.3.2 병렬 처리 시스템의 분류

    (1) Flyne에 의한 컴퓨터 구조의 분류

        1) SISD(Single Instruction stream Single Data stream)

           - 한번에 하나의 명령수행, 가장 일반적인 구조로 폰 노이만 방식

        2) SIMD(Single Instruction stream Multi Data stream)

           - SISD보다 빠르다, 배열처리기

        3) MISD(Multi Instruction stream Single Data stream)

           - 이론적일 뿐 실제 사용하지 않는다

        4) SISD(Multi Instruction stream Multi Data stream)

           - 진정한 의미의 병렬 프로세서(멀티 프로세서라고도 함)

    (2) 자료와 명령어의 흐름에 따른 병렬처리 시스템

        1) 파이프라인 - 하나의 프로세서를 서로 다른 기능을 가진 여러 개의 부 프로세서로 나누어

                         각 부 프로세서가 동시에 서로 다른 데이터를 취급하도록 하는 기법

                       - 한번에 여러 명령어가 실행되게 해서 성능을 향상시키는 방법

        2) 벡터(vector) - 벡터 명령어가 실행되면 벡터(피 연산자)의 각 항목들은 하나씩 파이프라인에 

                         나눠지고 파이프라인의 한 단계가 완성되는 동안 연기되는 기법

        3) 배열 처리기(array processor) - SIMD 컴퓨터로 한 배열의 각 항목에 동시에 같은 명령어를 수행

        4) 데이터 흐름 프로세서(data flow)

           - 많은 연산을 병렬적으로 수행하며 요구되는 데이터가 이용 가능한 명령어를 실행하기 때문에

             데이터 구동방식(data driven) 이라고 한다

        5) 다중 처리기(multiprocessor)

           - 기억장치나 데이터베이스 등의 자원을 공유하며 상호 작용하는 다중 프로세서들을 통하여

              비 동기적 병렬성을 얻는다

           - 2개 이상의 프로세서를 사용하므로 하나가 고장나더라도 다른 프로세서들은 가동할 수 있다

    (3) 기억장치 결합도에 따른 분류

        1) 강결합(tightly coupled)

           - 여러 프로세스가 하나의 저장장치를 공유하며 하나의 운영체제가 모든 프로세스들과 시스템

             하드웨어를 제어

           - 전송속도가 기억장치의 대역폭에 의해 결정

           - 공유 메모리를 차지하기 위한 프로세스간 경쟁이 치열

           - 결합 스위치(combining switch)로 프로세스간 경쟁 해결

        2) 약결합(loosely coupled)

           - 각 프로세스는 각자의 기억장치를 가지고 있다

           - 자체 운영체제를 갖고 있다

           - 프로세스간 통신은 메시지전달과 원격 프로시져 호출로 이루어진다

    (4) 연결방식에 따른 분류

        1) 공유버스(shared bus)

           - 프로세서, 기억장치 및 입출력 장치들간에 하나의 버스만 존재

           - 간단하며 경제적이고 융통성이 있다, 새로운 장치를 연결하기 쉽다.

           - 한번에 한가지 전송만 가능하고 버스에 이상이 생기면 전체 시스템이 중단

           - 시스템이 바빠지면 효율성이 저하된다

        2) 크로스바 교환행렬(crossbar-switch matrix)

           - 공유버스 구조에서 버스의 수를 기억장치의 수만큼 증가시킨 시스템

           - 모든 기억장치 모듈로 동시 전송이 가능

           - 하드웨어가 크고 복잡, 인터페이스는 간단

        3) 하이퍼 큐브(hypercube)

           - 비교적 경제적인 방법으로 많은 프로세서들을 연결하는 방법을 제공

           - 많은 노드가 연결될 경우 비용이 급속도로 증가

        4) 다단계 네트워크(multistage network) = 다중 입 출구 기억장치

           - 한 노드가 어떠한 다른 노드에라도 연결할 수 있도록 하여 여러 프로세서의 연결을 쉽게 한다

           - 교환기의 수가 매우 적으며 단일 경로지만 다양한 연결이 가능

           - 교환 네트워크의 비용을 증가시키며 전송 시간이 비교적 느리다

    (5) 다중처리 시스템의 운영체제 형태에 따른 분류

        1) 주/종 관계(master/slave)

           - 하나의 프로세서가 master로 지정되어 범용 프로세서로서 연산 및 입출력을 담당하고

             나머지들은 slave로 연산만을 담당하고 사용자 프로그램만 수행

           - 구현이 쉬우나 하드웨어의 비 대칭성이 발생하고 하드웨어를 최적으로 사용하지 못한다

        2) 분리수행(separate executives) 

           - 각 프로세서가 독립적으로 자원을 가지는 단일프로세서 시스템처럼 독자적인 운영체제와

             기능을 가지는 형태

           - 각 프로세서에서 발생하는 인터럽트는 해당 프로세서에서 해결

           - 주/종 관계보다 신뢰도가 높아 한 프로세서의 고장이 전체 시스템에 영향을 주지 못한다

           - 일부 프로세서가 유휴 상태로 될 수 있다

        3) 대칭처리

           - 모든 프로세서가 동등한 입장의 대칭성을 가지고 있으며 구현 및 수행이 매우 복잡한 형태

           - 가장 강력한 능력의 시스템

           - 한 운영체제를 동시에 수행할 수 있게 하므로 재진입 코드와 상호배제가 필요

           - 다른 기법에 비해 작업을 효과적으로 분산시킬 수 있다

           - 모든 프로세서들은 동등한 입장에서 입출력 장치와 기억장치를 사용

           - 기억장소를 여러 프로세스가 동시에 엑세스 하려할 경우 보통 하드웨어로 해결

           - 시스템 테이블을 여러 프로세스가 동시에 엑세스 하려할 경우 보통 소프트웨어로 해결

           - 신뢰도가 가장 높다.


제6장 운영체제의 실제

6.1 UNIX

6.1.1 기본 개념 기출95 기출96

     - UNIX 운영체제의 파일 시스템이 관리하고 있는 디렉토리 구조 : 다단계 트리구조

     - CPU 스케줄링 방식 : 기본 우선순위 지정 후에 우선순위 조정

     - I-node : 파일에 할당된 data list의 I번째 node를 의미

     - 파이프(pipe) : UNIX에서 프로세스간의 통신과 동기를 위해 사용

반응형

'연구개발 > Etc..' 카테고리의 다른 글

mac port kill  (0) 2024.01.31
[Docker] 생성 및 실행  (0) 2018.07.04
지표 관련 용어  (0) 2016.08.22
unity key  (0) 2016.05.07
RAID 1+0 과 0+1의 차이점  (0) 2011.07.11

+ Recent posts