CS

[컴퓨터과학개론] 운영체제

Grace 2023. 11. 30. 23:29

운영체제

  • 컴퓨터 하드웨어응용프로그램(프로그래머) 혹은 컴퓨터 사용자 사이의 인터페이스를 제공하는 시스템 소프트웨어
  • 사용자 측면에서는 하드웨어에 대한 지식이 없어도 하드웨어에 접근하고 사용할 수 있는 하드웨어 사용의 편리성을 제공함
  • 시스템 측면(개발자 측면)에서는 제한적인 컴퓨터 자원을 효율적으로 사용하기 위한 컴퓨터 자원 관리의 효율성을 제공함

프로세서 관리자

  • 프로세스에게 프로세서(중앙처리장치-CPU)를 할당함
  • 프로세스를 위한 중앙처리장치의 할당과 관리를 담당하고, 이를 위해 각 프로세서의 상태를 모니터링
  • 프로세스에게 중앙처리장치의 할당이 필요한 경우를 찾아내고 효율적인 관리를 위해 프로세스의 실행 상태를 변화시키기도 함

주기억장치 관리자

  • 프로세스에게 주기억장치를 할당하고 프로세스로부터 할당된 주기억장치를 회수함
  • 제한된 주기억장치를 여러 프로세스가 나누어 사용하기 위해 효율적인 주기억장치의 관리가 필요함
  • 주기억장치 관리자도 주기억장치를 할당 받고 상주하면서, 주기억장치 관리자에 의해서 보호되고 관리됨

장치 관리자

  • 시스템 개발자에 의해 구현된 운영체제의 스케줄링 기법에 따라 비디오 디스플레이, 키보드, 프린터, 디스크 드라이브와 같은 시스템의 모든 장치를 가장 효율적으로 관리하고 동작 시킴
  • 프로세스에게 할당된 장치를 반환하여 다른 프로세스가 사용할 수 있도록 함

파일 관리자

  • 컴파일러, 인터프리터와 같은 시스템 프로그램과 각종 응용 프로그램, 그리고 데이터 파일 등의 모든 파일에 대한 읽기와 쓰기 동작을 관리함
  • 파일에 대한 프로세스의 접근을 관리하여 데이터 보호를 보장함
  • 파일을 위한 컴퓨터 자원의 할당과 회수를 수행함

운영체제의 작업 처리방식

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

  • 작업 간 전환을 줄여 컴퓨터 시스템을 최대한 활용하기 위하여 일괄처리 방식이 등장함
  • 일괄처리 시스템은 처리할 작업이 발생할 때마다 즉각적으로 처리하지 않고 처리해야 할 작업이 일정량에 도달할 때까지 여러 작업을 모아 놓음 → 이렇게 모아져 있는 작업을 한꺼번에 처리하는 방식
  • 컴퓨터 시스템 사용의 효율성은 높일 수 있으나 작업의 결과를 빠르게 확인할 수 없는 단점이 존재함
  • 일정량의 작업이 모아질 때까지 기다려야 하고, 정해진 시기 이후에만 모아진 작업의 처리가 가능함

다중 프로그래밍 시스템(multiprogramming system)

  • 여러 개의 프로그램을 효율적으로 실행시키기 위해 컴퓨터의 여러 자원을 관리함
  • CPU를 사용하고 있는 작업 A가 CPU의 사용을 멈추고 입출력 장치를 사용하게 되면, 그 동안에 CPU는 다른 작업에게 할당될 수 있으며 효율적인 컴퓨터 자원의 활용이 가능함
  • 여러 개의 프로그램들이 컴퓨터 자원이 쉬는 시간에 서로 양보하며 사용하는 방식을 이용하여 작업들을 처리할 수 있다면 컴퓨터 자원의 사용을 최적화 시킬 수 있음
  • 기본적으로 처리 속도가 느린 입출력 장치와 처리속도가 빠른 CPU의 속도 차이를 이용하여 컴퓨터 자원의 활용도와 처리능력을 증대시킴
  • 1960년대 등장하였으며, 주기억장치에 여러 개의 작업(프로그램)이 동시에 존재하면서 주변장치(입출력 장치, 네트워크 장치 등)가 사용되는 동안 CPU가 다른 작업에 할당되는 개념

