티스토리 뷰
제어 프로그램
시스템 작동상태 감시, 스케줄링, 작업에 사용되는 데이터 관리, 인터럽트 처리 등의 역할을 수행하는 프로그램
- 감시 프로그램
- 프로그램의 실행과 시스템 전체의 작동 상태를 감시 감독함
- 작업제어 프로그램
- 어떤 업무를 처리 후 다른 업무로 이행을 자동으로 수행하기 위한 준비 및 그 처리에 대한 완료를 담당함
- 자료관리 프로그램
- 주기억과 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱싱 및 유지 보수 기능을 함
처리 프로그램
제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램
- 언어 번역 프로그램
- 원시 프로그램을 기계어 형태의 목적 프로그램으로 번역하는 프로그램
- 서비스 프로그램
- 컴퓨터가 효율적으로 사용할 수 있는 사용빈도가 높은 프로그램
- 문제 프로그램
- 해결을 위해 사용자가 작성한 프로그램
운영체제의 개요
- 정의
- 시스템의 자원들을 효율적으로 관리하며, 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 모임 (윈도우, 유닉스, 리눅스 등)
- 목적
- 처리 능력 및 신뢰도 향상, 사용 가능도 향상, 반환 시간 단축
- 성능 평가 기준
- 처리능력(Throughput) 일정 시간내에 시스템이 처리하는 일의 양
- 반환시간(Turn Around Time) 자업 의뢰한 시간부터 처리 완료까지 걸린 시간
- 사용 가능도(Availability) 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도(Reliability) 시스템이 주어진 문제를 정확하게 해결하는 정도
- 기능
- 프로세스, 기억장치, 입출력 장치, 파일 및 정보등의 자원 관리
- 자원의 스케줄링 기능 제공
- 편리한 인터페이스 제공
- 하드웨어와 네트워크 관리 제어
- 시스템 오류 검사 및 복구, 데이터 관리, 데이터 및 자원 공유
- 자원 보호 기능
- 가상 계산기 기능
운영체제 운용 기법
- 일괄 처리(Batch Processing)
- 초기의 컴퓨터 시스템에서 사용된 형태로 일정량 또는 일정 기간 동안 모은 데이터를 한 번에 처리하는 방식
- 시스템을 효율적으로 사용할 수 있음
- 응답 시간이 늦지만 하나의 작업에 모든 자원을 사용 하므로 CPU 유휴 시간이 줄어듦
- 급여 계산, 지불 계산, 연말 결산 등의 업무에서 사용됨
- 다중 프로그래밍
- 하나의 CPU와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
- 하나의 주기억장치에 2개 이상의 프로그램을 기억시킨 후 하나의 CPU와 대화하면서 동시에 처리함
- 시분할 (Time Sharing)
- 여러 사용자가 사용하는 시스템에서 각 사용자들의 프로그램을 번갈아 가며 처리해 줌으로 독립된 컴퓨터를 사용하는 느낌을 줌, Round Robin방식이라고도 함
- 하나의 CPU는 여러 개의 작업을 동시에 수행할 수 없어 CPU의 전체 사용시간을 작은 작업 시간량으로 나누어 그 시간량 동안만 번갈아가며 할당 한다.
- 다중 프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리가 가능함
- 다중 처리
- 여러개의 CPU와 하나의 주기억장치를 이용하여 여러개의 프로그램을 동시 처리하는 방식
- 하나의 CPU가 고장나도 다른 CPU가 처리할 수 있어 시스템의 신뢰성과 안정성이 높다.
- 실시간 처리
- 데이터 처리를 즉시 처리하여 결과를 산출하는 방식
- 제어 업무 등 시간에 제한을 두고 수행되어야 하는 작업에 사용
- 다중 모드 처리
- 일괄 처리, 다중 처리, 시분할, 실시간 처리 시스템을 한 시스템에서 모두 제공하는 방식
- 분산 처리(Distributed Processing)
- 여러 컴퓨터를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식
- 각 단말장치나 컴퓨터 시스템은 고유의 운영체제와 CPU, 메모리르 가지고 있음
운영체제 발달 과정
일괄 처리 > 다중 프로그래밍, 시분할, 다중처리, 실시간 처리 > 다중모드 > 분산 처리
매크로
반독되는 코드를 한번만 작성하여 필요시 호출하여 사용하는 것으로 매크로 정의 내에 또 다른 매크로를 정의할 수는 없다.
매크로 프로세서
원시 프로그램에 존재하는 매크로 호출 부분에 매크로 프로그램을 삽입하여 확장된 원시 프로그램을 생성하는 시스템 소프트웨어
매크로 프로세서 처리과정
매크로 정의 인식 > 매크로 정의 저장 > 매크로 호출 인식 > 매크로 확장과 인수 치환
링커
- 언어 번역 프로그램이 생성한 목적 프로그램들과 라이브러리, 또다른 실행 프로그램 등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어
- 연결 가능만 수행하는 로더의 한 형태로 링커에 의해 수행되는 작업을 링킹이라고 한다.
로더
컴퓨터 내부로 정보가 들어오거나 로드 모듈을 보조기억 부터 주기억장치에 적재하는 시스템 소프트웨어
- 기능
- 할당(Allocation) 실행 프로그램을 싱행하기 위해 기억장치 내에 옮겨놓을 공간을 확보하는 기능
- 연결(Linking) 부프로그램 호출 시 그 부 프로그램이 할당된 기억장소의 시작주소를 호출한 부분에 등록하여 연결하는 기능
- 재배치(Relocation) 저장된 프로그램이 사용하는 각 주소들의 할당된 기억장소의 실제 주소로 배치시키는 기능
- 적재(Loading) 실행 프로그램을 할당된 기억공간에 실제로 옮기는 기능
- 종류
- Compile And Go 로더 별도의 로더 없이 언어 번역 프로그램이 로더 기능까지 수행하는 방식
- Absolute Loader 목적 프로그램을 기억 장소에 적재시키는 기능만 수행하는 로더
- 직접 연결 로더 일반적인 기능의 로더로 4가지를 모두 수행하는 로더
- 동적 적재 로더 시행 시 필요한 일부부만을 적재하는 로더로 Load - On - Call이라고도 함
프로세스
- CPU에 의해 처리되는 사용자 프로그램이나 시스템 프로그램을 의미하며 프로세스는 각종 자원을 요구한다.
- 실행중인 프로그램, PCB를 가진 프로그램, 실기억장치에 저장된 프로그램
- 프로시저가 활동중인 것
- 프로세서가 할당하는 개체로서 디스패치가 가능한 단위
PCB(Process Control Block)
운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로 프로세스가 생성될 때마다 PCB가 생성되고, 완료되면 제거됨
- 저장되어있는 정보
- 프로세스 상태, 포인터, 프로세스 고유 식별자, 스케줄링 및 프로세스 우선순위, CPU레지스터 정보, 주기억장치 관리 정보, 입출력 상태 정보, 계정 정보
스레드
- 하나의 프로세스 내에서 병행성을 증대시키기 위한 메커니즘으로 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
- 독립적인 스케줄링의 최소 단위로서 독립적인 다중 수행이 가능함
- 하나의 스레드가 존재할 경우 단일 여러개일 경우 다중 스레드라고함
- 프로세스의 일부 특성을 갖고 있기에 경량 프로세스라고도 한다.
- 분류
- 사용자 수준의 스레드 사용자가 만든 라이브러리를 사용하여 운용함, 속도는 빠르지만 구현이 어려움
- 커널 수준의 스레드 운영체제 커널에 의해 스레드를 운용함, 속도는 느리지만 구현이 쉬움
- 장점
- 병행성을 증진시킬수 있음
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.
- 프로그램의 응답시간을 단축시킬 수 있다.
- 자원의 낭비가 줄어든다.
- 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.
프로세스의 주요 상태
- 준비 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
- 대기, 보류. 블록 입출력 요구가 발생되어 현재 실행중인 프로세스가 중단되고 완료될 때까지 대기하고 있는 상태
프로세스 상태 전이 관련 용어
- Dispatch 준비상태에 있는 프로세스 중 하나가 할당받아 실행 상태로 전이되는 과정
- Wake-Up 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정
스케줄링
프로세스가 생성 실행될 때 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 목적
- 처리율 , CPU 이용률 증가
- 공정성, 우선순위 제도, 균형 있는 자원의 사용, 무한 연기 회피
- 오버헤드, 응답 시간, 반환 시간, 대기 시간 최소화
- 문맥 교환
- 현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고, 앞으로 실행될 프로세스의 상태정보를 설정한 후 CPU를 할당하여 실행되도록 하는 것
- 종류
- 선점 CPU가 실행 중일때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용하는 기법
- Non-Preemptive 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 기법
비선점 스케줄링의 종류
- FCFS (First - Come First - Service)
- 준비상태 큐에 도착한 수선에 따라 차례로 CPU를 할당하는 기법
- SJF(Shortest Job First)
- 실행시간이 가장 짧은 프로세스에 먼저 CPU를 할당하는 기법
- HRN(Hightest Response - ratio Next)
- 실행 시간이 긴 프로세스에 불리한 SJF 기법을 보완하기 위한 것으로, 대기 시간과 서비스시간을 이용하는 기법 (우선순위 = (대기 시간+서비스 시간)/서비스 시간)
선점 스케줄링의 종류
- SRT(Shortest Remaing Time)
- 비선점 기법인 SJF 알고리즘을 선점 형태로 변형한 기법으로 실행중인 프로세스의 남은 시간과 준비상태 큐에 새로 온 프로세스의 실행 시간을 비교하여 짧은 실행 기간을 요구하는 프로세스에게 CPU를 할당하는 기법
- RR(Round Robin)
- 시분할 시스템을 위해 고안된 방식으로 FCFS알고리즘을 선점 형태로 변형한 기법으로 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받지만 각 프로세스는 할당된 시간 동안만 실행한 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치됨
- 다단계 큐(Multi level Queue)
- 프로세스를 그룹으로 분류할 수 있을 경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법
- 다단계 피드백 큐(Multi level Feedback Queue)
- 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다단계 큐 기법을 준비상태 큐 사이를 이동할 수 있도록 개선한 기법
임계구역(Critical Section)
- 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유하는 데이터 및 자원에 대하여 어느 한 시점에서 하나의 프로세스만 자원 또는 데이터를 사용하도로 지정된 공유 자원을 의미한다.
- 하나의 프로세스만 접근할 수 있고 해당 프로세스가 자원을 반납하면 다른 프로세스가 사용할 수 있다.
- 특정 프로세스가 독점할 수 없다.
- 여러 프로세스가 사용해야 해서 임계 구역 내의 작업은 신속하게 이루어져야한다.
- 이계 구역에 지입을 요청하면 일정 시간 내에 진입을 허락해야한다.
상호 배제(Mutual Exclusion)
- 프로세스가 공유 자원을 사용할 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법
- 여러 프로세스가 동시 사용을 하려고 할때 번갈아가며 공유 자원을 사용하도록 하는 것으로 임계 구역을 유지하는 기법
- 임계 구역 내에서는 인터럽트, 교착상태, 무한박복이 발생되지 않도록 해야한다.
상호 배제 구현 기법
- 소프트웨어적 구현 방법
- 2개의 프로세스 기준 데커, 피터슨 알고리즘
- 그 이상 프로세스 기준 Lamport의 빵집 알고리즘
- 하드웨어적 구현 방법
- Test & Set 기법, Swap 명령어 기법
세마포어(Semaphore)
- 각 프로세스에 제어 신호를 전달하여 순서대로 작업하는 기법
- E.J.Dijkstra가 제안 했으며 P와 V라는 2개의 연산에 의해 동기화를 유지하고 상호 배제의 원리를 보장한다.
- 여러 개의 프로세스가 동시에 값을 수정하지 못한다.
- S는 P와 V연산으로만 접근 가능한 세마포어 변수로 공유자원의 개수를 나타내고 1과 0 혹은 0과 양의 값을 가질 수 있다.
- P연산 자원을 사용하려는 프로세스들의 진입 여부를 자원개수(S)를 통해 결정하는 것으로 자원 개수를 감소시켜 (S=S-1) 자원이 점유되었음을 알림
- V연산 대기중인 프로세스를 깨우는 신호로 자원의 개수를 증가시켜(S=S+1) 자원이 반납되었음을 알림
모니터
- 동기화를 구현하기 위한 특수 기법으로 공유 자원을 프로세스에 할당하는 데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성됨
- 정보 추상화와 정보 은폐 개념을 기초로 하며 병행성 구조로 이루어짐
- 프로세스는 모니터의 진입부를 호출해야만 공유 자원을 사용할 수 있다.
- 외부 프로시저는 직접 접근할 수 없고 모니터의 경계에서 상호 배제가 시행된다.
- 한순간에 하나의 프로세스만 진입하여 자원을 사용할 수 있다.
예방(Prevention)기법
- 교착 상태가 발생되지 않도록 사전에 시스템을 제어하는 방법
- 교착 상태 발생 시 제거 함으로써 수행되며 일반적으로 자원의 낭비가 가장심함
- 상호 배제 부정 한번에 여러 프로세서가 공유 자원을 사용할 수 있도록 하는 것이지만 실제로 구현하지 않음
- 점유 및 대기 부정 실행 전 필요한 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 함
- 비선점 부정 자원을 점유중인 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고 유구한 자원을 사용하기 위해 기다리게 함
- 환형 대기 부정 자원을 선형 순서로 분류 후 고유 번호를 부여하고 각 프로세스는 점유한 자원의 고유 번호 앞이나 뒤 한쪽 방향으로만 자원을 요구하도록 한 것
회피(Avoidance) 기법
교착 상태가 발생할 가능성을 배제하지 않고 발생 시 피해가는 방법으로 주로 은행원 알고리즘이 사용됨
- 은행원 알고리즘
- Dijkstra가 제안한 것으로 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는데서 유래
- 교착 상태가 발생하지 않을 경우 안전 상태, 교착 상태 발생 시 불안전 상태라고 함
발견 기법
교착 상태에 있는 프로세스와 자원을 발견하는 것으로 자원 할당 그래프 등을 사용함
회복 기법
교착 상태가 발생한 프로세스를 종료하거나 할단된 자원을 선점하여 프로세스나 자원을 회복하는 것
반입(Fetch)전략
보조기억장치에 보관 중인 것을 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 요구 반입 참조를 요구할 떄 적재하는 방법
- 예상 반입 참조될 프로그램이나 데이터를 미리 예상하여 적재하는방법
배치(Placement)전략
새로 반입된 프로그램이나 데이터를 주기억장치 어디에 위치시킬 것인지를 결정하는 전략
- First Fit 프로그램이나 데이터가 들어갈 수 있는 크기의 영역 중에 첫 번째 영역에 넣는 방법
- Best Fit 프로그램이나 데이터가 들어갈 수 있는 크기의 영역 중에 단편화를 가장 작게 남기는 영역에 넣는 방법
- Worst Fit 프로그램이나 데이터가 들어갈 수 있는 크기의 영역 중에 단편화를 가장 크게 남기는 영역에 넣는 방법
교체(Replacement)전략
주 기억장치의 모든 영역이 사용중인 상태에서 가상 기억장치의 페이지를 주기억장치에 배치 할 때 주 기억장치의 어느 영역을 교체할 것인지를 결정하는 전략으로, FIFO, OPT, LRU, LFU, NUR, SCR 등이 있다.
단편화
분할된 주기억장치에 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남는 빈 공간 조각을 의미한다.
- 내부 단편화 분할된 영역에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
- 외부 단편화 분활된 영역보다 프로그램이 커 할당될 수 없어 사용되지 않고 남아 있는 빈 공간
단편화 해결 방법
- 통합(Coalescring)기법 주 기억장치 내에 인접해 있는 단펴화된 공간을 하나의 공간으로 통합하는 작업
- 압축(Compaction)기법 주 기억장치 내에 분산되어 있는 단펴화된 빈공간을 결합하여 하나의 가용공간을 만드는 작업
가상 기억장치
- 주기억장치보다 큰 용량을 실행하기 위해 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 가상 기억장치에 저장된 프로그램을 실행하려면 가상 기억장치의 주소를 주 기억장치의 주소로 바꾸는 매핑 작업이 필요하다.
- 블록 단위로 나누어 사용하므로 연속 할당 방식에 발생하는 단편화를 해결할 수 있다.
- 기억장치와 다중 프로그래밍의 효율을 높일 수 있다.
- 운영체제 설계가 복잡해지고 주소 변환을 위한 테이블을 사용하므로 기억장소를 낭비할 수 있다.
가상 기억장치 구현 기법
- 페이징 기법
- 가상 기억장치에 보관된 프로그램과 주 기억장치의 영역을 동일한 영역으로 나눈 후 적재시켜 실행하는 기법
- 외부 단편하는 발생하지 않으나 내부 단편화는 발생할 수 있음
- 페이지 맵 테이블이 필요하다.
- 세그먼테이션 기법
- 가상 기억장치에 보관된 프로그램을 다양한 크기의 논리적 단위로 나눈 후 주기억장치에 적재시켜 실행하는 기법
- 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트라고 각 세그먼트는 고유한 이름과 크기를 갖고 있음
- 다른 세그먼트에 할당된 영역은 침범할 수 없으며 이를 위해 기억장치 보호키가 필요하다.
- 내부 단편화는 발생되지 않으나 외부 단편하는 발생할 수 있음
- 세그먼트 맵 테이블이 필요함
페이지 교체 알고리즘
주 기억장치의 모든 페이지 프레임이 사용중일 때 어떤 페이지 프레임을 선택하여 교체할지 결정하는 기법
- OPT(OPTimal Replacement)
- 앞으로 오랫동안 사용하지 않을 페이지를 교체하는 기법이지만 미리 예측해야 하므로 실현 가능성이 희박함
- FIFO(First In First Out)
- 가장 먼저 들어온 페이지를 교체하는 기법
- 이해하기 쉽고 설계가 간단하다.
- 페이지 프레임 수를 증가시켰는데도 불구하고 페이지 부재가 더 많이 일어나는 벨레이디의 모순 현상이 발생함
- LRU(Least Recently Used)
- 최근 가장 사용하지 않은 페이지를 교체하는 기법
- 각 페이지에 계수기나 스택을 두어 현 시점에서 가장 오래전에 사용된 페이지를 교체함
- LFU(Least Frequently Used)
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
- 초반에 많이 실행된 페이지가 후반에 사용되지 않을 경우에도 프레임을 계속 차지할 수 있음
- NUR(Not Used Recently)
- 최근에 사용안한 페이지를 교체하는 기법
- 사용 여부를 위해 페이지마다 참조 비트와 변형 비트가 사용된다.
- 비트의 값에 따라 교체될 페이지의 순서가 결정됨
- SCR(Second Chance Replacement)
- 오랫동안 있던 페이지 중 사용빈도가 많은 페이지의 교체를 방지하기 위한 FIFO 기법의 단점을 보완한 기법
페이지 크기
- 크기가 적을 경우
- 단편화가 감소되고 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듦
- 수행에 필요한 내용만 주 기억장치에 적재할 수 있기 때문에 기억장치 효율이 높아짐
- 페이지 맵 테이블의 크기가 커져 매핑속도가 늦어진다.
- 디스크 접근 수가 증가하여 입출력 시간이 늘어난다.
- 크기가 클 경우
- 단편화가 증가하고 한 개의 페이지를 주 기억장치로 이동하는 시간이 늘어남
- 프로그램 수행에 불필요한 내용까지도 주기억장치에 적재될 수 있음
- 페이지 맵 테이블의 크기가 작아져 매핑 속도가 빨라짐
- 디스크 접근 수가 감소하여 입출력의 효율이 증가함
국부성(Locality)화
- 실행중인 프로세스가 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조한는 성질이 있따는 이론으로 Denning에 의해 증명됨
- 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 됨
- 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법중 하나로 가상 기억장치 관리의 이론적인 근거가 된다.
- 캐시 메모리 시스템의 이론적 근거이다.
국부성 종류
- 시간 구역성(Temporal Locality)
- 프로세스가 실행되면서 하나의 페이지를 일정 시간동안 집중적으로 접근하는 현상
- 시간 구역성이 이루어지는 기억장소 (Loop, Stack, Sub Routine, Totaling에 사용되는 변수, Counting)
- 공간 구역성(Spatial Locality)
- 프로세스 실행 시 일정 위치의 페이지를 집중적으로 접근하는 현상
- 공간 구역성이 이루어지는 기억장소 (배열 순회, 순차적 코드의 실행, 프로그래머 관련된 변수들을 서로 근처에 선언하는 경우)
Working Set
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다.
- Denning이 제안한 프로그램의 움직임에 대한 모델로 구역성 특징을 이용한다.
- 자주 참조되는 워킹셋을 주 기억장치에 상주시킴으로 페이지 부재 및 교체 현상이 줄어듬
- 시간에 따라 자주 참조하는 페이지들의 집합이 변해 워킹 셋도 시간에 따라 바뀌게 된다.
Thrashing
- 프로세스 처리 시간보다 페이지 교체 시간이 더 많아지는 현상
- 다중 프로그래밍의 정도가 커지면 스래싱이 나타나고 CPU의 이용률을 급격히 감소시킨다.
- CPU 이용률을 높이고 스래싱 현상을 방지하는 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지
- 부족한 자원 증설
- 일부 프로세스 중단
- 페이지 부재 빈도 조절
- 워크 셋 유지
- 적정 프레임 수 제공
디스크 스케줄링
디스크에 있는 데이터를 액세스하기 위해 디스크 헤드가 움직이는 경로를 결정하는 기법
- 목적
- 처치량 최대화
- 평균 응답 시간 및 응답 시간 편차의 최소화
- FCFS(First Come First Service)
- 가장 간단한 스케줄링으로 디스크 대기 큐에 먼저 들어온 트랙에 대한 요청을 먼저 서비스하는 기법
- SSTF(Shortest Seek Time First)
- 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 처리하는 기법
- 안쪽이나 바깥쪽 트랙이 가운데 트랙보다 서비스를 덜 받는 경향이 있으며 멀리 떨어진 부분은 기아 상태가 발생할 수 있음
- 처리량이 많은 일괄 처리 시스템에 유용함
- SCAN
- SSTF가 갖는 탐색 시간의 편차를 해소하기 위한 기법
- 현재 헤드 위치에서 진행 방향이 결정되면 탐색 거리가 짧은 순서에따라 그 방향으로 모두 서비스하고 끝에서 역방향으로 서비스함
- Circular SCAN
- 항상 바깥에서 안쪽으로 움직이면서 가장 짧은 탐색 거리를 서비스하는 기법
- 안 쪽으로 끝까지 이동 후 안쪽에 더 이상 요청이 없으면 가장 바깥쪽 끝으로 이동한 후 다시 안쪽으로 이동하면서 요청을 서비스함
- N-Step SCAN
- SCAN 기법의 무한 대기 발생 가능성을 제거한 것으로 어떤 방향으로 진행이 시작될 떄 대기중이던 요청들만 서비스하고 진행 도중 도착한 요청들은 한데 모아 다음 반대 방향 진행 때 서비스하는 기법
- Eschenbach
- 부하가 큰 항공 예약 시스템을 위한 개발
- 탐색 시간과 회전 지연 시간을 최적화하기 위한 최초의 기법
- 헤드는 C-SCAN처럼 움직이며 모든 실린더는 실린더에 요청이 없어도 전체 트랙이 한 바퀴 돌 동안 서비스를 받음
- SLTF(Shortest Latency Time First)
- Sector Queuing이라고도 하며 회전 시간의 최적화를 위해 구현된 기법
- 디스크 대기 큐에 있는 여러 요청을 섹터 위치에 따라 재 정렬하고 가까운 섹터를 먼저 서비스함
- 헤드의 이동이 거의 없으며 고정 헤드 장치인 드럼과 같은 장치에서 사용됨
- LOOK
- SCAN 기법을 기초로 사용되며 진행 방향의 마지막 요청을 서비스한 후 그 방향의 끝으로 이동하는 것이 아니라 역방향으로 진행하는 기법
파일
- 레코드의 집합체를 의미한다.
- 프로그램 구성의 기본 다위이며 보조 기억장치에 저장됨
- 각 파일마다 이름, 위치, 크기등 여러 속성을 가지고 있음
파일 시스템
- 보조 기억장치에서의 파일을 총괄하는 파일 관리 기술
- 사용자와 보조 기억장치 사이에서 인터페이스를 제공
- 적절한 제어 방식을 통해 타인의 파일을 공동으로 사용할 수 있도록한다.
- 예비와 복구등의 기능을 제공한다.
- 정보를 암호화하고 해동할 수 있다.
파일 디스크립터
- 시스템이 필요로 하는 파일에 대한 정보를 갖고 있는 제어 블록이다.
- 보통 보조기억장치 내에 저장되었다가 열때 주기억장치로 옮겨진다.
- 파일마다 독립적으로 존재하며 시스템에 따라 다른 구조를 가질 수 있다.
- 파일 시스템이 관리하므로 사용자가 직접 참조 불가
- 파일 디스크립터가 가진 정보
- 파일 ID번호, 이름, 크기, 구조, 유형
- 보조 기억장치에서의 파일 위치, 유형
- 액세스 제어 정보 및 횟수
- 생성 및 제거 날짜와 시간
- 최종 수정 날짜 및 시간
순차 파일(Sequential File)
- 레코드를 논리적 처리 순서에 따라 연속된 물리적 저장공간에 기록하는 것
- 변동 사항이 크지않고 기간별로 일괄 처리를 주로하는 경우에 적합하고 가능한 자기 테이프에서 사용한다.
- 장점 파일의 구성용이, 기억공간의 이용 효율, 처리속도, 처리비용, 어떤 기억 매체든 실현 가능
- 단점 새 레코드를 삽입하거나 삭제하는 경우 파일 전체를 복사한 후 수행해야 하므로 시간이 많이 걸림, 검색 효율이 낮고, 접근 및 응답 시간이 느림
색인 순차 파일
- 순차 파일과 직접 파일에서 지원하는 편성 방법이 결홥된 형태
- 각 레코들의 키 값을 논리적으로 저장하고 시스템은 레코드의 실제 주소가 저장된 색인을 관리한다.
- 레코드 참조 시 색인을 탐색한 후 색인이 가리키는 포인터를 사용하여 직접 참조
- 기본, 색인, 오버플로 영역으로 구성되고 색인 영역은 트랙, 실린더, 마스터 색인 영역으로 분류됨
- 장점 순차, 임의 처리가 모두 가능 효율적인 검색 가능, 삭제, 삽입, 갱신이 용이함
- 단점 색인, 오버플로 처리를 위한 추가 기억공간이 필요 접근 시간이 직접 파일보다 느림
직접 파일
- 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것
- 레코드에 키가 할당되며 해싱 함수를 이용하여 키에 대한 보조 기억장치의 물리적 상대 레코드 주소를 계산한 후 해당하는 주소에 레코드를 저장
- 레코드는 해싱 함수에 의해 계산된 물리적 주소를 통해 직접 접근이 가능
- 임의 접근이 가능한 자기 디스크나 자기 드럼을 사용
- 장점 각 레코드에 직접 접근하거나 기록, 접근 시간, 레코드 삽입, 갱신, 삭제가 용이함
- 단점 레코드 주소 변환 과정이 필요하고 이로인한 시간 소요, 기억공간의 효율이 저하, 물리적 구조에 대한 지식이 필요
디렉터리의 구조
- 디스크에 존재하는 파일에 대한 여러 정보를 가지고 있는 특수한 형태의 파일이다.
- 1단계
- 가장 간단하고 모든 파일이 하나의 디렉터리 내에 위치하여 관리되는 구조
- 모든 파일이 유일한 이름을 가져야 함
- 같은 디렉토리 내에 있어 이해가 용이하지만 파일 수나 사용자 수가 증가하면 관리가 복잡해짐
- 2단계
- 중앙에 MFD가 있고 그 아래 사용자별로 UFD가 있는 2계층 구조
- MFD는 사용자 파일 디렉터리를 관리하고 UFD는 사용자별 파일을 관리함
- 서로 다른 디렉터리에서는 돌일한 이름으로 파일을 사용할 수 있음
- 트리
- 하나의 루트 디렉터리와 여러 종속 디렉터리로 구성된 구조
- 우리가 사용하는 운영체제에서 사용되는 디렉터리 구조
- 디렉터리 생성과 파괴가 용이하고 동일한 이름의 파일이나 디렉터리를 생성할 수 있다.
- 포인터를 이용하여 디렉터리를 탐색하며 절대 경로명과 상대 경로명을 사용함
- 비순환 그래프
- 하위 (파일, 디렉터리)를 공동으로 사용할 수 잇는 껐으로 싸이클이 허용되지 않는 구조
- 하나의 파일이나 디렉터리가 여러 개의 경로 이름을 가질 수 있음
- 공유된 파일 삭제 시 Dangling Pointer가 발생할 수 있음
- 일반적인 그래프
- 트리 구조에 링크를 첨가시켜 순환을 허용한 그래프 구조
- (디렉터리, 파일) 공유에 완전한 융통성이 있음
- 불필요 파일을 제거하여 사용 공간을 늘리기 위해서는 참조 계수기가 필요하다.
자원 보호 기법
컴퓨터 시스템 자원에 불법적으로 접근하는 것을 제어하고 자원의 물리적인 손상을 예방하는 것
자원 보호 기법 종류
- 접근 제어 행렬
- 일반적인 모델로 객체에 대한 접근 권한을 행렬로써 표시한 기법
- 전역 테이블
- 가장 단순한 구현방법으로 영역, 객체, 접근 권한의 집합을 목록 형태로 구성한 기법
- 접근 제어 리스트
- 접근 제어 행렬에 있는 각 열 객체 중심으로 접근 리스트를 구성한 기법
- 권한 리스트
- 접근 제어 행렬에 있는 각 행 영역을 중심으로 구성한 것으로서 각 사용자에 대한 자격들로 구성되며 자격은 객체와 그 객체에 허용된 연산 리스트임
보안 요건
- Confidentiality
- 정보와 자원을 인가된 사용자에게만 접근이 허용되며 정보 전송중 노출되더라도 데이터를 읽을 수 없음
- Integrity
- 인가된 사용자만 정보 수정이 가능
- Availability
- 인가된 사용자는 언제든 사용 가능
- Authentication
- 인가된 사용자인지 확인하는 모든 행위
- NonRepudiation
- 데이터 송 수신 사실을 부인할 수 없도록 송 수신 증거를 제공함
파일 보호 기법
파일에 대한 일방적인 접근과 손상을 방지하기 위한 기법
- Naming
- 접근할 파일 이름을 모르는 사용자를 접근 대상에서 제외시키는 기법
- Password
- 암호를 모르는 사용자를 접근 대상에서 제외시키는 기법
- 접근 제어
- 사용자에 따라 공유 데이터에 접근할 수 있는 권한을 제한하는 방법
보안 유지 기법
- 외부 보안
- 사설 보안 천재지변이나 외부 침입자로부터의 보안
- 운용 보안 관리 및 경영자들의 정책과 통제에 의해 이루어지는 보안
- 사용자 인터페이스 보안
- 운영체제가 사용자의 신원을 확인한 후 사용할 수 있게 하는 보안 기법
- 내부 보안
- 내장된 보안 기능을 이용하여 시스템 신뢰성을 유지하고 보안 문제를 해결하는 기법
프로세서 연결 방식
- 시분할 및 공유 버스
- 각종 장치들을 버스라는 단일 경로로 연결하는 방식
- 장치 연결이 단순하고 경제적 융통성이 있고 장치 추가에 용이함
- 한 시점에 하나만 전송이 가능
- 크로스바 교환 행렬
- 시분할 방식에서 버스의 수를 기억장치 수 만큼 증가시켜 연결한 방식
- 각 기억장치마다 다른 경로를 사용할 수 있고 두 개의 다른 기억장치를 동시에 참조 가능
- 장치의 연결이 복잡해진다.
- 하이퍼 큐브
- 다수의 프로세서들을 연결하는 방식으로 비교적 경제적 방식임, 확장성이 좋음
- 하나의 프로세서에 연결되는 다른 프로세서의 수가 n개일 경우 프로세서는 총 2^n개가 필요
- 다중 포트 기억장치
- 시분할 방식과 크로스 방식의 혼합한 형태의 방식
- 많은 수의 프로세서를 쉽게 연결할 수 있지만 전송 시간이 비교적 느리다.
다중 처리기의 운영체제 구조
- 주/종 처리기
- 하나의 주 프로세서로 지정하고 나머지는 종 프로세서로 지정하는 비대칭 구조
- 주 프로세서 고장 시 전체 시스템이 다운된다.
- 종 프로세서는 연산만 담당한다.
- 분리 실행 처리기
- 주/종 처리기의 비대치성을 보완하여 각 프로세서가 독자적인 운영체제를 가지도록 구성한 구조
- 각 프로세서에서 발생한 인터럽트는 해당 프로세서에서 해결
- 독자적으로 운영체제를 가지고 있어 한 프로세서가 고장나더라도 전체 시스템이 다운되지 않음
- 대칭적 처리기
- 여러 프로세서들이 운영체제를 공유하여 수행하는 구조
- 가장 복잡한 구조를 가졌으나 가장 강력한 시스템
- 여러 프로세서가 동시 수행될 수 있고 정보를 통일적이고 일관성있게 운영함
- 프로세서의 수를 늘린다고 시스템 효율이 좋아지지는 않음
- 프로세서 간의 통신은 공유 메모리를 이용한다.
프로세서의 결합도
- Loosely Coupled
- 각 프로세서마다 독립된 메모리를 가진 분산 처리 시스템이다.
- 둘 이상의 독립된 컴퓨터 시스템을 통신망을 통하여 연결한 시스템
- 각 시스템마다 독자적인 운영체제를 가지고 있어 CPU간의 결합력이 약함
- 통신은 메시지 전달이나 원격 프로시저 호출을 통해서 이루어짐
- Tightly Coupled
- 동일 운영체제하에 여러 개의 프로세서가 하나의 메모리를 공유하는 다중 처리 시스템
- 하나의 운영체제가 모든 프로세서와 시스템 하드웨어를 제어함
- 통신은 공유 메모리를 통해서 이루어진다.
- 하나의 메모리를 사용하므로 CPU간의 결합력이 강함
- 공유 메모리를 차지하려면 프로세서 간의 경쟁을 최소화해야 함
분산 처리 시스템의 투명성
Transparency
분산 처리 운영체제에서 구체적인 시스템 환경을 사용자가 알수 없도록 하며 정보가 없어도 원하는 작업을 수행할 수 있도록 지원하는 개념
부산 처리 시스템의 투명성의 종류
- Location
- 위치를 몰라도 자원에 접근할 수 있도록 함
- Migration
- 사용자나 응용 프로그램의 동작에 영향을 받지 않고 시스템 내에 있는 자원을 이동할 수 있도록 함
- Replication
- 자원 복제를 사용자에 통지할 필요 없이 자유로이 수행할 수 있음
- Concurrency
- 위치를 몰라도 다중 사용자들이 자원을 병행 처리하고 공유할 수 있도록 함
- Access
- 각 프로세서의 로그인과 같은 동작을 사용하여 지역이나 원격에 접근할 수 있도록 함
- Performance
- 여러 부하에 대해 성능을 증가시키기 위하여 시스템을 재구성할 수 있도록 함
- Scaling
- 시스템이나 응용 프로그램들이 구조나 알고리즘에 대한 변경 없이 규모에 맞추어 확잘할 수 있도록 함
- Failure
- 하드웨어나 소프트웨어 구성 요소의 고장에도 불구하고 그들의 작업을 완료할 수 있도록 함
위상에 따른 분산 처리 시스템의 분류
- Fully Connection
- 모든 사이트들과 직접 연결된 구조
- 하나의 링크가 고장나도 다른 링크는 이용가능
- 사이트 수가 N개이면 링크수는 (N(N-1))/2
- 기본 비용으 많이 들고 통신비용은 적게 듦
- 사이트 간의 메시지 전달이 매우 빠르다.
- Partially Connection
- 일부 사이트들 간에만 직접 연결된 형태로 연결 안된 사이트는 연결된 사이트를 통해 통신하는 구조
- 기본 비용은 완전 연결보다 적게 들고 통신 비용은 연결형보다 많이 듦
- 완전 연결형보다 신뢰성이 낮다.
- Tree / Hierachy
- 분산 처리 시스템의 가장 대표적 형태 사이트들이 트리형 연결 구조
- 기본 비용은 연결형보다 적게 들고 통신 비용은 트리의 깊이에 비례함
- 부모 사이트를 통해 통신이 되어 부모가 고장나면 자식도 통신 불가
- Star
- 하나의 중앙사이트에 직접 연결되어있고 다른 사이트와는 연결되어 있지 않은 구조
- 기본 비용은 사이트 수에 비례하고 통신 비용은 적게 듦
- 중앙 사이트만 고장나지 않으면 다른 사이트에 영향은 없음
- Ring
- 각 사이트가 인접하는 다른 두 사이트만 직접 연결된 구조
- 정보는 단반향 또는 양방향으로 전달될 수 있음
- 기본 비용은 사이트 수에 비례하고 목적 사이트에 데이터를 전달하기 위해 링을 순환할 경우 통신 비용이 증가
- Multi Access Bus Connection
- 모든 사이트들이 공유 버스에 연결된 구조
- 기본 비용은 사이트 수에 비례하고 통신 비용은 일반적으로 저렴하다.
- 사이트 고장은 다른 사이트에 영향은 없지만 버스 고장 시 전체 시스템에 영향을 준다.
- 사이트의 추가와 삭제가 용이하다.
유닉스의 특징
- 시분할 시스템을 위해 설계된 대화식 운영체제
- 소스가 공개된 개방형 시스템
- C언어로 작성되어있고 이식성이 높으며 장치, 프로세스 간에 호환성이 높다.
- 크기가 작고 이해하기 쉬우며 다중 사용자, 다중 작업을 지원한다.
- 통신망 관리용 운영체제로 적합하다.
- 트리 구조의 파일 시스템으로 전문적인 프로그램 개발에 용이
- 백그라운드에서 작업 수행이 가능하고 여러 개의 작업을 병행 처리할 수 있다.
유닉스 시스템의 구성
- Kernel
- 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할을 함
- 부팅 시 주기억장치에 적재되어 상주하면서 실행됨
- Shell
- 명령어를 인식하여 수행하는 명령어 해석기
- 시스템 사용자 간의 인터페이스를 담당
- 주 기억장치에 상주하지 않고 명령어가 포함된 파일형태로 존재
- Utility
- 일반 사용자가 작성한 프로그램을 처리하는데 사용함
- DOS에서의 외부 명령어에 해당 함
유닉스 파일 시스템의 구조
- 부트 블록
- 부팅 시 필요한 코드를 저장하고 있는 블록
- 슈퍼 블록
- 전체 파일 시스템에 대한 정보를 저장하고 있는 블록
- I-node 블록
- 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록
- 데이터 블록
- 디렉터리별로 디렉터리 엔트리와 실제 파일에 대한 데이터가 저장된 블록
유닉스 주요 명령어
- fork 새로운 프로세스 생성
- exec 새로운 프로세스 수행
- & 백그라운드 처리를 위해 명령의 끝에 입력
- wait 상위 프로세스가 하위 프로세스 종료등의 이벤트를 기다림
- exit 프로세스 수행 종료
- cat 내용을 화면에 표시
- chmod 파일의 사용 권한 지정
- chown 소유자 변경
- mount 파일 시스템을 마운팅
- mkls 파일 시스템 생성
- chidr 현재 사용할 디렉터리 위치 변경
- fsck 파일 시스템을 검사 및 보수하여 무결성을 검사
- rmdir 디렉터리 삭제
- ls 현재 디렉터리 파일 목록 확인
- getpid 자신의 프로세스 아이디를 얻음
- getppid 부모 프로세스 아이디를 얻음
- cp 파일복사
- mv 파일 이동 및 이름 변경
- rm 파일 삭제
- finger 사용자 정보를 표시함
'IT' 카테고리의 다른 글
(정보처리기사 필기) 5과목 데이터 통신 요약정리 (0) | 2017.05.23 |
---|---|
(정보처리기사 필기) 4과목 소프트웨어 공학 요약정리 (1) | 2017.05.20 |
(정보처리기사 필기) 2과목 전자계산기 요약정리 (4) | 2017.05.04 |
(정보처리기사 필기) 1과목 데이터베이스 요약정리 (6) | 2017.05.01 |
아이피타임 ipDisk를 이용한 파일공유 (0) | 2017.04.30 |