반응형

1. 운영체제(Operating System)

운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다.

 

Cf) 운영체제의 목적

- 처리 능력의 향상: 시간당 작업 처리량(Throughput), 평균 처리시간 개선

- 신뢰성 향상: 실패 없이 주어진 기능을 수행할 수 있는 능력

- 응답 시간의 단축: 사용자가 시스템에 의뢰한 작업의 반응 시간 단축

- 자원 활용률 향상: 자원의 공유, 상호배제를 통해 자원 효율적 활용

- 가용성 향상: 고장과 오류가 발생해도 운영 영향 최소화


2. Process와 Thread

Process란, 레지스터, 스택, 포인터, 실행중인 프로그램, 데이터 등의 집합체로, 프로세에 의해 수행되는 프로그램 단위로 현재 실행 중이거나 곧 실행 가능한 PCB를 가진 프로그램이다.

Thread란, 프로세스에서 실행의 개념만을 분리한 것으로, 프로세스 실행의 기본 단위가 된다.

 

Cf) Process와 Thread 비교

구분 Process Thread
상호 통신 - System Call
- Call 종료 시까지 전체 자원 Blocking
- Library Call
- 요청 Thread만 Blocking
처리 방식 - 자원 할당을 위한 기본 구분 단위 - CPU를 이용하는 기본 작업
부하 - Context Switching으로 인한 부하 발생
- 프로세스 자원 할당 시 부하 발생
- Process보다 상대적으로 부하 발생이 적음

- System Call: OS Kernel 자원을 User가 사용할 수 있도록 미리 함수로 만들어 놓은 것을 호출하는 것
- Library Call: User들이 자주 사용할만한 기능을 미리 함수로 만들어 놓은 것을 호출하는 것

- Context Switching: 현재 진행중인 Process 상태를 PCB에 저장하고 다른 Process의 상태 값을 PCB에서 읽어 레지스터에 적재하는 과정

※ 빠른 응답을 위해 CPU가 Task를 바꿔 가며 실행하는데, 이를 위해 Context Switching이 필요하다.
Context Switching이란, 작업중인 Task(Process, Thread)의 상태를 저장 후 다음 Task의 상태 값을 읽어와서 작업하는 것을 말한다.

 

Cf) Process 상태 변환

상태 상태 변환 내용
Admit 생성 -> 준비 - 준비 큐가 비어있을 때
Dispatch 준비 -> 실행 - 준비 큐에 있는 하나의 Process를 선택하여 CPU 할당
Timer Run out 실행 -> 준비 - CPU를 할당받은 Process가 CPU의 제한된 시간을 모두 사용한 경우
Blocked 실행 -> 슬립 - CPU를 할당받은 Process가 I/O, 다른 자원 요구 등 CPU 외 서비스 작업을 요청한 경우
Wake Up 슬립 -> 준비 - 대기중이던 Request의 처리가 끝난 경우
Release 실행 -> 종료 - Process의 정상/비정상 종료 시 발생

3. CPU Scheduling

컴퓨터의 자원을 효율적으로 사용하기 위해 특정 자원을 요청하는 Process들에게 CPU 자원을 할당해주는 순서를 정하는 일이다.

 

Cf) CPU Sheduling 기법

1) FCFS(First Come First Service), 비선점형

- 대기 큐에 도착한 순서대로 CPU 할당하며, CPU를 차지한 Process는 작업을 완료할 때까지 수행

- 중요하지 않은 작업이 중요한 작업을 기다리게 할 가능성이 존재

 

2) SJF(Shortest Job First), 비선점형

- 수행 시간이 가장 짧은 Process에게 먼저 할당

- FCFS보다 평균 대기시간은 적으나, 큰 작업에 대해서는 대기 시간 예측이 어려움

 

3) Round Robin, 선점형

- FCFS에 의해 CPU가 할당되며, 각 Process에 같은 크기의 CPU 시간을 할당

- CPU 시간이 만료되면 대기중인 다른 Process에게 할당되며, 실행중이던(완료되지 않은) Process는 list의 가장 뒤로 보내짐

 

4) SRT(Shortest Remaining Time), 선점형

- SJF처럼 처리 완료 시간이 가장 짧은 Process에게 먼저 할당

- 실행중인 Process라도 남은 시간이 더 짧은 Process가 생기면 언제라도 실행중인 프로세스가 선점된다.

 

5) Multi Level Queue

- 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용

- 그룹화된 작업들은 각각의 큐에 넣어두고 각 큐의 독자적인 알고리즘에 따라 CPU를 할당 받음

 

6) Multi Level Feedback Queue

- 우선순위 Queue와 Round Robin을 모두 사용

- 먼저 들어온 Process에게 높은 우선순위를 부여하고, n개 이상이 생성되면 작업이 완료될 때까지 Round Robin으로 순환

- 입출력 위주와 CPU 위주인 Process의 특성에 따라 서로 다른 CPU 시간 할당


4. 병행성 제어(Concurrency Control)

1) 상호배제(Mutual Exclusion Techniques)