시분할 처리 시스템(time-sharing processing system)

  • 대화식 작업에서 사용자와 컴퓨터는 네트워크를 통해 상호작용을 하므로 컴퓨터가 사용자의 요구를 빠르게 처리해줘야 함
  • 동시적인 대화식 사용자의 다중 프로그래밍을 위해서 개발된 것이 바로 시분할 처리 시스템임
  • CPU의 시간을 일정 간격의 작은 시간으로 쪼개서 각 사용자에게 시간 간격이 할당되고, 그 동안 직접 컴퓨터와 대화식으로 작업을 수행할 수 있도록 개발됨
  • 많은 사용자들이 동시에 컴퓨터를 공유하면서도 각 사용자들은 자기 혼자 컴퓨터를 사용하고 있는 것과 같은 서비스를 받게 됨
  • 기억장치 관리, 디스크 스케줄링, 실행중인 작업 간의 통신, 입출력 장치의 사용에 대한 제어 및 관리 등의 복잡한 기능들이 요구되고, 이에 따라 운영체제는 점점 복잡해짐
  • 컴퓨터 자원의 효율성은 더욱 높아지고 컴퓨터 사용에 대한 만족도가 높아지게 됨

기억장치의 구성

  • 컴퓨터 시스템에서 사용되는 기억장치는 접근속도, 비용 및 장치의 용량에 따라 계층적으로 구성됨
  • CPU의 처리속도는 저장 장치에 비해서 엄청나게 빠르므로 CPU가 사용하려는 프로그램 코드와 데이터는 CPU 레지스터나 캐시 기억장치에 있어야 함
  • 레지스터나 캐시 기억장치의 용량의 한계로 인해 주기억 장치에도 저장된 프로그램 코드나 데이터에 접근할 수 밖에 없음
  • 프로그램이나 데이터의 크기는 일반적으로 주기억장치보다 크기 때문에 당장 필요하지 않은 프로그램 코드나 데이터는 사용될 때까지 보조기억장치에 저장해 놓고, 이에 대한 실행이나 참조가 발생하는 시점에 주기억장치로 이동됨
  • CPU와 주기억장치 사이의 속도 차이로 인한 지연 문제를 방지하기 위해서 CPU와 주기억장치 사이에 주기억장치보다 빠른 속도의 기억장치인 캐시를 이용함
  • 만일 캐시 기억장치에 원하는 프로그램 코드나 데이터가 있다면 즉시 사용할 수 있음
  • 캐시 기억장치에 원하는 내용이 존재하지 않는 경우에는 주기억장치를 검색해서 CPU로 가져가서 처리하고, 그 프로그램 코드나 데이터를 차후의 사용을 위해 캐시 기억장치에도 복사함
  • CPU 내에는 여러 레지스터가 존재하며, CPU에 직접 내장되어 있기 때문에 기억장치 중에서 가장 빠른 처리 속도를 제공함
  • CPU에서 데이터나 프로그램 코드를 사용할 때는 레지스터에 프로그램 코드나 데이터를 저장하고 CPU 연산을 처리함

