운영체제 정리
시스템 소프트웨어
- 시스템 전체를 작동시키는 프로그램
- 프로그램을 주기억 장치에 적재시키거나 인터럽트 관리, 장치 관리, 언어번역 등의 기능 담당
- 대표적으로 운영체제가 있음
- 번역프로그램, 매크로 프로세서, 링커, 라이브러리, 정렬/합병프로그램, 로더 등
구성
- 제어프로그램
- 감시프로그램
- 작업 제어 프로그램 : Jbo Scheduler, Master Scheduler
- 자료 관리 프로그램
- 처리프로그램
- 언어 번역기 : 어셈블러, 컴파일러, 인터프리터
- 서비스 프로그램 : 연결 편집기, 정렬/합병 프로그램, 라이브러리안, 유틸리티
- 문제 프로그램
제어 프로그램
- Control Program
- 시스템 전체의 작동 상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터의 관리 등의 역할 수행
- 깜짝데이트(감시, 작업, 데이터)
감시 프로그램
- Supervisor Program
- 제어 프로그램 중 가장 중요함
- 각종 프로그램 실행과 시스템 전체의 작동 상태를 감시 감독
작업 제어 프로그램
- Job Control Program
- 다른 업무의 이행을 자동으로 수행하기 위해 준비
- 처리에 대한 완료를 담당하는 프로그램
- 작업의 연속 처리를 위한 스케쥴 및 시스템 자원 할당
- Job Scheduler : 다음 작업을 준비시키는 역할
- Master Scheduler : 시스템과 운영자 사이에서 정보를 주고 받을 수 있도록 중개자 역할 (CMD)
자료 관리 프로그램
- Data Management Program
- 주기억장치와 보조기억장치 사이의 데이터 전송과 보조기억장치의 자료 갱신 및 유지보수 기능을 수행
처리 프로그램
- Processing Program
언어 번역 프로그램
- 원시 프로그램을 기계어 형태의 목적 프로그램으로 번역하는 프로그램
- 어셈블러, 컴파일러, 인터프리터
서비스 프로그램
- 연결 편집기 : 프로그램을 연결하여 실행 가능한 프로그램을 만드는 프로그램 (링커)
- 정렬/합병 프로그램 : 데이터를 일정한 기준으로 정렬하거나 정렬된 파일을 합치는 프로그램
- 라이브러리안 : 프로그램의 라이브러리를 유지 관리
- 유틸리티 프로그램 : 사용자의 편의를 도모하기 위한 프로그램 (텍스트에디터, 디버거)
- 문제 프로그램 : 특정 업무 및 문제 해결을 위해 사용자가 작성
운영체제
- 컴퓨터 시스템의 자원들을 효율적으로 관리
- 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 프로그램의 집합
- 유틸리티와 하드웨어 사이의 인터페이스 제공
목적
- 처리능력 : Throughput 일정 시간 내에 시스템이 처리하는 양
- 반환시간 : Turn Around Time 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 사용가능도 : Availability 시스템을 사용할 필요가 있을 때 즉시 사용 가능한 정도
- 신뢰도 : Reliability 시스템이 주어진 문제를 정확하게 해결하는 정도
기능
- 프로세서, 기억장치, 입출력장치, 파일 및 자원 관리
- 자원 스케쥴링
- 사용자와 시스템 간의 인터페이스 제공
- 하드웨어와 네트워크 관리 제어
- 데이터 관리하고 데이터 및 자원 공유 기능 제공
- 시스템 오류 검사 및 복구
- 자원 보호 기능 제공
- 입 출력에 대한 보조 기능을 제공
- 가상 계산기 기능을 제공
자원관리
- 프로세스 관리 : 프레세스 스케쥴링, 동기화, 생성 제거, 시작 정지, 메시지 전달
- 기억장치 관리 : 프로세스 메모리 할당 및 회수
- 주변장치 관리 : 입출력 장치 스케쥴링 및 관리
- 파일 관리
종류
- 단일 작업 처리 시스템
- Single Tasking System
- 시스템을 한 개의 작업이 독점하여 사용하는 방식
- DOS
- 다중 작업 처리 시스템
- Multi Tasking System
- 여러 개의 프로그램을 열어 두고 다양한 작업을 동시에 진행하는 방식
- Windows
운영체제 운용 기법
일괄 처리 시스템
- 초기의 컴퓨터 시스템
- 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식
- 일괄 처리를 위해 작업제어언어(JCL)을 제공
- 시스템 효율적 사용 가능
- 반환 시간이 늦지만 하나의 작업이 모든 자원을 독점하므로 CPU Idle Time이 줄어듦
- 급여 계산, 지불 계산, 연말 결산 등
다중 프로그래밍 시스템
- 하나의 CPU와 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
- CPU 사용률과 처리량이 증가
시분할 시스템
- Time Sharing System = Round Robin
- 여러 명의 사용자가 사용하는 시스템에서 컴퓨터가 사용자들의 프로그램을 번갈아가며 처리
- 여러 사용자가 각자의 컴퓨터로 동시에 운영체제와 대화하면서 프로그램 실행
- 하나의 CPU는 같은 시점에서 여러 개의 작업을 동시 수행이 안되기 때문에 CPU를 같은 작업 시간량으로 나눠서 그 시간량 동안 번갈아가면서 CPU를 사용
- 작업시간량 : Time Slice = Quantum
- 다중 프로그래밍 방식과 결합하여 모든 작업이 동시에 진행되는 것처럼 대화식 처리 가능
- 시스템 전체 효율은 좋으나 사용자는 반응 속도가 느려질 수 있음
다중 처리 시스템
- 여러 개의 CPU와 하나의 주기억장치를 이용하여 여러 개의 프로그램을 동시에 처리하는 방식
- 여러 CPU는 하나의 메모리를 공유하며 단일 운영체제에 의해 관리
- 프로그램의 처리 속도는 빠르지만 기억장치, 입출력장치 등의 자원 공유에 대한 문제점을 해결해야함
실시간 처리 시스템
- 데이터 발생 즉시 처리하여 결과를 산출
- 처리시간이 단축되고 처리비용이 절감
- 우주선, 교통제어, 레이더, 핵실험, 데이터수집, 전화교환장치, 인터넷뱅킹 등 시간에 제한을 두고 수행되어야하는 작업
다중 모드 처리
- 일괄처리, 시분할, 다중처리, 실시간처리를 한 시스템에서 모두 제공하는 방식
분산 처리 시스템
- Distributed Processing System
- 여러 개의 컴퓨터를 통신 회선으로 연결하여 하나의 작업을 처리하는 방식
- 각 단말은 고유의 운영체제와 CPU, 메모리를 가진다.
발달과정
- 1세데 : 일괄처리
- 2세대 : 다중프로그래밍, 다중처리, 시분할, 실시간
- 3세대 : 다중모드
- 4세대 : 분산처리
컴파일러와 인터프리터
고급언어로 작성된 원시프로그램을 목적프로그램으로 번역하는 번역프로그램
저급 언어
기계어
- 컴퓨터가 직접 이해할 수 있는 언어
- 기종마다 기계어가 다르므로 언어의 호환성이 없음
어셈블리어
- 기계어와 1:1 대응되는 기호로 이루어진 언어
- 니모닉 언어 = Mnemonic = 상징어
- 하드웨어 제어에 주로 사용
- 언어의 호환성이 없음
- 어셈블러를 사용하여 기계어로 번역해야 됨
고급 언어
- 컴파일러 언어
- 자연어와 비슷한 형태 및 구조
- 하드웨어 지식이 없어도 작성 가능
- 기계어로 번역하기 위해 컴파일러나 인터프리터가 사용
- C, BASIC, COBOL, ALGOL 등
컴파일러
- 고급언어로 작성된 프로그램 전체를 목적 프로그램으로 번역한 후 링킹 작업을 통해 실행 프로그램을 생헝
- 번역과 실행과정을 거쳐야하기 때문에 번역 과정이 번거로움
- 번역 시간이 오래걸림
- 한번 번역 후에는 다시 번역하지 않아 실행속도는 빠름
- C, C++, FORTRAN, COBOL, PL/1
- 대부분의 언어는 컴파일러로 변환된다.
인터프리터
- 고급 언어로 작성된 프로그램을 한 줄 단위로 받아들여 번역
- 번역과 동시에 프로그램을 한 줄 단위로 즉시 실행
- 프로그램이 직접 실행되므로 목적프로그램이 생성되지 않음
- 시분할 시스템에 유용
- 원시 프로그램에 변화에 대한 반응이 빠름
- 번역 속도는 빠르지만 실행속도는 느림
- BASIC, SNOBOL, LISP, APL
- CPU의 시간낭비가 크다.
어셈블리어
- 사용자가 이해하기 어려운 기계어 대신에 명령 기능을 쉽게 연상할 수 있는 기호를 기계어와 1:1 대응시켜 코드화한 기호 언어
- 어셈블리어로 작성한 원이프로그램은 어셈블러를 통해 목적 프로그램으로 어셈블하는 과정을 거쳐야한다.
- 사용자가 프로그램을 쉽게 읽고 이해할 수 있다.
- 프로그램에 기호화된 명령 및 주소를 사용한다.
- CPU마다 사용되는 어셈블리어가 다르다.
- 의사명령과 실행명령으로 구분
형식
Label, OP, Operand
- Label : 데이터를 기억할 장소 또는 분기할 위치, 기호 상수에 대한 Symbol을 기술하는 부분으로 생략할 수 있다.
- OP : OPCode를 기술하는 부분
- Operand : OPCode가 연산을 수행하기 위한 대상인 상수, 데이터나 주소, 레지스터 번호를 기술하는 부분
어셈블러
- 어셈블리어로 작성된 걸 기계어로 번역하는 프로그램
- 이중 패스 어셈블러르 사용하면 정의되지 않은 기호를 사용할 수 있다.
- 현재 대부분 이중 패스 어셈블러를 사용한다.
- 두 개의 패스를 사용하면 기호를 정의하기 전에 사용할 수 있는 프로그램 작업이 용이하다.
- 단일 패스 어셈블러 : 원시 프로그램을 하나의 명령문씩 읽는 즉시 기계어로 번역하여 목적 프로그램을 만듦
- 이중 패스 어셈블러 : 원시 프로그램을 끝까지 읽어서 1단계 작업을 수행한 후 다시 처음부터 읽어나가면서 1단계에서 수행한 결과를 이용해 완전한 목적프로그램을 만듦
- 크로스 어셈블러 : 현재 사용하는 컴퓨터와 다른 명령 형태로 동작하는 컴퓨터에서 사용할 프로그램을 어셈블 할 때 사용하므로 실행시킬 컴퓨터에 맞게 목적 프로그램을 생성
구성
- 기계 명령어 테이블
- Machin Operation Table = MOT
- 어셈블리어의 실행 명령에 대응하는 기계어에 대한 정보를 가지고 있는 테이블
- 어셈블러에 기본적으로 포함
- 의사 명령어 테이블
- Pseudo Operation Table = POT
- 의사 명령과 그 명령을 처리하는 실행 루틴의 주소를 가지고 있는 테이블
- 어셈블러에 기본적으로 포함
- 기호 테이블
- Symbol Table = ST
- 원시 프로그램의 Label 부분에 있는 기호들을 모두 차례대로 저장하는 테이블
- 리터럴 테이블
- Literal Table = LT
- 원시 프로그램의 Operand 부분에 있는 리터럴을 차례로 저장하는 테이블
Pass-1 Pass-2
- Pass-1
- 기호와 리터럴을 정의
- 기계 명령어의 길이 정의
- 위치 계수기(PC, LC) 관리
- 기호들의 값을 심볼 테이블에 기억
- 사용된 리터럴을 리터럴 테이블에 기억
- 해당하는 의사 명령어 처리
- 사용 관련 DB : 원시 프로그램, Program Counter, MOT, POT, ST, LT
- Pass-2
- 기호 번지에 대한 상대 번지를 생성
- 목적 프로그램 생성
- 기계 명령어 생성
- 심볼 테이블에서 기호의 값을 찾음
- 의사 명령어 처리
- 리터럴 발생
- 사용 관련 DB : 원시 프로그램의 사본, Program Counter, Pass-1에서 만든 ST, LT, MOT, POT, 베이스 레지스터 테이블, PRINT LINE, 목적 프로그램
매크로
- 일종의 부 프로그램 = 개방 서브루틴
- 프로그램 작성시 한 프로그램에서 동일한 코드가 반복될 경우 반복되는 코드를 한 번만 작성하여 이름을 정의하고 피료시에 정의된 이름을 호출하여 사용
- 호출된 횟수만큼 정의된 매크로 코드가 해당 위치에 삽입되어 실행
- 매크로 내에 매크로 사용 가능
- 사용자의 반복적인 코드 입력을 줄여준다.
- 프로그램 내에서 매크로 코드를 확인할 수 있음
부프로그램과 비교
구분 | 매크로 | 부 프로그램 |
---|---|---|
별칭 | 개방 서트루틴 | 폐쇄 서브루틴 |
처리방식 | 매크로 호출 명령이 있는 위치마다 매크로 내용을 삽입하여 확장된 프로그램을 만들어 놓고 연속적으로 실행 | 부 프로그램 호출될 때마다 제어가 부 프로그램으로 넘어갔다가 다시 주 프로그램으로 복귀 |
특징 | 부 프로그램은 매크로에 비해 프로그램 크기가 작아지고 기억장소가 절약되지만 실행 시간은 약간 느림 |
매크로 프로세서
- 원시프로그램에 존재하는 매크로 호출 부분에 매크로를 삽입하여 확장된 원시 프로그램을 생성하는 시스템 소프트웨어
- 처리과정
- 매크로 정의 인식
- 매크로 정의 저장
- 매크로 호출 인식
- 매크로 확장과 매개변수 치환
링커
- 연결 편집기
- 언어 번역 프로그램이 생성한 목적 프로그램과 라이브러리, 또 다른 실행 프로그램 등을 연결하여 실행 가능한 로드 모듈을 만드는 시스템 소프트웨어
- 연결 기능만 수행하는 로더의 한 형태
로더
- 컴퓨터 내부로 정보를 들여오거나 로드 모듈을 보조기억장치로부터 주기억장치에 적재하는 시스템 소프트웨어
기능
- 할당 : Allocation 실행 프로그램을 실행시키기 위해 기억장치 내에 옮길 공간을 확보하는 기능
- 연결 : Linking 부 프로그램 호출 시 그 부 프로그램이 할당된 기억장소의 시작주소를 호출한 부분에 등록하여 연결하는 기능
- 재배치 : Relocation 기억장소의 실제 주소로 배치시키는 기능
- 적재 : Loading 실행 프로그램을 할당된 기억공간에 실제로 옮기는 기능
종류
Compile And Go 로더
- 별도의 로더 없이 언어 번역 프로그램이 로더의 기능까지 수행
- 연결 기능은 수행하지 않는다.
- 할당, 재배치, 적재 작업을 모두 언어 번역 프로그램이 담당
절대 로더
Absolute Loader
절대적으로 로딩(적재)만 하는 로더
목적 프로그램을 기억장소에 적지시키는 기능만 수행하는 로더
로더 중 가장 간단한 프로그램으로 구성
기억장소 할당이나 연결을 프로그래머가 직접 지정
한번 지정한 주기억장소의 위치는 변경이 어려움
절대로더의 기능별 행위 주체
- 할당 : 프로그래머
- 연결 : 프로그래머
- 재배치 : 언어 번역 프로그램
- 적재 : 로더
직접 연결 로더
- Direct Linking Loader = Relocation Loader = Relative Loader = 재배치로더 = 상대로더
- 일반적인 기능의 로더로 로더의 기본 네 가지 기능을 모두 수행
동적 적대 로더
- Dynamic Loading Loader = 호출 시 적재 로더
- 프로그램을 실행시 필요한 부분만을 적재하고 나머지는 보조기억장치에 저장
- 프로그램 크기가 주기억장치의 크기보다 큰 경우에 사용
프로세스
- 프로세서에 의해 처리되는 실행중인 프로그램
- 작업 = 태스크
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할다오디는 실체로 디스패치가 가능한 단위
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
PCB
- Process Control Block = 프로세스 제어 블록 = Task Control Block = Job Control Block
- 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성
- 프로세스가 완료되면 PCB는 제거됨
- PCB에 저장된 정보
- 프로세스의 현재 상태
- 포인터
- 부모 프로세스에 대한 포인터
- 자식 프로세스에 대한 포인터
- 프로세스가 위치한 메모리에 대한 포인터
- 할당된 자원에 대한 포인터
- 프로세스 고유 식별자
- 스케쥴링 및 프로세스의 우선순위
- CPU 레지스터 정보 : AC, IR, PC, 범용 레지스터
- 주기억 장치 관리 정보 : Base Register, Page Table
- 입출력 상태 정보
- 계정 정보 : CPU 사용시간, 실제 사용시간, 한정된 시간
프로세스 상태
제출 : Submit 사용자가 작업을 시스템에 제출한 상태
접수 : Hold 작업이 스풀공간인 디스크의 할당 위치에 저장된 상태
준비 : Ready
- 프로세스가 프로세서를 할당 받기 위해 기다리고 있는 상태
- 프로세스는 준비상태 큐(스케쥴링 큐)에서 실행을 준비
- 접수 상태에서 준비상태로의 전이는 Job Scheduler에 의해 수행
실행 : Run
- 준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태
- 할당 시간이 종료되면 프로세스는 준비상태로 전이
- 실행중인 프로세스에 I/O처리가 필요하면 실행중인 프로세스는 대기상태로 전이
- 준비 상태에서 실행상태로의 전이는 CPU Scheduler에 의해 수행
대기, 보류, 블록: 프로세스에 I/O처리가 필요하면 현재 실행 중인 프로세스가 중단되고 I/O처리가 완료될 때까지 대기하는 상태
종료 : Terminated, Exit 프로세스 실행이 끝나고 프로세스 할당이 해제된 상태
실행중지 : Suspend
하나의 프로세스가 입출력 이외의 다른 이유에 의해 실행되지 못하는 상태
실행중지된 프로세스는 다른 프로세스로 다시 시작하기 전에는 실행될 수 없다.
시스템에 이상이 있거나 부하가 많을 경우 운영체제 필요에 의해 중지
프로세스의 이상유무를 확인하기 위해 해당 프로세스를 완전히 종료하지 않고 중지
상태 용어
- Dispatch : 준비상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정
- Wake Up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비상태로 전이되는 과정
- Traffic Controller : 프로세스의 상태에 대한 조사와 통보 담당
스레드
- 프로세스의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위
- 프로세스의 일부 특성을 가지고 있지 때문에 경량 프로세스라고 한다.
- 독립적인 스케쥴링의 최소 단위
- 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
- 병행성 증진
- 처리율 향상
- 응답시간 단축
- 기억장소 낭비 줄어듦
- 프로세스 간 통신 향상
- 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신
사용자 수준의 스레드
- 사용자가 만든 라이브러리를 사용하여 스레드 운용
- 속도는 빠르지만 구현이 어려움
커널 수준의 스레드
- 운영체제 커널에 의해 스레드 운용
- 구현 쉽지만 속도가 느림
스케쥴링
- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업
- 장기 스케쥴링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업
- 중기 스케쥴링 : 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업
- 단기 스케쥴링 : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업
- 문맥교환 : 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 할당된 프로세스의 상태를 저장하고 새로운 프로세스의 상태정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업
목적
스케쥴링은 PCU나 자원을 효율적으로 사용하기 위한 정책
- 공정성
- 처리율 증가
- CPU 이용률 증가
- 우선순위 제도 : 우선순위가 높은 프로세스 먼저 실행
- 오버헤드 최소화
- 응답시간 최소화
- 반환시간 최소화
- 대시시간 최소화
- 균형 있는 자원의 사용
- 무한 연기 회피
성능 평가 기준
- CPU 이용률
- 처리율
- 반환시간
- 대기시간
- 응답시간
비선점 스케쥴링
- Non-preemptive
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케쥴링 기법
- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용
- 모든 프로세스에 대한 요구를 공정하게 처리 가능
- 응답 시간 예측이 용이
- 일괄 처리 방식에 적합
- 짧은 작업이 긴 작업을 기다리는 경우가 발생
- FCFS, SJF, 우선순위, HRN, 기한부 알고리즘
선점 스케쥴링
- Preemptive
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 빼앗아 사용할 수 있는 스케쥴링 기법
- 우선순위가 높은 프로세스를 빠르게 처리 가능
- 시분할 시스템에 사용
- 많은 오버헤드 초래
- 인터럽트용 타이머 클록이 필요
- RR, SRT, 선점우선순위, 다단계 큐, 다단계 피드백 큐 알고리즘
비선점 스케쥴링
FCFS
- FIFO
- 짧은 작업이 긴 작업을 기다리는 경우가 생김
- 가장 간단한 알고리즘
SJF
- Shortest Job First = 단기 작업 우선
- 프로세스들 중에서 실행시간이 가장 짧은 프로세스에게 먼저 CPU를 할당
- 가장 적은 평균 대기시간을 제공하는 최적 알고리즘
- 실행시간이 긴 프로세스는 실행시간이 짧은 프로세스에게 할당 순위가 밀려 무한 연기 상태가 발생할 수 있음
HRN
- 긴 프로세스에 불리한 SJF를 보완하기 위한 것
- 대기 시간과 서비스 실행 시간을 이용하는 기법
- 서비스 실행 시간이 짧거나 대기 시간이 긴 프로세스일 경우 우선순위가 높아진다.
- 우선순위 = (대기시간 + 서비스시간) / 서비스 시간
기한부
- Deadline
- 일정한 시간을 주고 그 시간안에 프로세스를 완료하도록 하는 기법
- 프로세스가 제한시간 안에 완료되지 않을 경우 제거되거나 처음부터 다시 실행해야함
- 프로세스 실행 시 집중적으로 요구되는 자원관리에 오버헤드가 발생
우선순위
- Priority
- 준비상태 큐에서 기다리는 각 프로세스마다 우선순위를 부여하여 그 중 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
- 우선순위가 동일할 경우 FCFS 기법으로 CPU 할당
- 가장 낮은 순위를 부여받은 프로세스는 무한연기 또는 기아상태가 발생
에이징
- Aging
- 특정 프로세스의 우선순위가 낮아 무한정 기다리게 되는 경우 기다린 시간에 비례하여 일정 시간이 지나면 우선순위를 한 단계씩 높여 가까운 시간에 자원을 할당받도록하는 기법
- SJF나 우선순위 기법에서 발생하는 무한연기, 기아상태를 예방
선점 스케쥴링
선점 우선순위
- 준비상태 큐의 프로세스 중에서 우선순위가 가장 높은 프로세스에게 먼저 CPU를 할당하는 기법
- 준비상태 큐에 새로 들어온 프로세스의 우선순위가 높을 경우 현재 프로세스를 보류하고 새로운 프로세스를 실행
SRT
- Shortest Remaining Time = 선점 SJF 기법
- 비선점 스케쥴링인 SJF기법을 선점으로 변경
- 시분할 시스템에 유용
- 오버헤드 증가
RR
- Round Robin
- 시분할 시스템을 위해 고안
- FCFS를 선점형태로 변경
- 시간할당량 동안만 실행 후 실행이 완료되지 않으면 다음 프로세스에게 CPU를 넘겨주고 준비상태 큐의 가장 뒤로 배치
- 할당시간이 큰 경우 FCFS와 같음
- 할당시간이 작을 경우 문맥교환 및 오버헤드가 자주 발생되 요청 작업을 신속히 처리 불가
- 할당되는 시간의 크기가 작으면 작은 프로세스에 유리
- 대기시간 : 구하고자하는 프로세스의 가장 마지막 실행이 시작되기 전까지의 진행시간을 구하고 해당 프로세스가 앞에서 실행되었을 경우 그 시간을 뺀다.
다단계 큐
- MQ = Multi-level Queue
- 프로세스를 특정 그룹으로 분류할 수 있을경우 그룹에 따라 각기 다른 준비상태 큐를 사용하는 기법
- 우선순위에 따라 시스템 프로세스, 대화형 프로세스, 편집 프로세스, 일괄 처리 프로세스 등으로 나누어 큐를 배치
- 각 큐는 독자적인 스케쥴링을 가지고 있어 그룹의 특성에 따라 다른 스케쥴링 기법 사용 가능
- 각 큐가 준비상태로 들어간 경우 달느 준비상태 큐로 이동할 수 없음
- 하위 단계 큐를 실행 중이라도 상위 단계 큐에 프로세스가 들어오면 상위단계에게 CPU를 할당
다단계 피드백 큐
- MFQ = Multi-level Feedback Queue
- 다단계 큐 기법에서 준비상태 큐 사이를 이동할 수 있게 개선
- 적응 기법(Adaptive Mechanism)의 개념을 적용
- 각 준비상태 큐마다 시간할당량을 부여해서 완료하지 못한 프로세스는 다음 단계의 준비상태 큐로 이동
- 상위 단계 큐일수록 우선순위가 높고 시간할당량이 적다.
- 요구 시간이 적은 프로세스, I/O 프로세스, 오래 기다린 프로세스를 기준으로 높은 우선순위를 할당
- 하위 단계 큐를 실행 중이라도 상위 단계 큐에 프로세스가 들어오면 상위단계에게 CPU를 할당, 마지막 단계 큐에선 작업이 완료될 때까지 RR 사용
병행 프로세스
두 개 이상의 프로세스들이 동시에 존재하며 실행상태에 있는 것
임계구역
- 다중 프로그래밍 운영체제에서 여러 개의 프로세스가 공유한 데이터 및 자원에 대해 어느 한 시점에는 하나의 프로세스만 데이터 또는 자원을 사용하도록 지정된 공유 자원영역
- 하나의 프로세스만 접근할 수 있고 해당 프로세스가 자원을 반납한 후 에만 다른 프로세스가 자원이나 데이터를 사용할 수 있다.
- 특정 프로세스가 독점할 수 없다.
- 수행 중인 프로세스는 인터럽트가 불가능하다.
- 임계 구역 내의 작업은 신속하게 이루어져야 한다.
- 프로세스가 임계 구역에 대한 진입을 요청하면 일정 시간 내에 진입을 허락해야한다.
- Critical Section
- 임계구역은 화장실에 비유해 기억하자
상호 배제 기법
특정 프로세스가 공유 자원을 사용하고 있을 경우 다른 프로세스가 해당 공유 자원을 사용하지 못하게 제어하는 기법
임계 구역을 유지하는 기법
소프트웨어적 구현
- 두 개 프로세스 기준 : Dekker, Peterson 알고리즘
- 여러 개의 프로세스 기준 : Lamport의 빵집 알고리즘
하드웨어적 구현 : Test & Set 기법, Swap 명령어 기법
동기화 기법
두 개 이상의 프로세스를 한 시점에서는 동시에 처리할 수 없으므로 각 프로세스에 대한 처리 순서를 결정하는 것으로 상호 배제의 한 형태
세마포어
- Semaphore = 신호기 = 깃발
- 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- E.J.Dijkstra가 제안
- P와 V라는 두 개의 연산에 의해서 동기화를 유지시키고 상호 배제의 원리를 보장
- S는 P와 V 연산으로만 접근 가능한 세마포어 변수로 공유 자원의 개수를 나타내며 0과 1혹은 0과 양의 값을 가질 수 있다.
- 다른 프로세스가 이미 자원을 점유한 상태라면 자원을 사용할 수 있을 때까지 기다린다.
- 순서
- P : While S <= 0 Do skip;
- S = S - 1;
- V : S = S + 1;
모니터
- Monitor
- 동기화를 구현하기 위한 특수 프로그램 기법
- 특정 공유 자원을 프로세스에게 할당하는데 필요한 데이터와 이 데이터를 처리하는 프로시저로 구성
- 자료 추상화와 정보 은폐 개념을 기초
- 공유 자원을 할당하기 위한 병행성 구조
- 모니터 내의 공유자원을 사용하려면 프로세스는 반드시 모니터 진입부를 호출해야함
- 외부 프로시저는 직접 액세스할 수 없음
- 모니터 경계에서 상호배제가 시행
- 한 순간에 하나의 프로세스만 진입하여 자원을 사용
- Wait와 Signal 연산 사용
교착상태
- Dead Lock
- 상호 배제에 의해 나타나는 문제점
- 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 현상
필요 충분 조건
교착상태가 되려면 이 조건들이 모두 충족되어야함
- 상호 배제 : Mutual Exclusion 한 번에 한 개의 프로세스만이 공유 자원을 사용할 수 있어야 한다.
- 점유와 대기 : Hold & Wait 최소한 하나의 자원을 점유하고 있으면서 다른 프로세스에 할당되어 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 한다.
- 비선점 : Non-preemption 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없어야 한다.
- 환형 대기 : Circular Wait 공유 자원과 공유 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야 한다.
예방기법
교착상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
교착상태 발생의 네 가지 조건 중에서 어느 하나를 제거함으로 수행
자원의 낭비가 가장 심한 기법
상호 배제 부정 : 한 번에 여러 개의 프로세스가 공유 자원을 사용할 수 있도록 한다, 실제로는 구현하지 않음
점유 대기 부정 : 프로세스가 실행되기 전 필요한 모든 자원을 할당하여 프로세스 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.
비선점 부정 : 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고 요구한 자원을 사용하기 위해 기다리게 한다.
환형 대기 부정 : 자원을 선형 순서로 분류하여 고유 번호를 할당하고 각 프로세스는 현재 점유한 자원의 고유 번호보다 앞이나 뒤 어느 한 방향으로만 자원을 요구하도록 한다.
회피기법
교착상태가 발생할 가능성을 배제하지 않고 교착상태가 발생하면 적절히 피해나가는 방법
은행원 알고리즘
- E.J.Dijkstra가 제안한 것
- 은행에서 모든 고객의 요구가 충족되도록 현금을 할당하는 데서 유래
- 각 프로세스에게 자원을 할당하여 교착상태가 발생하지 않음
- 모든 프로세스가 완료될 수 있는 상태를 안전 상태
- 교착상태가 발생할 수 있는 상태를 불안전 상태 (불안전 상태라고해서 모두 교착상태는 아님)
- 적용하기 위해선 자원의 양과 프로세스 수가 일정해야 한다.
- 프로세스의 모든 요구를 유한한 시간 안에 할당하는 것을 보장
발견기법
- 시스템에 교착상태가 발생했는지 점검하여 교착상태에 있는 프로세스와 자원을 발견하는 것
- 교착상태 발견 알고리즘과 자원할당 그래프 등을 사용
회복기법
- 교착상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복하는 것
- 프로세스 종료 : 교착상태에 있는 프로세스 종료
- 자원 선점 : 프로세스가 점유하고 있는 자원을 선점하여 다른 프로세스에게 할당하며 해당 프로세스를 일시 정지시키는 방법
기억장치 관리
상위 계층구조일 수록 접근 속도와 접근 시간이 빠르지만 기억용량이 적고 비싸다.
반입 전략
- Fetch
- 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략
- 요구 반입 : Demand Fetch 실행 중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재
- 예상 반입 : Anticipatory Fetch 실행 중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재
배치 전략
- Placement
- 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략
- 최초 적합 : First Fit 프로그램에 데이터가 들어갈 수 있는 크기의 빈 영역 중에 첫 번째 분할 영역에 배치
- 최적 적합 : Best Fit 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치
- 최악 적합 : Worst Fit 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
교체 전략
- 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
- FIFO, OPT, LRU, LFU, NUR, SCR
주기억장치 할당 기법
- 연속 할당 기법 : 프로그램을 주기억장치에 연속으로 할당하는 기법 (로딩)
- 단일 분할 할당 기법 : 오버레이, 스와핑
- 다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법
- 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법
- 페이징 기법
- 세그먼테이션 기법
단일 분할 할당 기법
- 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 오직 한 명의 사용자만 주기억장치의 사용자 영역을 사용하는 기법
- 경계 레지스터가 사용된다.
- 오버레이 기법을 사용하면서 주기억장치보다 큰 사용자 프로그램을 실행할 수 있게 되었다.
오버레이 기법
- 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
- 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행한다.
- 불필요한 조각이 위치한 장소에 새로운 프로그램 조각을 중첩하여 적재
- 프로그램을 여러 개의 조각으로 분할하는 작업은 프로그래머가 수행하므로 시스템 구조나 프로그램 구조를 알아야함
스와핑 기법
- 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
- 하나의 사용자 프로그램이 완료될 때까지 교체 과정을 여러 번 수행할 수 있다.
- 주기억장치 => 보조기억장치 이동을 Swap Out
- 보조기억장치 => 주기억장치 이동을 Swap In
다중 분할 할당 기법
고정 분할 할당
- Multiple contiguous Fixed partTition allocation = MFT = 정적 할당 = Static Allocation
- 프로그램을 할당하기 전에 운영체제가 주기억장치 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법
- 프로그램을 실행하려면 프로그램 전체가 주기억장치에 위치해야 한다.
- 프로그램이 분할된 영역보다 커서 영역 안에 못 들어가는 경우가 있다.
- 내부 단편화 및 외부 단편화 발생
- 다중 프로그래밍을 위해 사용되었으나 현재는 사용되지 않음
가변 분할 할당
- Multiple contiguous Variable parTition allocation = MVT = 동적 할당 = Dynamic Allocation
- 고정 분할 할당 기법의 단편화를 줄이기 위한 것으로 프로그램을 주기억 장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법
- 주기억장치를 효율적으로 사용 가능
- 다중 프로그래밍의 정도를 높일 수 있음
- 실행될 프로세스 크기에 대한 제약이 적음
- 단편화를 해결할 수 있으나 영역과 영역사이에 단편화가 발생할 수 있음
단편화
- 분할된 주기억 장치에 프로그램을 할당하고 반납하는 과정을 반복하면서 사용되지 않고 남는 기억장치의 빈 공간 조각
- 내부 단편화 : Internal Fragmentation 분할된 영역이 할당될 프로그램 크기보다 크기 때문에 남는 공간
- 외부 단편화 : External Fragmentation 분할된 영역이 할당될 프로그램 크기보다 작아 들어갈 수 없어 남는 공간
해결방법
통합 기법
- Coalescing
- 빈 공간이 다른 빈 공간과 인접되어 있는지 점검한 후 결합하여 사용
압축 기법
- Compaction
- 분산되어 있는 단편화된 빈 공간을 결합하여 하나의 큰 공간을 만드는 작업
- 집약 = 가비지 컬렉션
- 분산된 단편화된 공간을 주기억 장치의 한 쪽 끝으로 옮긴 후 합침
- 압축이 실행되는 동안 시스템은 모든 일을 일시 중지
- 기억장소의 재배치
- 압축기법을 수행시에 각 프로그램에 주어진 분할영역의 주소를 새롭게 지정해줘야한다.
- Base Register와 Boundary Register를 사용한다.
가상기억장치
- 보조기억장치의 일부를 주기억장치처럼 사용하는 것
- 프로그램을 여러 개의 작은 블록으로 나눠서 가상기억장치에 보관하고 프로그램 실행시 요구되는 블록만 주기억장치에 불연속적으로 할당
- 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용
- 주기억장치의 이용률과 다중 프로그래밍 효율 증대
- 단편화 해결
- 가상기억장치에 저장된 프로그램 실행시 주소변환 작업 필요
- 주소변환
- 가상기억장이체 있는 프로그램이 주기억장치에 적재되어 실행될 때 논리적인 가상주소를 실기억주소로 변환하는 것
- 주소 사상 = 주소 매핑
- 인위적 연속성 : Artificial Contiguity 연속적인 가상주소가 반드시 연속적인 실기억주소로 변환되지 않아도 된다.
- 가상주소는 보조기억장치에 있는 프로그램 상의 주소 = 논리 주소
- 실기억주소는 주기억장치에 있는 기억공간의 주소 = 실주소
페이징 기법
- 가상 기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법
- 페이지 : 프로그램을 일정한 크기로 나눈 단위
- 페이지 프레임 : 페이지 크기로 일정하게 나눠진 주기억장치의 단위
- 외부 단편화는 발생하지 않으나 내부 단편화는 발생
- 주소 변환을 위해 페이지 위치정보를 가지고 있는 페이지 맵 테이블 필요
- 페이지 맵 테이블 사용으로 비용 증가, 처리속도 감소
- 일반적인 페이지 크기는 1~4KB
- 가상 주소는 페이지 번호와 실제 내용이 위치하고 있는 곳까지의 거리를 나타내는 변위값으로 구성
- 실기억주소는 페이지 프레임 번호와 프레임 내에서 실제 참조하는 위치까지의 거리를 나타내는 변위값으로 구성
- 페이지 맵 테이블은 주기억장치에 존재하는지의 여부를 나타내는 상태 비트와 보조기억장치 주소를 나타내는 디스크주소, 페이지가 주기억장치에 있을 때의 페이지 프레임 번호로 구성
Page Fault
- 프로그램 실행시 참조한 페이지가 주기억장치에 없는 현상
- 처리 순서
- 운영체제에서 트랩요청
- 사용자 레지스트리와 프로그램 상태 저장
- 현재 교체 가능한 페이지를 페이지 맵 테이블에서 검색
- 가상기억장치에 있는 페이지를 주기억장치로 전달
- 페이지 맵 테이블 갱신
- 프로그램 상태를 불러와 이전 작업 진행
세그먼테이션 기법
- Segmentation
- 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법
- 각 세그먼트는 고유한 이름과 크기를 갖는다.
- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
- 기억공간을 절약하기 위해 사용한다.
- 주소변환을 위해서 세그먼트 맵 테이블이 필요
- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며 이를 위해 기억장치 보호키가 필요
- 내부 단편화는 발생하지 않으나 외부 단편화는 발생
- 가상 주소는 세그먼트 번호와 세그먼트 내에 실제 내용이 위치하고 있는 곳까지의 거리를 나타내는 변위값으로 구성
- 실기억주소는 완전주소 형태이면 세그먼트 기분번지와 변위값을 더해서 구함
- 세그먼트 맵 테이블은 세그먼트 번호와 세그먼트 크기, 주기억장치 상의 기준번지로 구성
페이지 교체 알고리즘
- 페이지 부재가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법
- OPT ,FIFO, LRU, LFU, NUR, SCR
OPT
- OPTimal replacement = 최적 교체
- 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법
- Belady가 제안
- 페이지 부재가 가장 적게 발생하는 효율적인 알고리즘
- 각 페이지의 호출 순서와 참조 상황을 예측해야하므로 실현 가능성이 없음
FIFO
- 가장 오래 있었던 페이지를 교체하는 기법
- 이해하기 쉽고 프로그램이 및 설계가 간단
- 벨레이디의 모순 현상 발생 : 페이지 프레임 수를 증가시켰는데도 페이지 부재가 더 많이 일어나는 현상
LRU
- Least Recently Used
- 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법
- 각 페이지마다 Counter나 Stack을 두어 체크한다.
- 별도의 하드웨어가 필요하며 시간적인 오버헤드가 발생한다.
- 실제로 구현하기가 매우 어렵다.
LFU
- Least Frequently Used
- 사용 빈도가 가장 적은 페이지를 교체하는 기법
- 프로그램 실행 초기에 많이 사용된 페이지가 후에 사용되지 않을 경우에도 프레임을 계속 차지할 수 있다.
NUR
- Not Used Recently
- LRU와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하는 기법
- 최근에 사용하지 않은 페이지는 나중에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.
- 각 페이지마다 참조 비트와 변형비트가 사용된다.
- 참조비트 : 페이지가 호출되지 않았을 때는 0, 호출되었을 때는 1
- 변형비트 : 페이지 내용이 변경되지 않았을 때는 0, 변경되었을 때는 1
- 참조비트와 변형비트 값에 따라 교체될 페이지의 순서가 결정된다.
순서 | 참조비트 | 변형비트 |
---|---|---|
1 | 0 | 0 |
2 | 0 | 1 |
3 | 1 | 0 |
4 | 1 | 1 |
SCR
- Second Chance Replacement = 2차 기회 교체
- 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것
- FIFO의 단점을 보완한다.
- 각 페이지마다 참조 비트를 두고 0일경우 교체하고 1일 경우 참조 비트를 0으로 변경 후 FIFO 큐의 맨 마지막으로 이동시킨다.
- LRU처럼 참조 비트를 둔다.
가상기억장치 관리
페이지 크기
페이지 크기가 작을 경우
- 페이지 단편화 감소
- 효율적인 워킹 셋 유지
- Locality에 더 일치하기 때문에 기억장치 효율이 높아짐
- 맵 테이블의 크기가 커지고 매핑 속도가 늦어짐
- 디스크 접근 횟수가 많아져서 전체적인 I/O 효율성 감소
페이지 크기가 클 경우
- 맵 테이블 크기가 작아지고 매핑 속도가 빨라짐
- 디스크 접근 횟수가 줄어들어 I/O 효율성이 증가
- 페이지 단편화가 증가
- 불필요한 내용까지 주기억장치에 적재될 수 있음
Locality
- 국부성 = 지역성 = 구역성 = 국소성
- 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론
- 스레싱 방지를 위한 워킹 셋 이론의 기반
- 가상기억장치 관리의 이론적인 근거
- Denning 교수에 의해 구역성의 개념이 증명
- 캐시 메모리 시스템의 이론적 근거
시간 구역성
- Temporal Locality
- 프로세스가 실행되면서 하나의 페이지를 일정 시간동안 집중적으로 액세스
- 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음
- Loop, Stack, Sub Routine, Counting, 집계(Totaling)
공간 구역성
- Spatial Locality
- 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상
- 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미
- 배열 순회, 순차적 코드 실행, 프로그래머가 변수를 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수 참조할 때 사용
워킹 셋
- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- Denning이 제안한 프로그램의 움직임에 대한 모델로 프로그램의 Locality 특징을 이용
- 워킹 셋을 주기억장치에 상주시킴으로 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정
- 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹셋은 시간에 따라 변경
페이지 부재 빈도 방식
- 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식
프리페이징
- 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 방식
스래싱
- Thrashing
- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정 중 자주 페이지 부재가 발생함으로써 나타나는 현상
- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 시점까지는 높아지지만, 더 높아질 경우 스래싱이 나타나고 CPU 이용률은 급격히 감소한다.
스래싱 방지
- 다중 프로그래밍의 정도를 적정 수준으로 유지
- 페이지 부재 빈도를 조절하여 사용
- 워킹 셋을 유지
- 부족한 자원을 증설하고 일부 프로세스를 중단
- CPU 성능에 대한 자료의 지속적 관리 및 분석해 임계치를 예상하고 운영
디스크 스케쥴링
- 사용할 데이터가 디스크 상에 여러 곳에 저장되어 있을 경우 데이터를 액세스하기 위해 디스크 헤드가 움직이는 경로를 결정하는 기법
- 탐색시간을 최적화하기 위해 수행된다.
- 처리량 최대화
- 응답 시간 최소화
- 응답 시간 편차의 최소화
FCFS
- FIFO
- 가장 간단한 스케쥴링으로 디스크 대기 큐에 먼저 들어온 순서로 실행
- 디스크 오버헤드가 적을 때 효율적
- 프로그래밍이 쉬움
- 헤드 이동거리가 상당히 길어질 수 있다.
- 디스크 오버헤드가 커지면 응답시간이 길어진다.
- 탐색 시간을 최적화하려는 시도가 없는 기법
SSTF
- Short Seek Time First
- 탐색거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스
- 현재 헤드 위치에서 가장 가까운 거리에 있는 트랙으로 헤드를 이동
- FCFS보다 처리량이 많고 평균 탐색 시간이 짧다.
- 일괄 처리 시스템에 유용
- 먼 거리의 트랙은 무한정 기다릴 수도 있음
- 응답 시간 편차가 크기 때문에 대화형 시스템에 부적합
SCAN
- SSTF가 갖는 탐색 시간의 편차를 해소하기 위한 기법
- Denning이 개발, 대부분의 디스크 스케쥴링에서 기본 전략으로 이용
- 현재 헤드의 위치에서 진행방향이 결정되면 탐색 거리가 짧은 순서에 따라 그 방향의 모든 요청을 서비스하고, 끝까지 이동하면 역방향으로 요청 사항을 서비스
- 헤드가 이동하면서 새로운 요청이 서비스됨
- 현재 진행방향에 더 이상의 요청이 없을 때만 방향을 바꿈
- SSTF에서 발생하는 응답 시간의 편차 감소
- 오버헤드가 적을 경우 가장 효율적인 기법
C-SCAN
- Cicular SCAN
- 항상 바깥쪽에서 안쪽으로 움직이면서 가장 짧은 탐색 거리를 갖는 요청을 서비스
- 헤드는 트랙 바깥쪽에서 안쪽으로 한 방향만 움직이며 서비스하여 끝까지 이동한 후 안쪽에 더 이상의 요청이 없으면 헤드는 가장 바깥쪽의 끝으로 이동한 후 다시 안쪽으로 이동하면서 요청을 서비스
- 처음과 마지막 트랙을 인접시킨 것과 같은 원형 형태로 디스크를 처리
- 새로운 요청이 도착하면 다음 헤드가 진행할 때 서비스
- 트랙 안쪽과 바깥쪽 요청에 대한 서비스가 공평
LOCK
- SCAN 기법을 기초로 사용하되 마지막 요청을 서비스한 후 그 방향의 끝으로 이동하는 것이 아니라 바로 역방향으로 진행하는 기법
C-LOCK
- C-SCAN 기법을 기초로 사용하되 바깥쪽에서 안쪽 방향의 모든 요청을 처리한 후 가장 바깥쪽 요청 트랙으로 이동한 후 안쪽 방향으로 요청을 서비스
N-SCAN
- N-step SCAN
- SCAN 기법의 무한 대기 발생 가능성을 제거한 것
- 어떤 방향의 진행이 시작될 시에 대기 중이던 요청들만 서비스하고 진행 도중 들어온 요청은 한데 모아서 다음 반대 방향 진행 때 서비스하는 기법
- SSTF나 SCAN보다 응답시간의 편차가 적다.
- 특정 방향에 많은 수의 요청이 도착할 경우 반대 방향에서의 무한 지연 발생을 방지
- 진행도중 도착한 요청은 반대 방향 진행시 서비스하기 위해 디스크 대기 큐에 저장
Eschenbach
- 에션바흐는 부하가 매우 큰 항공 예약 시스템을 위해 개발
- 탐색 시간과 회전 지연 시간을 최적화하기 위한 최초의 기법
- 헤드는 C-SCAN처럼 움직이며 모든 실린더는 그 실린더에 요청이 있던 없던 전체 트랙이 한 바퀴를 회전할 동안에 서비스를 받음
SLTF
- Shortest Latency Time First = Sector Queuing
- 회전 지연 시간의 최적화를 위해 구현된 기법
- 드럼에서 사용
파일
- 사용자가 작성한 서로 관련 잇는 레코드의 집합체
- 프로그램 구성의 기본 단위며 보조기억장치에 저장
- 소멸성 : 파일을 추가하거나 제거하는 작업의 빈도수
- 활성률 : 프로그램이 한번 수행되는 동안 처리되는 레코드 수의 백분율
- 크기 : 파일에 저장되어 있는 정보량
파일 시스템
- 파일의 저장, 액세스, 공유, 보호 등 보조기억장치에서의 파일을 총괄하는 파일 관리 기술
- 사용자와 보조기억장치 사이에서 인터페이스를 제공
- 사용자가 파일을 생성, 수정, 제거할 수 있도록 한다.
- 파일을 공동으로 사용할 수 있게 한다.
- 여러 종류의 액세스 제어방법 제공
- 사용자가 적합한 구조로 파일을 구성
- 파일의 예비와 복구 등의 기능 제공
- 사용자가 물리적 장치 이름 대신에 기호화된 이름을 사용할 수 있게 함
- 사용자가 파일을 편리하게 사용할 수 있도록 파일의 논리적 상태를 보여줘야함
- 파일을 안전하게 사용할 수 있도록하고 파일이 보호되어야함
- 파일 정보가 손실되지 않도록 데이터 무결성을 유지
- 파일 단위 작업 : Open Close Create Copy Destory Rename List
- 파일 내 레코드 단위 작업 : Read Write Update Insert Delete Search
파일 디스크립터
- File Descriptor = 파일 서술자 = FCB = File Control Block = 파일 제어 블록
- 시스템이 필요로하는 파일에 대한 정보를 갖고 있는 제어블록
- 파일마다 독립적으로 존재
- 시스템에 따라 다른 구조를 가짐
- 보조기억장치 내에 저장되어 있다가 해당 파일이 열릴 때 주기억장치로 옮겨짐
- 파일 시스템이 관리하므로 사용자가 참조 불가
- 파일 디스크립터의 정보
- 파일 이름 및 파일 크기
- 보조기억장치에서의 파일 위치
- 파일 구조 : 순차, 색인 순차, 색인 파일…
- 보조기억장치의 유형
- 액세스 제어 정보
- 파일 유형 : 텍스트, 목적 프로그램…
- 생성 날짜와 시간
- 제거 날짜와 시간
- 최종 수정 날짜와 시간
- 액세스한 횟수
파일 구조
파일 접근 방법이라고도 한다.
순차 파일
- Sequential File = 순서 파일 = 순차 접근 방식 = SAM = Sequential Access Method
- 레코드를 논리적인 처리 순서에 따라 연속된 물리적 저장공간에 기록하는 것
- 레코드들이 순차적으로 기록되어 판독할 때도 순차적으로 접근
- 자기 테이프를 모형화한 구조
- 일괄 처리에 적합한 구조
- 레코드를 삽입하거나 삭제하는 경우 파일 전체를 복사한 후 수행하므로 시간이 오래 걸림
- 파일 전체를 복사
- 복사된 파일을 대상으로 레코드를 특정 위치에 삽입하거나 삭제
- 모든 레코드의 위치를 순차적으로 재배치
- 재비치된 복사파일을 원래 파일로 저장
직접 파일
- Direct File = 직접 접근 방식 = DAM = Direct Access Method
- 파일을 구성하는 레코드를 임의의 물리적 저장공간에 기록하는 것
- 레코드에 특정 기준으로 키가 할당
- **해싱 함수(사상함수)**를 이용하여 이 키에 대한 보조기억장치의 물리적 상대 레코드 주소를 계산한 후 해당하는 주소에 레코드를 저장
- 레코드는 해싱 함수에 의해 계산된 물리적 주소를 통해 접근
- 임의 접근이 가능한 자기 디스크나 드럼을 사용
- 접근 시간이 빠르고 레코드의 삽입, 삭제, 갱신이 용이
- 레코드의 주소 변환 과정이 필요해 시간 소요
- 기억공간의 효율 저하
- 기억장치의 물리적 구조에 대한 지식 필요
- 프로그래밍이 복잡
색인 순차 파일
- Indexed Sequential File = 색인 순차 접근 방식 = ISAM = Index Sequential Access Method
- 순차 파일과 직접 파일에서 지원하는 편성 방법이 결합된 형태
- 각 레코드를 키 값 순으로 논리적으로 저장하고 시스템은 각 레코드의 실제 주소가 저장된 색인을 관리
- 레코드 참조시 색인을 탐색한 후 색인이 가리키는 포인터를 사용하여 참조
- 자기디스크에서 많이 사용
- 자기테이프에서 사용 불가
- 순차처리나 임의처리가 모두 가능
- 효율적인 검색 가능하고 삽입 삭제 갱신이 용이
- 색인영역이나 오버플로 영역을 설정해야하므로 기억공간이 필요
- 색인을 이용하여 참조하기 때문에 접근 시간이 직접파일보다 느리다.
구성
- 기본 영역 : Prime Area 실제 레코드가 기록되는 데이터 영역
- 색인 영역 : Index Area 레코드들의 위치를 찾아가는 색인이 기록되는 영역
- 오버플로 영역 : Overflow Area 예비로 확보해 둔 영역
분할파일
- 하나의 파일을 여러 개로 분할하여 저장하는 형태
- 여러 개의 순차 서브파일로 구성된 파일
- 백업과 같이 하드디스크에 있는 내용을 테이프와 같은 보조기억장치에 저장할 때 사용
- 파일의 크기가 클 경우 사용
디렉터리 구조
1단계 디렉터리 구조
- 단일 디렉터리 구조
- 모든 파일이 하나의 디렉터리 내에 위치하여 관리되는 구조
- 모든 파일들이 유일한 이름을 갖고 있어야함
- 모든 파일이 같은 디렉터리 내에 유지되므로 이해가 쉬움
- 파일이나 사용자의 수가 증가하면 파일 관리가 복잡
- 파일명은 일반적으로 내용과 관련된 이름을 사용
- 파일명의 길이는 시스템에 따라 제한을 받음
2단계 디렉터리 구조
- 중앙에 마스터 파일 디렉터리(MFD)가 있고, 그 아래 사용자별 파일 디렉터리(UFD)가 있는 2계층 구조
- 마스터 파일 디렉터리는 각 사용자의 정보와 사용자 파일 디렉터리를 가리키는 포인터를 갖고 있으며 사용자 파일 디렉터리를 관리
- 사용자 파일 디렉터리는 오직 한 사용자가 갖고 있는 파일들에 대한 정보를 가짐
- 각 사용자는 다른 사용자의 파일 디렉터리를 검색할 수 없음
- 한 사용자 파일 디렉터리에서는 유일한 파일이름을 사용해야되나 서로 다른 사용자라면 동일한 파일이름을 사용할 수 있다.
트리 디렉터리 구조
- 하나의 루트 디렉터리와 여러 개의 서브 디렉터리로 구성된 구조
- DOS, UNIX, Windows의 운영체제에서 사용되는 디렉터리 구조
- 디렉터리 탐색은 포인터를 사용
비순환 그래프 디렉터리 구조
- 비주기 그래프 디렉터리 = Acyclic Graph Directory
- 하위 파일이나 하위 디렉터리를 공동으로 사용할 수 있는 것
- 사이클이 허용되지 않는 구조 = 하위 디렉터리가 상위 디렉터리나 상위 파일을 공유할 수 없다.
- 하나의 파일이나 디렉터리가 여러 개의 경로로 접근이 가능
- 디렉터리 구조가 복잡하고 시스템 성능이 저하됨
- 공유된 파일을 삭제할 경우 고아포인터(Dangling Pointer)가 발생
일반적인 그래프 디렉터리 구조
- 트리 구조에 링크를 첨가시켜 사이클을 허용하는 그래프 구조
- 디렉터리와 파일 공유에 완전한 융통성
- 탐색 알고리즘이 간단하여 파일과 디렉터리를 액세스하기 쉬움
- 사용되지 않은 디스크 공간을 되찾기 위해 가비지 컬렉션이 필요
- 가비지 컬렉팅을 해야되기에 참조 계수기가 필요
디스크 공간 할당 방법
연속 할당
- Contiguous Allocation
- 연속된 공간에 할당하는 방법으로 생성되는 파일의 크기만큼 공간이 있어야함
- 논리적으로 연속된 레코드가 물리적인 저장공간에도 연속적으로 저장됨
- 파일의 생성과 삭제가 반복되면 단편화 발생
- 단편화를 줄이기 위해 재배치에 의한 주기적인 압축이 필요
- 파일의 크기가 시간에 따라 변경될 경우 구현하기 어려움
불연속 할당
- Non-Contiguous Allocation
- 디스크 공간을 일정 단위로 나누어 할당하는 기법
섹터 단위 할당
- 하나의 파일이 디스크 섹터 단위로 분산되어 할당되는 방법
- 하나의 파일에 속하는 섹터들이 연결 리스트로 구성
- 디렉터리는 파일의 시작과 마지막 주소에 대한 정보만 가지고 있음
- 섹터 단위로 저장되므로 디스크 단편화가 발생되지 않음
- 파일의 크기만큼 연속된 공간이 없어도 저장 가능
- 레코드 검색시 파일이 속한 레코드를 순차적으로 검색해야 하므로 탐색시간이 오래 걸린다.
- 직접 접근이 불가능
블록 단위 할당
- 하나의 파일이 연속된 여러 개의 섹터를 묶은 블록 단위로 할당되는 방법
블록 체인 기법
- 할당 단위를 블록으로 구성하는 방법
- 하나의 블록은 러 개의 섹터로 구성
- 디렉터리는 파일의 첫 번째 블록을 가리키는 포인터를 가지고 있음
- 하나의 블록은 데이터와 다음 블록을 가리키는 포인터로 구성
- 삽입 삭제시 포인터만 수정하면 되므로 간단
- 순차적으로 탐색해야 되므로 속도가 느림
색인 블록 체인 기법
- 인덱스 블록 체인 기법
- 파일이 할당된 블록의 모든 포인터를 색인 블록에 모아 직접 접근이 가능
- 디렉터리는 파일의 색인 블록에 대한 포인터를 갖고 있음
- 색인 블록의 포인터를 사용하여 직접 접근이 가능해 탐색 시간이 빠름
- 삽입시 색인 블록을 재구성
블록 지향 파일 사상 기법
- 포인터 대신 파일 할당 테이블(File Allocation Table)에 있는 블록번호를 사용하는 기법
- 파일 할당 테이블에는 각 블록에 해당하는 항목이 있고 각 항목은 블록번호에 의해 색인된다.
- 블록 번호에 의해 색인된 테이블의 각 항목은 다음 블록의 블록번호를 가짐
- 디스크 구조의 특성상 블록번호는 실제 기억공간의 주소로 쉽게 변환 가능
- 데이터의 삽입 삭제가 용이
- 디렉터리는 파일 할당 테이블의 시작위치를 가지고 있음
자원 보호
- 불법적으로 접근하는 것을 제어
- 자원의 물리적인 손상을 예방하는 기법
- 접근 제어 행렬, 전역 테이블, 접근 제어 리스트, 권한(자격) 리스트
접근 제어 행렬 기법
- Access Control Matrix
- 자원보호의 일반적인 모델
- 객체에 대한 접근 권한을 행렬로써 표시한 기법
전역 테이블 기법
- Global Table
- 가장 단순한 구현 방법
- 세 개의 순서쌍인 영역, 개체, 접근 권한의 집합을 목록 형태로 구성
- 테이블이 매우 커서 주기억장치에 저장할 수 없으므로 가상기억장치 기법을 사용해야한다.
- 주기억장치에 저장될 경우 공간 낭비
접근 제어 리스트
- Access Control List
- 접근 제어 행렬에 있는 각 열, 즉 객체를 중심으로 접근 리스트를 구성
- 각 객체에 대한 리스트는 영역, 접근권한의 순서쌍으로 구성되며 객체에 대한 접근 권한을 갖는 모든 영역을 정의
권한 리스트 기법
- Capability List = 자격 리스트
- 접근 제어 행렬에 있는 각 행, 즉 영역을 중심으로 권한 리스트를 구성
- 권한 리스트는 영역과 결합되어 있지만 그 영역에서 수행중인 프로세스가 직접 접근할 수는 없다.
- 권한 리스트는 운영체제에 의해 유지되며 사용자에 의해 간접적으로만 접근이 되는 보호된 객체이기 때문
Lock-Key 기법
- 접근 제어 리스트와 권한 리스트를 절충한 기법
- 객체는 Lock 영역은 Key라 불리는 유일 값을 가지고 있어 영역과 객체가 일치하는 경우만 해당 객체를 접근 가능
파일 보호 기법
- 자원 보호 기법과 마찬가지로 파일에 대한 일방적인 접근과 손상 및 파괴를 방지하기 위함
- Naming, Password, Access Control
- 파일의 명명 : 접근하고자 하는 파일 이름을 모르는 사용자를 접근 대상에서 제외
- 비밀번호
- 접근 제어 : 공유 데이터에 접근할 수 있는 권한을 제어, 각 파일마다 접근 목록을 둔다.
보안
- 컴퓨터 시스템 내에 있는 프로그램과 데이터에 대해 통제된 접근 방식을 어떻게 제공할 것인가를 다루는 것
- 컴퓨터 시스템 내의 자원을 보호하고 대응하기 위한 일련의 정책과 행위
- 프로그램, 프로세스 또는 사용자의 허용된 권한 외의 접근을 제한
보안 요건
- 기밀성 : Confidentiality 자원은 인가된 사용자에게만 접근이 허용, 노출되어도 데이터를 읽을 수 없음
- 무결성 : Integrity 오직 인가된 사용자만 수정 가능
- 가용성 : Availability 인가받은 사용자는 언제든 사용 가능
- 인증 : Authentication
- 부인 방지 : NonRepudiation 데이터를 송수신한 자가 송수신 사실을 부인할 수 없도록 송수신 증거 제공
보안 유지 기법
- 외부 보안
- 시설보안
- 운용보안 : 사용자마다 인가된 등급 부여
- 사용자 인터페이스 보안 : 사용자의 신원 확인
- 내부 보안
- 하드웨어나 운영체제에 내장된 보안 기능 사용
- 하드웨어나 운영체제 내에 접근 제어 코드를 내장
보안 위험 감소 방법
- 사용자 감시 : User Surveillance
- 위험 탐지 : Threat Monitoring
- 확충 : Amplification
- 패스워드 보호
정보 보안 기법
비밀키 시스템
- Private Key System
- 동일한 키로 데이터를 암호화하고 복호화하는 대칭 암호화 기법
- 암/복호화의 속도가 빠르며 알고리즘이 단순
- 파일 크기가 작음
- 사용자가 많아지면 관리할 키의 수가 상대적으로 많아지고 키의 분배가 어려워짐
- DES (Data Encryption Standard)
공용키 시스템
- Public Key System
- 서로 다른 키로 데이터를 암호화하고, 복호화하는 비대칭 암호화 기법
- 키의 분배가 용이하고 관리해야할 키의 개수가 적음
- 암/복호화 속도가 느리며 알고리즘이 복잡
- 파일의 크기가 큼
- RSA (Rivest Shamir Adleman)
디지털 서명 기법
- Digital Signature Mechanism
- 고유의 전자 서명으로 송신자가 전자 문서 송신 사실을 부인할 수 없도록 함
- 작성 내용이 송수신 과정에서 변조된 사실이 없다는 것을 증명
- 공개키 암호화 기법을 사용
여분 정보 삽입 기법
- Traffic Padding Mechanism
- 정상 데이터에 여분의 거짓 데이터를 삽입하여 불법적으로 데이터를 분석하는 공격을 방어하는 기법
- 삽입한 거짓 데이터가 정상 데이터와 구별이 되지 않아야함
인증 교환 기법
- Authentication Exchange Mechanism
- 수신자가 메세지 전송 도중 변경되지 않았음을 확인할 수 있다.
- 메세지가 정당한 상대방으로부터 전달된 것을 확인할 수 있다.
접근 제어 기법
- Access Control Mechanism
- 데이터에 접근이 허가된 사용자에게만 데이터 사용을 허용하는 정책을 강화하기 위해 사용
Fault Tolerant System
- 고장 방지 시스템 = 결함 허용 시스템
- 시스템 부품 고장이나 프로그램에 버그가 있더라도 시스템 전체에 장애가 발생하지 않도록 시스템을 구성하는 방법
- Dual System : 같은 장치를 두 개로 구성하여 하나가 고장나면 다른 하나를 작동시켜 작업을 처리하는 시스템
다중 처리기
- Multi Processor
- 하나의 시스템에 여러 개의 처리기를 두어 하나의 작업을 각 처리기에게 할당하여 수행하도록 하는 것을 의미
- 강결합 시스템
- 실행시간이 감소되고 전체 효율을 향상
- 하나의 운영체제에 의해 전체 시스템이 제어
- 하나의 공통된 기억장소를 가짐
- 프로세서 중 하나가 고장 나도 다른 프로세서들에 의해 작업이 처리되므로 장애극복 가능
- 각 프로세서는 자체 계산능력을 가짐
- 프로세서나 주변장치 등을 공동으로 사용
- 주변장치가 기억장치에 연결되는 방식에 따라 시분할 및 공유버스, 크로스바 교환행렬, 하이퍼 큐브 방식으로 나뉨
시분할 및 공유 버스 연결 방식
- 각종 장치들을 버스 하나로 연결한 방식
- 장치 연결이 단순하고 경제적이며 융통성이 있음
- 장치 추가 용이
- 한 시점에 하나의 전송만 가능
- 버스가 고장나면 시스템이 먹통
- 시스템 전체 전송량이 버스의 전송률에 의해 제한
- 장치들의 경쟁 상태가 발생하면 시스템 효율이 저하
크로스바 교환 행렬 연결 방식
- 시분할 및 공유 버스 방식에서 버스의 수를 기억장치의 수만큼 증가시켜 연결한 방식
- 각 기억장치마다 다른 경로를 사용 가능
- 두 개의 서로 다른 기억장치를 동시에 참조
- 장치의 연결이 복잡
하이퍼 큐브 연결 방식
- 다수의 프로세서들을 연결하는 방식으로 비교적 경제적
- 네 개의 프로세서를 두 개 씩 서로 이웃하게 연결한 사각형 모양의 2차원 하이퍼 큐브를 만들고, 여기에 대응점을 각각 연결하여 3차원 하이퍼 큐브를 형성하고… 계속 늘린다.
- 다수의 프로세서를 연결할 수 있으며 확장성이 좋음
- 많은 프로세서를 연결시에 비용이 급속도로 증가
- 하나의 프로세서에 연결되는 다른 프로세서의 수가 (연결점) n개일 경우 프로세서는 총 2^n개가 필요
다중 포트 기억장치 연결 방식
- 시분할 및 공유 버스방식과 크로스바 교환 행렬 방식을 혼합한 형태의 방식
- 많은 수의 프로세서를 쉽게 연결 가능
- 다양한 연결이 가능하다.
- 전송 시간이 비교적 느림
다중 처리기의 운영체제 구조
주종 처리기
- Master / Slave 처리기
- 하나의 프로세서를 Master로 지정하고 나머지는 Slave로 지정하는 구조
- 주 프로세서가 고장나면 전체 시스템 먹통
- 주 프로세서만 입출력을 수행하므로 비대칭 구조
- 주 프로세서
- 입출력과 연산 담당
- 운영체제 수행
- 종 프로세서
- 연산만 담당
- 입출력발생시 주프로세서에 요청
- 사용자 프로그램만 담당
분리 실행 처리기
- 주/종처리기의 비대칭성을 보완하여 각 프로세서가 독자적인 운영체제를 가지고 있도록 구성
- 각 프로세서에서 발생하는 인터럽트는 해당 프로세서에서 해결
- 한 프로세서에 일이 밀려있어도 다른 프로세서는 유휴상태가 될 수 있다.
대칭적 처리기
- 분리 실행 처리기를 보완하여 여러 프로세서들이 완전한 기능을 갖춘 하나의 운영체제를 공유하여 수행하는 구조
- 가장 복잡하지만 가장 강력함
- 여러 개의 프로세서가 동시에 수행 가능
- 모든 프로세서가 동등한 권한을 가짐
- 메모리와 입출력장치를 공유
- 프로세서간의 통신은 공유 메모리를 통해 이루어짐
- 공유된 장치를 사용할 때 대립문제가 발생하므로 대비책 필요
- 프로세서의 수를 늘려도 시스템 효율은 향상되지 않음
약결합 시스템
- Loosely Coupled System = 분산 처리 시스템
- 각 프로세서마다 독립된 메모리를 가진 시스템
- 둘 이상의 독립된 컴퓨터 시스템을 통신망을 통해 연결한 시스템
- 각 시스템마다 독자적인 운영체제를 가짐
- 각 시스템마다 독자적인 운영이 가능하므로 프로세서간 결합력이 약함
- 프로세서 간 통신은 메세지 전달이나 원격 프로시져 호출을 통해 이뤄짐
강결합 시스템
- Tightly Coupled System = 다중 처리 시스템 = 병렬 처리 시스템
- 동일 운영체제 하에서 여러 개의 프로세서가 하나의 메모리를 공유하여 사용하는 시스템
- 하나의 운영체제가 모든 프로세서와 시스템 하드웨어를 제어
- 프로세서 간의 통신은 공유 메모리를 통해 이뤄짐
- 하나의 메모리를 사용하므로 프로세서 간의 결합력이 강함
- 공유 메모리를 차지하는 프로세서 간의 경쟁을 최소화 해야함
분산 처리 시스템
- Distributed Processing System
- 약결합 시스템으로 독립적인 처리능력을 가진 컴퓨터 시스템을 통신망으로 연결한 시스템
- 사용자는 각 컴퓨터 위치를 몰라도 자원을 사용 가능
- 중앙 집중형 시스템에 비해 개발이 어려움
- 보안 문제 발생
- 시스템 유지상 통일성을 잃기 쉬움
- 시스템 설계가 복잡하고 데이터 처리 서비스의 질이 떨어짐
설계 목적
- 자원 공유
- 연산 속도 향상
- 신뢰도 향상 : 여러 시스템 중 하나의 시스템에 오류가 발생해도 다른 시스템에서 처리 가능
- 컴퓨터 통신 : 지리적으로 멀어도 정보 교환 가능
투명성
- Transparence
- 분산 처리 운영체제에서 구체적인 시스템 환경을 사용자가 알 수 없도록 함
- 환경을 알지 못해도 원하는 작업을 수행할 수 있도록 지원
- 자원의 위치나 정보가 변경되더라도 사용자가 이를 인식하지 못하게 함
종류
- 위치 투명성 : 물리적 위치를 몰라도 자원에 접근 가능
- 이주 투명성 : 사용자나 응용 프로그램의 동작에 영향을 받지 않고 시스템 내에 있는 자원을 이동 가능
- 복제 투명성 : 자원의 복제를 사용자에게 통지할 필요 없이 자유로이 복제
- 병행 투명성 : 자원을 병행 처리하고 공유 가능
- 접근 투명성
- 성능 투명성 : 성능을 증가시키기 위해 시스템 재구성 가능
- 규모 투명성 : 시스템 구조나 알고리즘의 변경 없이 확장 가능
- 고장 투명성 : 고장이 나도 작업 가능
계층구조
- 하드웨어 계층
- 기억장치 계층
- 프로세스 계층
- 파일시스템 계층
- 사용자 프로그램 계층
분산 파일 시스템
- 여러 사이트에 분산되어 있는 서버, 장치, 사용자들에 대한 파일 서비스를 제공하는 시스템
- 분산 시스템이 통신망으로 연결되어 있으므로 파일 서비스는 여러 개의 기억장치에서 네트워크를 통해 이뤄짐
- 서로 다른 컴퓨터 사용자 간에 정보를 쉽게 공유 가능
- NFS : 선 마이크로 시스템에서 개발
- LoCUS : 캘리포니아 대에서 개발
- Andrew : 카네기 멜론 대학에서 개발
분산 처리 시스템 분류
위상에 따른 분류
망형 - 완전 연결
- Full Connection
- 각 사이트들이 시스템 내의 다른 모든 사이트와 직접 연결된 구조
- 사이트 수가 n개이면 링크 수는 n(n - 1) / 2
- 모든 사이트를 연결해야 하므로 기본비용은 많이 들지만 통신비용은 적다.
- 하나의 링크가 고장나도 다른 링크를 이요하므로 신뢰성이 높다.
망형 - 부분 연결
- Partially Connection
- 시스템 내의 일부 사이트들 간에만 직접 연결하는 구조
- ㅈ기접 연결되지 않은 사이트는 연결된 타 사이트를 통해 통신
트리 또는 계층형
- Tree, Hierarchy
- 분산 처리 시스템의 가장 대표적인 형태
- 각 사이트들이 트리 형태로 연결된 구조
- 부모 사이트의 자식 사이트는 그 부모 사이트를 통해 통신이 이뤄짐
- 부모 사이트가 고장나면 자식 사이트는 통신이 불가능
성형
- 스타형
- 모든 사이트가 하나의 중앙 사이트에 직접 연결되어 있고 다른 사이트와는 연결되어 있지 않은 구조
- 기본 비용은 사이트 수에 비례하며 통신비용이 적다.
- 구조가 간단하고 보수 및 관리가 용이하다.
- 중앙 사이트가 고장나면 다 먹통
- 데이터 전송이 없는 사이트가 접속된 통신회선은 휴지 상태가 된다.
환형
- 링형
- 시스템 내의 각 사이트가 인접하는 달느 두 사이트와만 직접 연결된 구조
- 정보는 단방향 또는 양방향으로 전달 가능
- 특정 사이트가 고장나면 통신이 불가능해짐
다중 접근 버스 연결
- Multi Access Bus Connection
- 시스템 내의 모든 사이트들이 공유 버스에 연결된 구조
- 기본 비용은 사이트 수에 비례하고 통신 비용은 일반적으로 저렴
범위에 따른 분류
LAN
- 근거리 통신망
- 버스형이나 링형 사용
WAN
- 광대역 통신망
- 국가-국가간 대륙-대륙간
- 일정 지역 사이트를 근거리 통신망으로 연결 후 각 근거리 통신망을 연결하는 방식
프로세서 모델에 따른 분류
클라이언트/서버 모델
- 클라이언트와 서버가 하나의 작업을 분산 협동 처리 하는 방식
- 프로그램의 모듈성과 융통성을 증대
프로세서 풀 모델
- 하나 이상의 프로세서 풀과 여러 서버가 연결된 형태
혼합 모델
- Hybrid Model
- 클라이언트/서버 모델과 프로세서 풀 모델을 혼합한 형태의 방식
- 사용자는 워크스테이션이나 단말기를 통해 시스템에 접근
운영체제에 따른 분류
네트워크 운영체제
- 독자적인 운영체제를 가지고 있는 시스템을 네트워크로 구성한 것
- 사용자가 원격 시스템으로 로그인하거나 원격 시스템으로부터 필요한 자원을 전달 받는 방식
- 사용자는 시스템의 각 장치에 대해 알고 있어야 함
- 지역적으로 멀리 떨어진 대규모 시스템에 사용
- 설계와 구현이 쉽다.
- 자원 공유가 번거로움
분산 운영체제
- 하나의 운영체제가 모든 시스템 내의 자원을 관리하는 것
- 원격에 있는 자원을 마치 지역 자원인 것과 같이 쉽게 접근하여 사용하는 방식
- 사용이 편리하고 시스템 간 자원 공유가 용이
- 하나의 운영체제가 시스템 전체를 관리해야 하므로 설계와 구현이 어려움
- 요청한 컴퓨터에 요청된 컴퓨터의 자원이 이주됨으로 자원 사용 가능
- 데이터 이주
- 데이터를 요청한 사용자의 컴퓨터로 해당 데이터의 복사본을 전송 시키는 방식
- 사용자가 데이터가 필요하지 않을 경우 데이터의 복사본을 원래 컴퓨터로 돌려보냄
- 연산 이주
- 요청한 데이터가 있는 컴퓨터에서 데이터를 처리하여 해당 결과를 요청한 컴퓨터에게 보내는 방식
- 결과를 전송시키는 것
- 프로세스 이주 : 프로세스의 전체 또는 일부를 다른 컴퓨터에서 실행되도록 하는 방식
UNIX
- 서버 컴퓨터에서 사용되는 운영체제
- 시분할 시스템을 위해 설계된 대화식 운영체제
- 소스가 공개된 개방형 시스템
- 크기가 작고 이해하기 쉬움
- 이식성이 높고 프로세스 간 호환성이 높음
- Multi User, Multi Tasking
- 트리 구조의 파일 시스템
- 하나 이상의 작업을 백그라운드에서 수행하므로 여러 작업을 동시 처리 가능
구성
- 하드웨어
- 커널
- 쉘
- 유틸리티
- 사용자
커널
- UNIX의 핵심 부분
- 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행
- 하드웨어를 보호하고 프로그램과 하드웨어 간의 인터페이스 역할
- 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스간 통신, 데이터 전송 및 변환
쉘
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스 역할
- DOS의 COMMAND.COM과 같은 기능
- 보조기억장치에 명령어가 포함된 파일로 존재하며 교체처리가 가능
- 주기억장치에 상주하지 않는다.
유틸리티
- 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용
- 에디터, 컴파일러, 인터프리터, 디버거
- DOS의 외부명령어
프로세스간 통신
- 각 프로세스는 시스템 호출을 통해 커널의 기능을 사용
- 프로세스 간 통신은 시그널, 파이프, 소켓 등을 사용
- 시그널 : 간단한 메세지를 이용하여 통신, 초기 UNIX
- 파이프 : 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신
- 소켓 : 프로세스 간의 대화를 가능하게 하는 쌍방향 통신
UNIX 파일 시스템
파일 시스템
- 트리 구조
- 디렉터리나 주변장치를 파일과 동일하게 취급
- 파일 생성 및 삭제, 보호 기능을 가짐
- 일반파일, 디렉터리파일, 특수파일 형식 제공
파일 시스템 구조
- 디스크를 블록으로 분류하여 배치한 구조
- 부트 블록, 슈퍼블록, 아이노드 블록, 데이터 블록으로 구성
- 부트 블록 : 부팅 시 필요한 코드를 저장
- 슈퍼 블록 : 전체 파일 시스템에 대한 정보를 저장
- Index-Node 블록 : 각 파일이나 디렉터리에 대한 모든 정보를 저장하고 있는 블록
- 파일 소유자의 사용자 번호 및 그룹 번호
- 파일 크기
- 파일 타입
- 생성 시기
- 최종 변경 시기
- 최근 사용 시기
- 파일 보호 권한
- 파일 링크 수
- 데이터가 저장된 블록의 시작 주소
- 데이터 블록 : 디렉터립려로 디렉터리 엔트리와 실제 파일에 대한 데이터가 저장된 블록
프로세스 관련 명령어
- fork : 프로세스 생성, 하위 프로세서 호출, 프로세스 복제
- exec : 프로세스 수행
- exit : 프로세스 종료
- wait : fort 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event를 기다림
- kill : 프로세스 제거
- getpid : 자신의 프로세스 아이디
- getppid : 부모 프로세스 아이디
- & : 백그라운드 처리를 위해 명령의 끝에 입력
- signal : 신호를 받았을 때 프로세스가 취할 동작 지정
- pipe : 프로세스 간 통신을 위한 경로 설정
파일 및 디렉터리 명령어
- creat : 파일 생성
- open : 파일을 사용할 수 있는 상태로 준비
- close : 파일 닫기
- cp : 복사
- mv : 파일 이동 또는 이름 변경
- rm : 파일 삭제
- cat : 파일 내용 표시
- chmod : 파일 사용 허가 지정
- chown : 소유자 변경
- find : 파일 찾기
- mknod : 특수 파일 생성
- mount : 파일 시스템 마운팅
- mkfs : 파일 시스템 생성
- fsck : 파일 시스템 검사
- mkdir : 디렉터리 생성
- chdir : 디렉터리 위치 변경
- rmdir : 디렉터리 삭제
- ls : 디렉터리 파일 목록 확인
- finger : 사용자 정보 표시
Windows
- GUI
- 선점형 멀티태스킹 : 동시에 여러 개의 프로그램을 실행하는 멀티 프로그래밍을 하면서 운영체제가 각 작업의 CPU 이용시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식
- FAT 32 파일 시스템 사용
- Plug and Play
- OLE 사용 : 다른 여러 프로그램에서 작성된 문자가 르미 등의 개체를 현재 작성 중인 문서에 자유롭게 연결하거나 삽입하여 편집할 수 있는 기능
- 255자의 긴 파일명
- Single User 시스템
MS-DOS
- CUI
- Single User
- Single Tasking
- 시스템 파일 : 도스의 핵심파일로 주변장치의 입출력과 시스템 전체를 통제, MSDOS.SYS와 IO.SYS가 있다.
- 명령어 처리기 : COMMAND.COM
- 자동 일괄 처리 파일 : AUTOEXEC.BAT
- 환경 설정 파일 : CONFIG.SYS
명령어
내부 명령어
- COMMAND.COM에 포함되어 있고 메모리에 항상 상주되어 있다.
- DIR : 파일 목록 표시
- COPY : 복사
- TYPE : 파일 내용 표시 (like cat)
- REN : 파일 이름 변경
- DEL : 파일 삭제
- MD : 디렉터리 생성
- CD : 디렉터리 위치 변경
- RD : 디렉터리 삭제
- CLS : 화면 내용을 지움
- VER : 버전 표시 (like uname)
- PATH : 파일 탐색 경로 지정
외부 명령어
- 실행과정이 복잡하거나 자주 사요하지 않는 것
- 디스크에 파일로 저장
- 처리속도가 느림
- UNDELETE : 삭제한 파일 복원
- SYS : 시스템 파일 복사
- ATTRIB : 파일 속성 변경 (like chmod)
- MOVE : 파일 이동
- FIND : 파일 찾기
- FORMAT : 포맷
- UNFORMAT : 포맷한 디스크를 복원
- CHKDSK : 디스크 상태 점검 (like df)
- DISKCOPY : 디스크 단위 복사
- DISKCOMP : 디스크 비교