Part1 ( OS )
OS (Operating System)
컴퓨터 시스템의 자원들을 효율적으로 관리하여, 사용자가 컴퓨터를 편리하고 효과적으로
사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
※ 목적
- 처리 능력 향상: 시간당 작업 처리량(Throughput), 평균 처리시간 개선
- 신뢰성 향상: 실패 없이 주어진 기능을 수행할 수 있는 능력
- 응답시간 단축: 사용자가 시스템에 의뢰한 작업 반응 시간 단축
- 자원 활용률 향상: 자원 공유, 상호배제를 통해 자원 효율적 활용
- 가용성 향상: 고장과 오류가 발생해도 운영 영향 최소화
발달순서 | 시스템 분류 | 설명 |
1 | Batch Processing | - 유사 작업 일괄처리, 긴 러닝 타임 - 하드웨어의 효율적 이용은 가능 / 실시간 처리 미흡 |
2 | Multi Programming | - CPU 가동률 극대화 → 유휴 시간 최소화 - 스케쥴링 의한 작업 수행, 정교한 메모리 관리 및 스케줄링 必 |
3 | Time Sharing / Multi-tasking | - Multi Programming의 논리적 확장 - 사용자와 시스템 간 Interactive한 서비스 |
4 | Multi-Processing | - 여러 개의 CPU로 다중작업 구현 → 가용성 증대 |
5 | Real-time | - 시스템 서비스 요청 발생 시 시간 제약 발생 → 즉시 처리 후 결과 출력 |
6 | Multi-mode | - 일괄처리, 시분할, 다중처리, 실시간 처리를 한 시스템에서 모두 제공 |
7 | Distributed | - 독립적 운영체제의 협업 |
※ 주요 자원 관리 기능
프로세스 관리 | 프로세스 스케줄링 및 동기화 관리, 프로세스 생성 / 제거, 시작 및 정지, 메시지 전달 등 |
기억장치 관리 | 프로세스에 메모리 할당 및 회수 관리 |
주변장치 관리 | 입 / 출력 장치 스케줄링 및 점유 관리 |
파일 관리 | 파일 생성, 삭제, 변경, 유지 관리 |
Part 2 ( Process )
Process Management
※ Proccess ( 실행 중인 프로세스 ) vs Thread (제어의 흐름)
구분 | Process | Thread |
개념 | - 레지스터, 스택, 포인터, 실행중인 프로그램, 데이터 등의 집합체 - 프로세서에 의해 수행되는 프로그램 단위로, 현재 실행 중이거나 곧 실행 가능한 PCB(Process Control Block)를 가진 프로그램 |
- 프로세스에서 실행의 개념만을 분리 프로세스 구성 = 제어의 흐름(실행 단위) + 실행 환경 → 스레드: 프로세스의 실행 부분 담당 |
상호통신 | - System Call - Call 종료 시까지 전체 자원 Blocking | - Library Call - 요청 Thread만 Blocking |
처리방식 | 자원 할당을 위한 기본 구분 단위 | CPU를 이용한 기본 작업(단위로 구분) |
부하 | - Context Switching으로 인한 부하 발생 - 프로세스 자원 할당 시 부하 발생 | 프로세스에 비해 상대적으로 부하 발생 少 |
※ 프로세스 상태 전이 ( Process Sate Transition )
- 운영체제-프로세스 실행 제어, 프로세스에 대한 정보 유지 등 담당
- 프로세스 실행 결정 및 필요한 시스템 자원을 할당하는 과정
- 프로세스 상태 변환을 위해 두 종류의 CPU 스케쥴러(작업 스케쥴러, 프로세스 스케쥴러) 사용
※ 프로세스 상태전이도 ( Process State Transition Diagram )
프로세스 실행 → 모든 프로세스 준비 큐(FIFO) 진입 → 준비 큐 프로세스가 CPU 스케줄링 알고리즘에 의해 CPU 점유 → 프로세스 실행
예외 case
- CPU에서 실행 중인 프로세스가 Time out이 될 경우, 다시 준비 큐 뒤로 들어가서 CPU 점유까지 대기
- 실행 중인 프로세스가 디스크 입출력 같은 작업이 발생할 경우, 대기 상태가 되고 입출력 수행 (입출력 완료 시 다시 준비상태로 들어가 대기)
※ Active 모드에서의 프로세스 상태 변환
Active 생성 → 준비 |
준비 큐가 비어있을 때 (작업 스케줄러 담당) |
Dispatch 준비 → 실행 |
준비 큐에 있는 하나의 프로세스를 선택해 CPU 할당 (프로세스 스케줄러 담당) |
Time Run out 실행 → 준비 |
- CPU를 할당받은 프로세스가 CPU의 제한된 사용시간을 모두 쓴 경우 발생 - OS 자체의 CPU 서비스 요청 시 전이됨 (선점) (*CPU 스케줄링 정책에 따라 우선순위가 높은 프로세스에게 CPU를 양보할 때) |
Blocked 실행 → 슬립 (대기) |
CPU를 할당 받은 프로세스가 I/O 요구, 다른 자원 요구 등 CPU 이외의 서비스 작업을 원할 때 발생 |
Wake UP 슬립 → 준비 (대기) |
대기 중이던 사건(조건) 처리가 끝났을 때 발생 |
Release 실행 → 종료 |
프로세스의 정상/비정상 종료 시 발생 |
※ 문맥 교환 (Context Switching)
- CPU가 이전의 프로세스 상태를 PCB에 보관 후, 또 다른 프로세스의 정보를 읽어와 레지스터에
적재하는 과정
- 멀티프로그래밍 환경에서 문맥교환 과정이 이루어지며, 병행처리를 수행한다.
※ 입출력 대기 케이스
- 프로세스 상태 변경
- 인터럽트 발생
- 실행 중인 프로세스가 CPU 사용을 허가받은 시간( Quantum )을 모두 소모
- 선점형 스케줄러 사용
- 실행 중인 프로세스 보다 높은 우선 순위를 가진 프로세스 도착
※ PCB ( Process Control Block )
- OS가 프로세스를 제어하기 위해 정보를 저장해 놓는 곳, 프로세스의
상태 정보를 저장하는 구조체
- 프로세스 상태 관리와 문맥교환을 위해 필요
- 프로세스 생성 시 만들어지며, 주기억장치에서 유지됨
※ 유지되는 정보
- PID : 프로세스 고유 번호
- 포인터 : 다음 실행 될 프로세스의 포인터
- 상태 : 준비, 대기, 실행 등
- Register save area : 레지스터 관련 정보
- Priority : 스케줄링 및 프로세스 우선순위
- Account : CPU 사용시간, 실제 사용된 시간
- Memory Pointers : 메모리 관리 정보
- 입출력 상태 정보
- 할당된 자원 정보
Part 3 ( CPU Scheduling Techniques )
컴퓨터의 자원(Resource)을 효율적으로 사용하기 위한 정책을 계획하는 것
(= 특정 자원을 요청 중인 프로세스를 대상으로 CPU 자원 할당해 주는 순서 지정)
※ 목적
- CPU 활용 극대화 : CPU 유휴 시간 최소화
- 응답시간 단축 : 프로세스 평균 응답 시간 ↓
- 공평한 자원 활용 : 주어진 기간 동안 특정 자원 사용 효율화
- Multi - tasking 효율화 : 다중 프로세스의 공평한 처리
※ 스케줄러 역할에 의한 구분
정기 스케줄러 | - 상위(High level, long term) 스케줄링, 작업(Job) 스케줄링 - 어떤 작업이 시스템의 자원들을 차지할 것인지 결정(큐에 적재) |
중기 스케줄러 | - 어떤 프로세스들이 CPU를 할당받을 것인지 결정 - CPU를 사용하려는 프로세스 간 중재 → 일시 보류 & 재활성화 |
단기 스케줄러 | - 하위 스케줄링, CPU 스케줄링, 프로세스 스케줄링이라고도 함 - CPU 스케줄러인 Dispatcher에 의해 동작(프로세스에 CPU 할당) |
※ 스케줄러 점유 방식에 의한 구분
선점 (Preemptive) | 비선점 (Non-preemptive) | |
개념 | 프로세스가 CPU 점유 중일 때 다른 프로세스가 CPU 점유 가능 | 프로세스가 CPU 해제 시까지 다른 프로세서는 대기 |
장점 | - 빠른 응답, 모바일, RTOS - 대화식 시분할에 적합 |
- 응답 시간 예상 용이, Batch Process에 적합 - 프로세스에 대한 요구 공정하게 처리 |
단점 | Overhead 발생 (Context-Switching) | 짧은 작업에도 장기간 대기 |
스케줄링 기법 | Round-robin, SRT | FCFS, SJF, HRN |
※ CPU 스케줄링 기법
1. FCFS ( First Come First service )
- 대기 큐에 도착한 순서에 따라 CPU 할당
2. SJF ( Shortest Job First )
- 기다리고 있는 작업 중 수행 시간이 가장 짧다고 판단된 프로세스 먼저 수행
- FCFS에 비해 평균 대기시간 감소, 큰 작업은 대기시간 예측 어려움
3. Round - Robin
- FCFS에 의해 내보내짐 + 각 프로세스에 같은 크기의 CPU 시간 할당
- 시간이 만료될 때까지 처리 미완료 시 CPU는 대기 중인 다음 프로세스로 이동(Preemptive), 실행 중이던 프로세스는 준비 완료 리스트 맨 뒤로 이동
4. SRT ( Shortest Remaining Time )
- 새로 도착한 프로세스 포함, 수행 시간이 가장 짧다고 판단된 프로세스 먼저 수행
- 실행 중인 프로세스라도 남은 처리 시간이 더 짧다고 판단되는 프로세스가 생기면 언제라도 프로세스 선점
- SJR + 선점 방식, 실시간 시스템에 유리
5. Multi Level Queue
- 여러 종류 그룹으로 나눠 여러 개의 큐 이용
- 그룹화된 작업을 각각의 준비 큐에 넣고, 각 큐의 독자적인 스케줄링 알고리즘에 따라 할당
6. Multi Level Feedback Queue
- 프로세스 특성 ( CPU 위주, I/O 위주 )에 따라 서로 다른 타임 슬라이스 부여
- 우선순위 Queue + Round Robin → Hybrid Scheduling
1) 새 프로그램이 들어오면 높은 우선순위 할당 ( 단계 1에서 즉시 수행 )
2) 점점 낮은 우선순위 부여
3) 작업 완료 시까지 라운드 로빈 방식으로 순환
제 1과목 운영체제 구조 정리 및 요약 Part 2에서는 Concurrency Control, 교착상태, 장치 관리 방법, 파일 시스템 등 내용을 다룰 예정입니다.
본 그림의 저작권은 Sky Guard에 있습니다.
'자격증 > 정보보안기사' 카테고리의 다른 글
[정보보안기사] 1과목 시스템 보안 정보시스템의 범위 및 이해 정리 및 요약 (1) | 2024.09.25 |
---|