주기억장치의 할당

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

  • 하나의 사용자 프로그램만이 전체 주기억장치에 할당되는 방식임
  • 실행될 프로그램이 주기억장치의 용량을 초과하면 실행할 수 없음
  • 단순하여 구현하기 쉽지만 큰 프로그램을 수행할 수 없음
  • 하나의 프로그램이 모든 기억장치, 주변장치 및 CPU 등을 할당받아 사용하기 때문에 유휴 자원에 대한 낭비가 심하고, 하나의 프로그램을 실행시키는 동안 다른 프로그램들은 기다려야 하므로 대기 시간이 길어짐
  • 주기억작치의 크기보다 큰 프로그램을 실행할 수 없음
  • 오버레이 기법: 큰 프로그램을 수행하기 위해서 제시됨
    • 주기억장치의 이용 가능 영역보다, 큰 프로그램작은 네 개의 프로그램으로 쪼갬
    • 실행 기간 동안 주기억 장치 내에 있어야 하는 프로그램 코드와 데이터, 초기화 단계를 수행하는 프로그램 코드, 처리 단계를 수행하는 프로그램 코드, 출력 단계를 수행하는 프로그램 코드 등의 네 부분으로 이루어짐
    • 필요한 시기에 주기억장치에 번갈아 적재해서 실행되며, 주기억장치의 이용가능 영역보다 큰 프로그램도 실행할 수 있게 됨

고정 분할 다중 프로그래밍 기법

  • 단일 사용자 연속 기억장치 할당 기법이 한 번에 하나의 프로그램만 실행시킬 수 있는 문제점을 보완하기 위해 개발됨
  • 다중 프로그램이 시스템(여러 개의 프로그램이 실행되는 시스템)에서 주기억장치를 여러 개의 고정된 크기의 영역으로 분할하고, 실행 중인 여러 개의 프로세스에게 각각 할당하는 기법
  • 주기억장치 내부에는 여러 개의 프로그램(프로세스)들이 공존하기 때문에 한 작업이 입출력을 요구할 때, CPU는 다른 프로그램에게 할당되어 연산을 처리할 수 있음
  • 메모리에 여러 프로그램들이 상주해야 하므로 분할 영역들 간에 잘못된 참조를 방지하기 위한 메모리 보호가 필요하고 사용자 프로그램이 분할 영역에 정확히 맞지 않아서 단편화(fragmentation)가 발생할 수 있음 → 100MB 크기의 공간에 95MB 크기만큼 공간을 차지하는 작업이 실행된다면 나머지 5MB 크기의 공간은 낭비가 되며, 반대로 5MB 크기만큼 공간을 차지하는 작업이 실행된다면 95MB 크기의 공간이 낭비됨
  • 분할된 영역들마다 낭비 공간이 발생할 수 있기 떄문에 많은 공간이 낭비될 수 있음

동적 분할 프로그래밍 기법

  • 고정 분할 다중 프로그래밍 기법의 단편화를 해결하기 위해 개발
  • 프로그램이 주기억장치에 적재될 떄마다 모든 작업이 필요로 하는 크기(고정된 크기가 아니라 다양한 크기)만큼 연속된 공간이 할당되는 기법
  • 처음에는 필요한 크기의 주기억장치 분할에 의한 할당이 가능하기 때문에 단편화가 발생하지 않음
  • 시간이 지남에 따라 외부 단편화(영역의 크기가 너무 작아서 어떤 작업에 할당되지 못하고 비어 있는 상태)가 발생함
  • 통합(coalescing): 인접된 공백을 합쳐서 더 큰 하나의 공백으로 만드는 방법
  • 집약(compaction): 주기억장치 내의 흩어진 모든 공백을 하나로 모아서 하나의 커다란 저장 공간을 만드는 방법

가상기억장치

  • 주기억장치에서 이용 가능한 영역보다 큰 프로그램을 작은 단위로 쪼개어 실행시키기 위해 보조기억장치의 주소를 주기억장치의 주소로 변환하여 프로그램에게 제공되는 가상의 기억장치를 말함
  • 가상기억장치에서 가장 중요한 부분은 실행 중인 프로그램(프로세스)에 의해 참조되는 주소(가상 주소)를 변환하여 주기억장치에서 사용하는 주소(실 주소, 물리적 주소)로 연결시켜주는 것임
  • 실행 중인 프로그램(프로세스)이 주기억장치에서 데이터를 접근하기 위해서 가장주소만을 참조하지만, 프로세스는 실제로 실 기억 장치에서 실행되어야 하므로 운영체제가 가상 주소를 실 주소로 바꾸는 주소 변환 절차가 필요함
  • 가상기억장치 시스템에서는 실행 프로그램이 참조할 주소가 반드시 주기억장치의 주소일 필요는 없음
  • 가상 주소의 범위는 주기억장치에서 사용할 수 있는 실 주소보다 더 크며, 사용자의 논리적으로 통한됩 주소 공간과 컴퓨터의 물리적 공간(주기억 장치의 주소와 보조기억장치의 주소)을 연결시켜주는 개념임

