운영체제 (OS, Operating Systam)
1. 운영체제 정의
- 컴퓨터 시스템의 자원(하드웨어, 소프트웨어)들을 효율적으로 관리
- 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공
2. 운영체제 목적
- 처리 능력 향상 : 시간당 작업 처리량 (Throughput), 평균 처리시간 개선
- 신뢰성 향상 : 실패 없이 주어진 기능을 수행할 수 있는 능력
- 응답시간 단축 : 사용자가 시스템에 의뢰한 작업의 반응 시간 단축
- 자원 활용률 향상 : 자원의 공유, 상호배제를 통해 자원 효율적 활용
- 가용성 향상 : 고장과 오류가 발생해도 운영 영향 최소화
3. 운영체제 분류
| 분류 | 설명 |
| Batch Processing System | 유사한 작업을 모아 일괄처리, 긴 실행 시간 소요 하드웨어의 효율적 이용은 가능하나 실시간 처리 미흡 |
| Multi Programming System | CPU 가동률 극대화 > 유휴 시간 최소화 작업들을 스케줄링에 의해 수행 정교한 메모리 관리 및 스케줄링 필요 |
| Time Sharing / Multi-tasking System | Multi Programming의 논리적 확장 사용자와 시스템 간의 interactive한 서비스 |
| Multi-Processing System | 가용성 증대를 위해 여러개의 CPU로 다중작업을 구현 |
| Real-Time System | 시스템 서비스 요청이 발생할 때마다 시간에 제약을 두어 즉시 처리하고 결과를 출력 (실시간) |
| Multi-Mode Processing | 일괄처리, 시분할, 다중처리, 실시간 처리를 한 시스템에서 모두 제공 |
| Distributed System | 독립적 운영체제가 네트워크 등을 이용해 협업 |
4. 운영체제의 주요 자원 관리 기능
| 주요 자원 관리자 | 설명 |
| 프로세스 관리 | 프로세스 스케줄링 및 동기화 관리 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 |
| 기억장치 관리 | 프로세스에 메모리 할당 및 회수 관리 |
| 주변장치 관리 | 입/출력 장치 스케줄링 및 점유 관리 |
| 파일 관리 | 파일의 생성과 삭제, 변경, 유지 등의 관리 |
프로세스 관리 (Process Management)
1. 프로세스
- 레지스터, 스택, 포인터, 실행중인 프로그램, 데이터 등의 집합체
- 실행중인 프로세스
- 프로세서에 의해 수행되는 프로그램 단위로 현재 실행 중이거나 곧 실행 가능한 PCB (Process Control Block)을 가진 프로그램
2. 스레드
- 제어의 흐름을 의미하는 것으로 프로세스에서 실행의 개념만 분리
- 프로세스의 구성을 크게 제어의 흐름 (실행단위)과 실행 환경 부분으로 나눌 때, 스레드는 프로세스의 실행 부분을 담당함으로써 실행의 기본 단위가 됨
| 구분 | Thread | Process |
| 상호통신 | Library Call 요청 Thread만 Blocking |
System Call Call 종료시까지 전체 자원 Blocking |
| 처리방식 | CPU를 이용하는 기본 작업 단위로 구분 |
자원할당을 위한 기본 구분 단위 |
| 부하 | 프로세스보다 상대적으로 부하 발생이 적음 | Context Switching으로 인한 부하 발생 프로세스 자원 할당 시 부하 발생 |
* Context Switching (문맥 교환)
- 인터럽트 발생, 실행 중인 프로세스가 CPU 사용을 허가 받은 시간(Quantum)을 모두 소모한 경우 I/O 입출력을 위해 대기해야하는 경우 발생
- 실행 중인 프로세스보다 높은 우선순위를 가진 프로세스가 도착한 경우에도 발생
CPU 스케줄링 (Scheduling) 기법
1. 스케줄링
- 컴퓨터의 자원(Resource)을 효율적으로 사용하기 위한 정책을 계획
- 특정 자원을 요청하고 있는 프로세서들을 대상으로 CPU 자원을 할당해 주는 순서를 정함
2. 스케줄링 목적
- CPU 활용 극대화 : CPU의 유휴 시간 최소화
- 응답시간 단축 : 프로세스 평균 응답 시간 단축
- 공평한 자원 활용 : 주어진 기간 동안 특정 자원 사용 효율화
- Multi-Tasking 효율화 : 다중 프로세스의 공평한 처리
3. 스케줄러 역할에 의한 구분
| 구분 | 설명 |
| 장기 스케줄러 | 상위(Hig level, long time) 스케줄링, 작업 스케줄링 (Job 스케줄링) 어떤 작업이 시스템의 자원들을 차지할 것인지 결정 (큐에 적재) |
| 중기 스케줄러 | 어떤 프로세스들이 CPU를 할당받을 것인지 결정 CPU를 사용하려는 프로세스 간 중재하여 일시 보류 & 재활성화 |
| 단기 스케줄러 | 하위 스케줄링, CPU 스케줄링, 프로세스 스케줄링 CPU 스케줄러인 Dispatcher에 의해 동작된 (프로세스에 CPU 할당) |
4. 스케줄러의 점유 방식에 의한 구분
| 구분 | 선점 (Preemptive) | 비선점 (Non-Preemptive) |
| 개념 | 프로세스가 CPU 점유 중에도 다른 프로세스가 CPU 점유 가능 | 프로세스가 CPU를 해제할 때까지 다른 프로세스는 대기 |
| 장점 | 빠른 응답, 모바일, RTOS 대화식 시분할 적합 |
응답 시간 예상 용이 Batch Process 적합 프로세스에 대한 요구를 공정하게 처리 |
| 단점 | Overhead 발생 (Context-Switching) | 짧은 작업에도 장기간 대기하는 경우가 발생 |
| 스케줄링 기법 | Round-Robin, SRT | FCFS, SJF, HRN |
5. CPU 스케줄링 기법
1) FCFS (First Come First Service)
- 대기 큐에 도착한 순서에 따라 CPU 할당
- 일단 프로세스가 CPU를 차지하면 완료될 때까지 수행
- 긴 작업이 짧은 작업을 오랫동안 기다리게 할 수 있으며, 중요하지 않은 작업이 중요한 작업을 기다리게 할 가능성 존재
- 비선점형 스케줄링 기법
2) SJF (Shortest Job First) 스케줄링
- 기다리고 있는 작업중에서 수행 시간이 가장 짧다고 판단되는 것을 먼저 수행
- FCFS보다 평균 대기시간을 감소시키는 반면, 큰 작업에 대해서는 FCFS에 비해 대기시간 예측이 어려움
- 비선점형 스케줄링 기법
3) 라운드 로빈 (Round Robin) 스케줄링
- FCFS에 의해서 프로세스들이 내려보내지며 각 프로세스는 같은 크기의 CPU 시간을 할당
- CPU 시간이 만료될 때까지 처리를 완료하지 못하면 CPU는 대기중인 다음 프로세스로 넘어가며 (Preemptive), 실행 중이던 프로세스는 준비 완료 리스트의 가장 뒤로 보내진다.
- 선점형 스케줄링 기법
4) SRT (Shortest Remaining Time) 스케줄링
- SJF와 마찬가지로 새로 도착한 프로세스를 포함하여 처리가 완료되는 데까지 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행
- 실행 중인 프로세스라도 남은 처리 시간이 더 짧다고 판단되는 프로세스가 생기면 언제라고 실행중인 프로세스가 선점됨
- SJF 방식에 선점 방삭을 도입하였으며 실시간 시스템에 유리
5) Multi Level Queue
- 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 스케줄링 기법
- 그룹화된 작업들은 각각의 준비 큐에 넣어두고 각 큐의 독자적인 스케줄링 알고리즘에 따라서 CPU를 할당 받는 방법
6) Multi level Feedback Queue
- 입출력 위주와 CPU 위주인 프로세스의 특성에 따라 서로 다른 타임 슬라이스를 부여
- 새로운 프로그램이 들어오면 높은 우선순위를 할당해 주어 단계 1에서 즉시 수행하고, 점차 낮은 우선순위를 부여하며 단계가 n쯤 되는 나중에는 그 작업이 완료될 때까지 라운드로빈으로 순환
- 비선점 기법이 우선순위 Queue와 Round Robin을 모두 사용하므로 Hybrid 스케줄링 기법임
병행성 제어 (Concurrency Control)
1. 상호배체 (Mutual Exclusion Techniques)
- 다수의 프로세스가 동일 자원에 접근 시 무결성을 보장하기 위한 기법
- 두 개 이상의 프로세스가 공유 자원에 동시에 읽기/쓰기를 못하게 하는 상호배체 메커니즘
- 임계영역의 개념을 이용하여 두 프로세스가 하나의 공유 자원을 상호 배타적으로 사용하는 기법
2. 임계영역 (Critical Section)
- 한순간에 반드시 프로세스 하나만 진입해야 하는데, 프로그램에서 임계 자원을 이용하는 부분으로 공유 자원의 독점을 보장하는 코드 영역을 의미
- 지정된 시간이 지나면 종료
- 병렬 컴퓨팅(Parallel Computing)에서 둘 이상의 스레드가 동시에 접근해서는 안 되는 공유 자원에 접근하는 코드의 일부로도 쓰임
- 스레드가 공유자원의 배타적인 사용을 보장받기 위해서 임계 구역에 들어가거나 나올 때는 세마포어 같은 동기화 메커니즘이 이용됨
- lock()과 unlock()사이
3. 세마포어(Semaphore), 모니터(Monitor)
1) 세마포어 상호배제 구현 방법
- 여러 프로세스/스레드가 공유자원에 동시 접근이 불가능하도록 접근 제어하는 방법
- 운영체제가 제공하는 자원으로 세마포어 S는 정수 값을 가지는 변수로서 초기화 및 두 개의 연산으로만 접근 가능한 특수한 변수를 이용해 상호배제 구현
- 한 번에 하나의 프로세스만 접근하는 이진(Binary) 세마포어와 지정된 개수만큼 접근을 허용하는 카운팅(Counting)세마포어로 나뉨
2) 모니터 상호배제 구현 기법
- 별도의 프로그램 작성 필요 없고, 공유 자원을 모니터 내부의 지역 변수로 정의하여 상호배제 구현
- 모니터는 Hight Level Language를 지원
- 지역 변수는 모니터 내의 함수(프로시저)에서만 접근 가능
- 프로세스는 모니터의 프로시저 호출을 통해 모니터에 진입할 수 있음
- 언제나 단지 하나의 프로세스만이 모니터 내부에 존재
4. 교착상태 (Dead Lock)
- 하나 또는 둘 이상의 프로세스가 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상태
- 발생조건
| 조건 | 설명 |
| 상호배제 (Mutual Exclusion) | 프로세서들이 자원을 배타적 점유 다른 프로세서들이 자원 사용 불가 한 번에 한 프로세스만이 자원 사용 가능 |
| 점유와 대기 (Hold and Wait) | 부분 할당, 다른 종류의 자원을 부가적으로 요구하면서 이미 어떤 사원을 점유하고 있음 |
| 비선점 (Non-preemption) | 자원들은 그들을 점유하고 있는 프로세스로부터 도중에 해제되지 않음 프로세스들 자신이 점유한 자원을 해제할 수 있음 |
| 환형대기 (Circular Wait) | 프로세스와 자원들이 원형을 이루며, 각 프로세스는 자신에게 할당된 자원을 가지면서 상대방 프로세스의 자원을 상호 요청하는 경우 |
4. 교착상태 대응 방법
1) 교착상태 예방 (Prevention)
- 예방조건
| 조건 | 설명 |
| 점유와 대기 조건의 부정 | 각 프로세스는 필요한 자원들을 모두 한번에 요청 (실행 전 모든 자원을 할당하여 대기를 없애거나 자원이 점유되지 않은 상태에서만 자원 요구) |
| 비선점 조건의 부정 | 이미 자원을 가지고 있는 프로세스 > 자원 할당 요구 있을 시 받아들여지지 않을 시 > 보유 자원 반납 반납 후 필요 자원에 대한 요구 다시 시도 무기한 연기 가능성 존재 |
| 환형대기 조건의 부정 | 모든 프로세스에게 각 자원의 유형별로 할당순서 부여 실행 중 우선순위의 변동이나 새오룬 자원 추가 시 구성이 어려움 |
| 상호 배제 조건의 부정 | 한 번에 여러개의 프로세스가 공유 자원을 사용할 수 있도록 함 공유 가능한 자원들은 배타적인 접근을 요구하지 않으므로 교착상태 조건 충족x |
2) 교착상태 회피 (Avoidance) - 은행원 알고리즘 (Banker's Algorithm)
- 안전 상태 (Safe State) : 시스템이 교착상태를 일으키지 않으면서 각 프로세스가 요구한 최대 요구량만큼 필요한 자원을 할당해 줄 수 있는 상태로 안전순서열이 존재하는 상태
- 불안전 상태 (Unsafe State) : 안전순서열이 존재하지 않는 상태. 교착상태이기 위한 필요조건으로 교착상태는 불안전 상태에서만 발생
- 안전 상태 개념을 이용하여 교착상태 회피 알고리즘 구성 가능
- 현재 가용자원을 프로세스 요청 시 바로 할당해 줄 것인지 기다리게 할 것인지를 결정하는 문제
3) 교착상태 발견 (Detection)
- 발견 기법
| 기법 | 설명 |
| 교착상태 발견 알고리즘 | 교착상태 발생 여부를 파악하기 위해 시스템의 상태를 검사하기 위한 알고리즘 교착상태의 발생 빈도 수 교착상태가 발생하였을 때 영향을 받는 프로세스 수 |
| 자원 할당 그래프 | 방향 그래프를 이용하여 자원의 할당사항과 요구사항을 나타내는 기법 자원 할당 그래프의 소거법을 이용하여 교착상태 감지 실행을 완료할 수 있는 프로세스와 교착상태에 빠진 프로세스를 결정 |
4) 교착상태 회복 (Recovery)
- 회복 기법
| 기법 | 설명 |
| 프로세스 중지 | 교착상태 프로세스들을 모두 중지하는 방법 해결될 때까지 한 프로세스씩 중지 |
| 자원 선점 | 프로세스로부터 자원들을 선점하여, 이들 자원을 교착상태가 해결될 때까지 다른 프로세스들에게 할당 |
- 교착상태 해결 방안
| 구분 | 설명 |
| 교착상태 예방 (Prevention) | 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방 ex) 환형대기, 비선점, 점유와 대기, 상호배제 부정 |
| 교착상태 회피 (Avoidance) | 교착상태 가능성을 배제하지 않고 적절히 피하는 방법 ex) 은행원 알고리즘 |
| 교착상태 탐지 (Detection) | 교착상태 발생을 허용하고, 발생 시 원인을 규명하여 해결 ex) 자원할당 그래프 |
| 교착상태 복구 (Recovery) | 교착상태 발견 후 환형대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 ex) 선점, 프로세스 중지 (희생자 선택) |
장치 관리 방법
1. 디스크 관리 (Disk Management)
- 가장 많이 사용하는 보조기억장치 중 하나로 마치 레코드판을 여러 개 중첩해서 놓은 것과 비슷
- 디스크 헤드(Head)가 임의의 섹터(Sector)를 랜덤하게 참조할 수 있고 빠르게 데이터를 읽을 수 있음. 또 주기억장치보다 많은 양의 데이터를 저장할 수 있음
- 디스크 접근 시간
| 디스크 접근 시간 | 설명 |
| 탐색시간 (Seek Time) | 현 위치에서 특정 실린더로 디스크 헤드가 이동하느데 소요되는 시간 |
| 회전 지연시간 (Rotation Delay Time) | 가고자 하는 섹터가 디스크 헤드까지 도달하는 데 걸리는 시간 |
| 전송시간 (Transfer Time) | 데이터를 전송하는데 걸리는 시간 |
2. 디스크 스케줄링(Disk Scheduling)의 종류
1) FCFS (First-Come First Served)
- 가장 먼저 도달한 요청을 우선척으로 처리
- 장점 : 개발 용이, 공평성 유지
- 단점 : 이동 경로 길어짐
2) SSTF (Shortest-Seek Time First)
- 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스
- 현재 Head 위치에서 가까운 요청을 우선적으로 처리
- 장점 : 전반적인 Seek Time 감소
- 단점 : Starvation (Head가 중간에 위치하고 있으면 가장 안쪽이나 가장 바깥쪽에 있는 트랙을 서비스할 확률이 낮아지기 때문에 발생) 가능
3) SCAN (엘레베이터 알고리즘)
- SSTF가 갖는 탐색시간의 편차를 해소하기 위한 기법
- Head가 이동하는 방향의 모든 요청을 서비스하고, 끝까지 이동 후 역방향의 요청을 서비스함
4) C-SCAN (Circular-SCAN)
- 바깥쪽에서 안쪽으로 이동
- 안쪽 방향으로 끝까지 이동을 반복
- 끝에 도달하면 바깥쪽으로 이동하여 요청을 다시 처리
5) C-LOOK (Circular-Look)
- C-SCAN의 보완, 대기시간을 좀 더 균형있게 함
- Head 이동 방향의 마지막 입출력 요청을 처리한 후 디스크 헤드를 처음 위치로 이동하여 다음 입출력 요청을 처리
3. 파일 시스템 (File System)
- 사용자가 생성한 파일을 저장소에 어떻게 저장하고 관리할 것인지를 결정
4. RAID (Redundant Array of Independent Disk)
- 디스크 고장 시 그대로 복구할 수 있도록 2개 이상의 디스크에 데이터를 저장하는 기술
- 즉, 디스크의 기계적인 장애로부터 사용자의 데이터를 안정적으로 지킬 수 있음
'자격증 > 정보보안기사' 카테고리의 다른 글
| 01. 시스템 보안 (0) | 2025.07.10 |
|---|