- 다수의 Process가 동일 자원에 접근 시 무결성을 보장(동시에 Read/Write 작업을 못하게 함)

 

2) 임계영역(Critical Section)

- 한 순간에 하나의 Process만 진입하기위해 공유 자원의 독점을 보장하는 코드 영역

- Thread가 공유 자원의 배타적인 사용을 보장받기 위해 임계영역에 들어가거나 나올 때에는 세마포어 같은 동기화 매커니즘을 사용

 

3) 교착상태(Dead Lock)

- Process가 더이상 계속할 수 없는 아래와 같은 특정 사건을 기다리고 있는 상태

- 둘 이상의 Process가 서로 자신이 요구한 자원을 할당받아 점유하고 있는 상태에서 상호 간에 상대방 프로세스에 할당되어 있는 자원을 요구하는 경우


5. 장치 관리 방법

Disk Sheduling

1) FCFS(First Come First Serviced)

- 가장 먼저 도착한 요청을 우선적으로 처리

 

2) SSTF(Shortest Seek Time First)

- 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스

- 현재 Head 위치에서 가까운 요청을 우선적으로 처리

 

3) SCAN(엘리베이터 알고리즘)

- SSTF가 갖는 탐색시간의 편차를 해소하기 위한 기법

- Head가 이동하는 방향의 모든 요청을 서비스하고 끝까지 이동한 후 역방향의 요청을 서비스

 

4) C-SCAN(Circular-SCAN)

- Head가 항상 한 쪽 끝에서 반대쪽 끝으로 이동하며 서비스하고, 반대쪽 끝에 도달하면 그 반대쪽 끝으로 되돌아간 후 다시 서비스

 

5) C-LOOK(Circular-Look)

- C-SCAN의 보완으로, Head 이동 방향의 마지막 요청을 처리한 뒤, Head를 처음 위치로 이동하여 다음 요청을 서비스

- 진행 방향에 더이상 요청이 없으면 Head는 진행 방향을 바꿈 

 

RAID(Redundant Array of Independent Disk)

Disk 장애 발생 시, 그대로 복구할 수 있도록 2개 이상의 Disk에 데이터를 저장하는 기술

이미지 출처: https://en.wikipedia.org/wiki/Standard_RAID_levels

1) RAID 0(Stripe, Concatenate)

- 최소 2개의 Disk로 구성되며, 데이터를 나누어 저장하지만 중복 저장하지 않기 때문에 장애 발생 시 복구 불가

 

2) RAID 1(Mirroring)

- 여러 Disk에 데이터를 완전 이중화하여 저장하는 방식으로 RAID에서 가장 좋은 방식이지만 비용이 많이 발생

 

3) RAID 2(Hamming Code ECC)

- ECC(Error Correction Code) 기능이 없는 Disk의 오류 복구를 위해 개발되었으며, Hamming Code를이용하여 오류를 복구

- 최소 3개의 Disk로 구성 가능하며, 별도의 Disk에 복구를 위한 ECC를 저장하여 1개의 Disk 에러 시 복구 가능 (2개 이상 불가능)

 

4) RAID 3(Parity ECC, Byte 단위 I/O)

- Byte 단위로 striping을 하고 Error Correction을 위해 Parity 정보를 별도 Disk에 저장

- 최소 3개의 Disk로 구성 가능하며, 별도의 Disk에 복구를 위한 ECC를 저장하여 1개의 Disk 에러 시 복구 가능 (2개 이상 불가능)

 

5) RAID 4(Parity ECC, Block 단위 I/O)

- Block 단위로 striping을 하고 Error Correction을 위해 Parity 정보를 별도 Disk에 저장

- 최소 3개의 Disk로 구성 가능하며, 별도의 Disk에 복구를 위한 ECC를 저장하여 1개의 Disk 에러 시 복구 가능 (2개 이상 불가능)

 

6) RAID 5(Parity ECC, Parity 분산 저장)

- Block 단위로 striping을 하고 Error Correction을 위해 Parity 정보를 별도 Disk에 저장하는데, Parity 저장 Disk를 고정하지 않고 매번 다른 Disk에 저장

- 최소 3개의 Disk로 구성 가능하며, 별도의 Disk에 복구를 위한 ECC를 저장하여 1개의 Disk 에러 시 복구 가능 (2개 이상 불가능)

 

7) RAID 6(Parity ECC, Parity 분산 복수 저장)

- RAID 5에서 성능, 용량을 줄이고 안정성을 높인 RAID
- Block 단위로 striping을 하고 Error Correction을 위해 Parity 정보를 2개 Disk에 저장

- 최소 4개의 Disk로 구성 가능하며, 별도의 Disk에 복구를 위한 ECC를 저장하여 2개의 Disk 에러 시 복구 가능 (3개 이상 불가능)

 

 

 


# 참고

해당 글은 '이기적 정보보안기사 필기 1권 이론서'을 읽으며 필요한 부분만 정리한 내용입니다.

반응형

+ Recent posts