페이징 기법

  • 보조기억장치로부터 프로그램 코드나 데이터를 페이지(Page)라고 불리는 동일한 크기의 블록으로 쪼개어서 주기억장치에 적재하여 접근하는 기법
  • 주기억장치도 페이지 크기와 같은 크기로 분할되며 이를 주기억장치의 페이지 프레임(page frame)이라고 부름
  • CPU에서 프로세스를 실행하기 위해서는 프로세스의 실행될 페이지가 주기억장치에 적재되어 있어야 함
  • 페이지는 보조 기억장치로부터 주기억장치로 옮겨져서 페이지 프레임에 적재되며, 이 때 페이지는 사용 가능한 페이지 프레임을 할당받아 주기억장치에 적재됨

세그먼테이션 기법

  • 프로그램 코드나 데이터를 일정하지 않은 서로 다른 크기로 분할하여 주기억장치에 적재하여 접근함
  • 프로그램 코드나 데이터를 서로 다른 크기로 분할된 블록을 세그먼트(segment)라고 부름
  • 개발자들은 프로그램을 모듈 단위로 작성하는 습관에 기반을 두고 있기 때문에 사용자가 직접 작성한 프로그램 모듈이나 데이터의 모듈은 논리적 개념에 의해서 다른 크기의 블록으로 나뉠 수 있으며, 이 블록을 세그먼트라고 함

프로세서 관리

프로세서 관리자

  • 주기억장치를 프로세스에게 할당하는 기법이 필요한 것처럼 중앙처리장치(CPU)를 프로세스에게 할당하는 기법이 필요함
  • 중앙처리장치 할당은 프로세서 관리자(운영체제)의 역할임
  • 프로세서 관리자는 단일 CPU에 프로세스를 할당하는 방법과 시간을 결정함

프로세스 상태

  • 프로세스는 실행 상태에 있는 능동적인 프로그램이며, 프로그램은 보조기억장치에 저장된 상태의 수동적 객체
  • 프로그램이 주기억장치에 적재되고 중앙처리장치를 할당받아 실행될 명령어로 변경되어 다양한 작업을 수행할 수 있는 능동적 객체를 나타냄
  • 운영체제는 프로세스의 정보를 저장하는 프로세스 제어 블록(Process Control Block, PCB)을 관리하며, 프로세스의 실행이 끝나면 프로세스 제어 블록을 삭제함
  • 하나의 프로세스가 시스템 내에 존재하는 동안 그 프로세서는 종료될 때까지 생성(new), 준비(ready), 실행(running), 대기(wating), 종료(finished)와 같은 5개 상태 중 하나의 상태에 있게 됨

프로세스 스케줄링

  • 선점(preemptive) 스케줄링: 이미 중앙처리장치(CPU)를 점유하여 실행 중인 프로세스를 내보내고, 다른 프로세스에게 중앙처리장치에 할당하는 스케줄링 기법
  • 비선점(nonpreemptive) 스케줄링: 일단 프로세스에 중앙처리장치가 할당되어 프로세스의 실행이 시작되면, 프로세스가 종료될 때까지 중앙처리장치를 다른 프로세스에게 양보하지 않는 기법
    • 짧은 작업이 긴 작업으로 인해 기다리게 되는 경우가 있지만 모든 프로세스 관리가 공평
    • 우선순위에 관계없이 대기 중인 작업에는 변동이 없으므로 응답시간을 예측할 수 있는 장점이 있음

우선순위 스케줄링

  • 기본적 우선순위는 각 프로세스가 요구하는 기억장치의 양, 주변장치의 수와 형태, 중앙처리장치 처리 요구 시간, 작업 처리를 시작한 시점부터 경과된 시간 등을 고려하여 중앙처리장치 관리자에 의해 결정됨
  • 외부적 우선순위는 사용자의 직위나 상거래의 규모 등을 이용하여 시스템 관리자가 결정함
  • 프로세스는 일반적으로 우선순위에 따라 배치하기 위해서 여러 개의 준비 큐에 들어감

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

  • 준비 큐에 도착한 순서대로 중앙 처리장치를 할당받도록 해주는 기법
  • 하나의 프로세스가 중앙처리장치를 차지하면 그 프로세스의 수행이 완료된 후에 그 다음 프로세스에게 중앙처리장치를 할당함
  • 대기 큐에 늦게 들어온 짧은 작업이 대기 큐에 일찍 들어온 긴 작업을 기다리게 되고, 중요한 프로세스가 덜 중요한 프로세스의 완료를 기다리는 단점

SJF(Shortest Job First) 스케줄링

  • 현재 준비 큐에 있는 프로세스들 중에서 수행시간이 가장 짧을 것으로 예상되는 프로세스를 먼저 처리하는 스케줄링 기법
  • 프로세스의 예상 수행 시간을 실행 입력 이전에 알아야 하므로 일괄처리 환경에서는 구현하기 쉽지만, 대화식 시스템에는 사용자와 컴퓨터간의 상호작용으로 인해 실행시간을 예측할 수 없기 때문에 사용되기 힘듦
  • 대기하는 프로세스의 수를 최소화할 수 있으므로 빠른 응답시간을 제공할 수 있지만, 수행시간이 긴 프로세스는 CPU를 할당 받지 못한 채 계속 기다릴 수 있는 단점도 있음

RR(Round Robin) 스케줄링

  • 프로세스가 도착한 순서대로 CPU가 할당되지만, CPU의 시간 할당량 또는 시간 간격에 의해 제한을 받는 스케줄링
  • 시간 할당량을 모든 프로세스에게 동일하게 주고, 그 시간 동안 완료되지 못한 프로세스는 준비 큐의 맨 뒤에 배치되고 준비 중인 다음 프로세스에게 중앙처리장치를 할당함

교착 상태(deadlock)

  • 한 프로세스가 컴퓨터 자원을 요청했지만 바로 할당받을 수 없으면, 그 프로세스는 자원을 얻기 위한 대기 상태로 들어감
  • 2개 이상의 프로세스가 대기 중인 프로세스들 중의 하나에 의해서만 발생할 수 있는 사건을 무작정 기다리는 상태
  • 교착 상태는 다음의 네 가지 조건이 동시에 만족할 때에 발생
    • 상호 배제 조건: 한 프로세스가 컴퓨터 자원을 사용 중이면 다른 프로세스는 그 컴퓨터 자원을 사용하지 못하고 해제될 때까지 반드시 기다려야 함
    • 대기 조건: 프로세스가 적어도 하나 이상의 컴퓨터 자원을 할당 받아 점유하고 있으면서 다른 프로세스가 할당 받은 자원을 요청하고 그것이 해제되기를 기다림
    • 비선점 조건: 할당된 컴퓨터 자원이 그 프로세스의 작업 종료 후 자발적으로만 해제될 수 있고 타의에 의해서는 해제되지 않음
    • 환형 대기 조건: 프로세스의 원형 사슬이 존재해서 이를 구성하는 각 프로세스가 사슬 내의 다음에 있는 프로세스가 요구하는 하나 이상의 자원을 가지고 있는 조건
  • 교착상태 방지(prevention)
    • 네 가지 교착상태 발생 조건 중에서 어느 한 가지 조건이라도 제거하면, 교착상태가 발생하지 않도록 할 수 있음
    • 요구 상태를 제한함으로써 교착상태를 방지하게 되면 컴퓨터 자원의 이용률시스템 성능이 저하되는 부작용이 생김
  • 교착상태 탐지(detection)
    • 교착상태에 빠진 프로세스의 존재를 검사하여 교착상태를 찾아내는 기법
    • 교착상태 탐지 알고리즘을 수행하는 것은 시스템 성능에 상당한 부담이 되기 떄문에, 교착상태 탐지 알고리즘은 적절하게 수행되어야 함
  • 교착상태 복구(recovery)
    • 교착상태를 제거하여 다른 프로세스가 컴퓨터 자원을 사용할 수 있도록 하는 방법
    • 교착상태 복구 방법 중 하나는 시스템 관리자에게 교착상태가 발생하였음을 알려주어 직접 수작업으로 처리하도록 하는 것임
    • 원형 대기를 없애기 위해 몇 개의 프로세스들을 중지시키거나 교착상태에 있는 하나 이상의 프로세스들로부터 몇 개의 자원을 반납하게 하는 것

장치 관리

시스템의 키보드, 마우스, 프린터, 네트워크 카드 등과 같은 모든 주변기기를 관리함

보조기억장치

  • 하드디스크와 같은 직접 접근 저장장치(Direct Access Storage Device)는 자기 디스크의 특정 위치에 있는 데이터를 읽거나 쓸 경우 임의적인 접근이 가능하기 때문에 입의 접근 저장장치라고도 함
  • 이 때 각 면마다 중심축으로부터 같은 거리에 있는 **트랙의 집합을 실린더(cylinder)**와 **트랙에서 정보를 읽고 쓰기 위한 단위인 섹터(sector)**로 나뉨
  • 디스크 팩의 구조: 일반적으로 디스크에 접근하는 데 걸리는 시간은 트랙 탐색 시간(seek time), 디스크 회전 지연 시간(rotational time, latency time), 데이터 전송 시간(transfer time)의 합으로 구성됨
    • 트랙 탐색 시간: 헤드를 움직여 원하는 트랙으로 이동시키는 데 필요한 시간을 의미하며, 기계적인 동작으로 이루어지기 때문에 가장 시간이 많이 걸리는 요소임
    • 디스크 회전 지연 시간: 헤드가 원하는 트랙에 위치한 후, 요구된 자료가 저장되어 있는 특정 섹터가 헤드 밑에 이를 때까지 디스크가 회전하는 데 필요한 시간
    • 데이터 전송 시간: 쓰기 동작일 경우에는 주기억장치에서 데이터가 보조기억장치에 저장되는 시간이며, 읽기 동작일 경우에는 보조기억장치로부터 데이터를 읽어 주기억장치로 이동하는 데 필요한 시간

디스크 스케줄링

  • FCFS(First-Come-First-Served) 스케줄링
    • 먼저 도착한 디스크 접근 요청이 가장 먼저 서비스를 받도록 하는 기법
    • 부하가 적은 시스템의 경우에는 비교적 좋은 방법이지만, 부하가 커질수록 장치를 포화시키기 쉽고 응답시간이 길어지는 단점이 있음
  • SSTF(Shortest Seek Time First) 스케줄링
    • 현재 디스크 헤드의 위치에서 가장 짧은 트랙 탐색 거리(또는 탐색 시간)를 가진 디스크 접근 요청을 먼저 처리하는 기법
    • FCFS에 비해 평균 응답시간은 짧지만, 중간 범위의 트랙에 비해 가장 안쪽 또는 바깥쪽 트랙이 서비스를 받지 못하는 경우가 발생할 확률이 높음
  • SCAN 스케줄링
    • SSTF 스케줄링의 서비스에 대한 불공평성 문제를 극복하기 위해 제안됨
    • 한쪽 방향에서 가장 짧은 탐색 거리의 디스크 접근 요청이 먼저 서비스를 받도록 하는 기법
    • 해당 방향의 마지막 실린더를 만나거나 기다리는 요구가 더 이상 없을 때에는 방향을 바꾸어 서비스를 계속함
    • 상대적으로 안쪽 트랙과 바깥쪽 트랙이 중앙 트랙보다 서비스를 많이 받게 되는 불공평성 문제를 갖고 있음
  • SLTF(Shortest Latency Time First) 스케줄링
    • 트랙 탐색 시간을 최적화하기 위한 SSTF 스케줄링과 유사하게 디스크의 회전 지연 시간을 최적화하기 위한 기법
    • 디스크 헤드가 특정 실린더에 도착하면 그 실린더 내의 여러 트랙에 대하여 많은 요구가 있을 가능성이 높기 때문에 모든 요구를 검사한 후 가장 짧은 회전 지연을 갖는 요구들에게 우선적으로 서비스 하는 기법

파일 관리

파일 관리 시스템(file management system)

파일의 생성, 삭제, 수정 접근 등을 제어하는 소프트웨어

  • 파일에 저장되어있는 데이터에 대한 접근 방식
    • 순차 파일(sequential file)
      • 논리적으로 연속된 레코드들은 물리적으로도 연속적인 위치에 저장됨
      • 한 레코드에 접근하기 위해서 그 레코드의 팡에 있는 레코드들을 먼저 접근해야 함
      • 물리적으로 순차적인 접근 특성을 가진 자기 테이프에 가장 많이 이용됨
    • 직접 파일(direct file)
      • 다른 레코드를 참조하지 않고 어떤 레코드에도 접근할 수 있음
      • 특정 레코드를 식별하기 위한 레코드 키와 보조기억장치의 저장 주소의 관계 정보를 알고 있어야 함
      • 파일을 구성할 때 레코드 키와 실제 저장 주소 사이의 관계를 찾아낼 수 있는 함수가 필요함
      • 접근의 효율성을 위해 순차 파일과는 다르게 자기 디스크와 같은 직접 접근 저장장치에 저장함
    • 인덱스 순차 파일(indexed sequential file)
      • 레코드 키 값에 따라 정렬된 레코드를 순차적으로 접근할 수 있는 순차 파일의 특징을 가지고 있음
      • 주어진 키 값에 따라 직접 접근할 수 있는 직접 파일의 특징을 갖는 구조의 파일 형태임
      • 순차적으로 정렬된 데이터 영역이 영역에 대해 포인터를 가지고 있는 인덱스로 구성됨
  • 파일의 저장, 참조, 공유 및 파일 보호 기법을 제공하는 파일 관리
  • 보조기억장치에 파일 저장을 위한 공간 할당과 관련된 보조기억장치 관리
  • 파일의 정보가 소실되지 않도록 보장하는 일에 관계된 파일 무결성 유지

디스크 공간 할당 방식

  • 연속 할당(contiguous allocation) 기법: 파일이 보조기억장치에 저장될 때 연속된 공간을 할당 받는 기법
  • 불연속 할당(noncontiguous allocation) 기법: 파일을 작은 단위로 나누고, 보조기억장치의 불연속적인 공간을 나누어 할당 받는 기법
    • 섹터 단위 불연속 할당 기법
      • 디스크 상에 하나의 파일은 여러 개의 섹터 단위로 나누어 저장되는데, 이 섹터들은 포인터를 통해서 연결된 하나의 리스트를 이루도록 저장하는 방식임
      • 파일 관련 정보를 저장하는 파일 디렉터리는 해당 파일의 시작 주소와 마지막 주소에 대한 포인터를 가짐
    • 블록 단위 불연속 할당 기법
      • 개별적인 섹터를 할당하는 대신에 연속된 섹터로 구성된 블록을 이용함
      • 보조기억장치의 보다 효율적인 이용과 실행 과정 중에 발생하는 추가 비용의 문제를 줄이기 위한 연속 할당과 불연속 할당 기법의 절충된 방법
      • 추가적인 공간 할당이 요구되면 현재 파일이 저장되어 있는 블록에서 가장 가까운 거리에 있는 블록을 선택하여 할당
      • 매번 파일에 접근할 때마다 해당 블록을 결정하고, 다시 해당 섹터를 결정
    •