디스크 스케쥴링
지난 시간은 병행제어, 교착상태 등에 대해 배웠습니다. 병행을 제어하기 위해서 임계구역, 상호배제, 동기화(세마포어, 모니터) 등을 활용합니다. 서로 자원을 가진 상태에서 서로 자원 공유한 자원을 기다리는 교착상태에서는 상호배제, 점유대기, 비선점, 환형대기 때문에 발생할 수 있습니다. 회피기법(은행가알고리즘)을 사용하기도 합니다.
이와 함께 비완료 의존성, 갱신분실, 모순성, 연쇄복귀 등의 문제가 발생하여 로킹을 사용한다는 것도 기억해 주세요.
이번 시간은 출제 빈도가 낮은 디스크 스케쥴링과 환경변수, 스토리지, RAID에 대한 내용입니다. RAID는 출제된 적이 있으므로 확인해 보고 지나가셔야 하며, 스케줄링 방식도 꼭 챙겨가셔야 합니다. 특징들만 정확히 보시고 지나가시길 바랍니다.
목차
디스크 스케쥴링이란?
디스크 스케줄링(Disk Scheduling)은 컴퓨터의 하드 디스크에서 발생하는 입출력 요청을 처리하기 위한 방법으로, 여러 요청이 들어왔을 때 디스크 헤더의 이동 경로를 결정하는 것을 의미합니다.
이는 디스크의 효율적인 활용과 성능 향상을 위해 필요합니다.
디스크 스케쥴링 목표는?
- 디스크 헤더의 이동 최소화: 디스크 헤더의 이동을 최소화하여 디스크 접근 시간을 단축하여 응답 시간을 향상합니다.
- 요청 처리 시간 최소화: 디스크 스케줄링 알고리즘을 통해 디스크 요청 처리 시간을 최소화하여 시스템의 성능을 향상시킵니다.
디스크 스케쥴링 종류
- FCFS(First-Come, First-Served)
- 먼저 들어온 요청부터 처리하는 방식입니다.
- 단순하고 구현이 쉽지만, 디스크 헤더의 이동 경로가 최적이 아닐 수 있습니다.
- 큐의 순서대로 진행하기 때문에 현재 50 위치에 있을 때 99까지 바로 이동하고 다음 12로 이동하게 되는 상황이 있을 수 있습니다.
- SSTF(Shortest Seek Time First)
- 현재 위치에서 가장 가까운 요청을 먼저 처리하는 방식입니다.
- 빠른 응답 시간을 제공하지만, 이동 거리가 긴 요청이 무시될 가능성이 있습니다.
- SCAN
- (엘리베이터 방식) 디스크 헤더가 한 방향으로 이동하면서 요청을 처리하는 방식입니다.
- 끝에 도달하면 방향을 반대로 변경합니다. 모든 요청을 공평하게 처리하지만, 대기 시간이 긴 경우가 있을 수 있습니다.
- 오름 차순으로 정렬하고 가까운 큐로 이동합니다. 처리된 것을 제외하고 계산합니다.
- 헤드가 진행하는 방향 내려가면서 처리한 뒤, 올라가면서 처리하는 방식
- 중간에 다른 요청도 함께 처리함
- 모두 처리한다는 것이 중요
- 시험에서 방향을 정해줄 것입니다. 예 50에서 60번으로 이동 50부터 끝까지 처리하면서 이동
- C-SCAN(Circular SCAN)
- SCAN)의 변형으로, 디스크 헤더가 한 방향으로 이동한 후, 끝에 도달하면 처음 위치로 돌아가는 방식입니다.
- 대기 시간을 줄이고 일정한 응답 시간을 제공합니다.
- 한 쪽 방향으로 처리하는 방식
- 요청까지만 가고 반대로 갈때는 아무처리 없이 처리하는 것이 중요
- 예 50번부터 60번으로 이동한다고 하면 끝까지 처리후 0번까지 아무 처리없이 이동 후 다시 처리
- Look
- 진행방향의 마지막 요청을 처리한 후 반대 방향으로 이동
- C-Look
- C-SCAN 기법을 기초로 바깥쪽에서 안쪽 방향의 모든 요청을 처리한 후 가장 바깥쪽으로 이동한 후 다기 안쪽 방향으로 처리
- N-STEP SCAN
- SCAN의 변형으로, 한 번의 스캔에서 N개의 요청만을 처리하는 방식입니다.
- 대용량 디스크의 성능을 향상시키는 데 유용합니다.
- 에션바흐(Eschenbach)
- 각 트랙마다 디스크 헤더 이동 속도를 다르게 하는 방식으로, 응답 시간을 최소화하기 위해 디스크 헤더의 이동 경로를 조정합니다.
- 탐색시간 지연시간 최적화
환경변수란?
환경 변수(Environment Variable)는 컴퓨터 시스템에서 사용되는 동적 값으로, 주로 시스템 환경 설정, 프로그램 실행, 파일 경로 설정 등에 활용됩니다.
운영 체제나 프로그램이 이러한 환경 변수를 사용하여 필요한 정보를 저장하고 공유합니다.
programfiles에서 확인할 수 있는 파일들이 환경변수 설정을 위한 것들입니다.
운영체제가 참조하는 변수
UNIX/Linux 환경 변수
- UNIX 및 Linux 시스템에서는 환경 변수는 시스템의 동작 및 사용자의 환경 설정에 중요한 역할을 합니다.
- 주요 환경 변수는 PATH, HOME, USER, SHELL 등이 있으며, 각각 시스템의 경로, 사용자의 홈 디렉터리, 사용자 이름, 기본 셸 등을 나타냅니다.
- 명령어 : env, set, printenv
UNIX/Linux 환경 변수
한 번씩 출제는 되는 데, 차라리 프로그래밍 언어 문제 풀이를 한번 더 볼 것을 권유드립니다.
종류 | 설명 |
$PATH | 실행 파일을 찾는 경로를 지정합니다. |
$HOME | 사용자의 홈 디렉토리 경로를 지정합니다. |
$USER | 현재 사용자의 이름을 지정합니다. |
$SHELL | 현재 사용 중인 셸의 경로를 지정합니다. |
$LANG | 시스템의 기본 언어를 지정합니다. |
$TZ | 시스템의 기본 시간대를 지정합니다. |
$HOSTNAME | 시스템의 호스트 이름을 지정합니다. |
Windows 환경 변수
- Windows 시스템에서도 환경 변수를 사용하여 시스템 및 사용자 환경을 구성합니다.
- 주요 환경 변수는 PATH, TEMP, USERNAME 등이 있으며, 각각 시스템의 경로, 임시 파일 디렉터리, 사용자 이름 등을 나타냅니다
Windows 환경 변수
이 역시 암기 하기보다 프로그래밍 언어 문제 풀이를 한번 더 볼 것을 권유드립니다.
종류 | 설명 |
%USERNAME% | 현재 로그인한 사용자 이름을 나타냅니다. |
%USERPROFILE% | 현재 사용자의 프로필 디렉토리 경로를 나타냅니다. |
%APPDATA% | 사용자 애플리케이션 데이터가 저장된 디렉토리의 경로를 나타냅니다. |
%SYSTEMROOT% | Windows 시스템 디렉토리의 경로를 나타냅니다. |
%TEMP%, %TMP% | 임시 파일이 저장되는 디렉토리의 경로를 나타냅니다. |
%PATH% | 실행 파일을 찾는 경로를 나타냅니다. |
%COMPUTERNAME% | 컴퓨터의 이름을 나타냅니다. |
%PROGRAMFILES% | 32비트 프로그램 파일이 설치된 경로를 나타냅니다. |
%PROGRAMFILES(X86)% | 64비트 프로그램 파일이 설치된 경로를 나타냅니다. |
로그 파일이란?
로그 파일(Log File)은 컴퓨터 시스템이나 프로그램에서 발생하는 이벤트 및 활동을 기록하는 파일입니다.
로그 파일은 주로 시스템의 문제 해결, 보안 감사, 성능 분석 등에 사용됩니다.
로그 데이터 정보
- 로그 파일에는 시간, 이벤트 유형, 발생 위치 등의 정보가 포함됩니다.
- 이 정보는 일반적으로 시스템 관리자나 개발자가 문제를 진단하고 해결하는 데 도움이 됩니다.
로그 데이터 중요성
- 로그 데이터는 시스템의 상태와 작동에 대한 정보를 제공하므로, 문제 해결, 보안 감사, 성능 최적화 등에 필수적입니다.
- 이러한 정보는 문제를 예방하고 시스템의 안정성과 보안을 유지하기 위해 중요합니다.
- 시스템에서 발생한 문제를 알아볼 수 있다는 것이 중요
리눅스 로그 종류
- 리눅스 시스템에서는 주로 시스템 로그, 보안 로그, 응용 프로그램 로그 등 다양한 종류의 로그가 있습니다.
- 대표적인 로그 파일
- /var/log/messages, /var/log/auth.log, /var/log/syslog 등이 있습니다.
로그 종류 | 설명 |
message | 시스템의 일반적인 메시지와 경고를 기록하는 로그입니다. |
secure | 사용자 로그인 및 인증 시도, 관리자 활동과 관련된 보안 정보를 기록하는 로그입니다. |
malilog | 악성 소프트웨어나 해킹 공격 등의 악의적인 활동을 기록하는 로그입니다. |
xferlog | ftp 로그 파일 |
dmesg | 부팅 시스템에서 생성된 커널 메시지를 기록하는 로그입니다. |
wtmp | 전체 사용자의 로그인 및 로그아웃 기록을 기록하는 로그입니다. |
utmp | 현재 로그인한 사용자와 터미널의 상태를 추적하는 로그입니다. |
btmp | 실패한 로그인 시도를 기록하는 로그입니다. |
lastlog | 각 사용자의 최근 로그인 시간과 IP 주소를 기록하는 로그입니다. |
스토리지란?
스토리지는 데이터를 저장하는 데 사용되는 장치나 시스템을 가리킵니다.
컴퓨터 시스템에서 데이터를 영구적으로 저장하고 나중에 필요할 때 검색하고 사용할 수 있도록 해주는 기능을 수행합니다.
스토리지는 주로 하드 디스크 드라이브 (HDD), 고체 상태 드라이브 (SSD), 외부 저장소 장치, 네트워크 연결 스토리지 (NAS), 백업 테이프, 클라우드 스토리지 등과 같은 형태로 구현될 수 있습니다.
스토리지 종류
- DAS(Direct-Attached Storage)
- 직접 연결되는 스토리지로, 서버에 직접 연결되어 있는 스토리지 시스템을 의미합니다.
- USB, 확장의 한계가 있음
- NAS(Network-Attached Storage)
- 네트워크에 연결되는 스토리지로, 파일 서버 형태로 사용되며 여러 클라이언트가 공유합니다.
- 저장차지만 있는 컴퓨터 네트워크가 물려있음.
- NIC에 랜을 꽂은 이더넷으로 연결
- 전송속도가 DAS보다 느림
- SAN(Storage Area Network)
- 공용 네트워크를 통해 서버와 스토리지를 연결하는 스토리지 시스템입니다.
- 공통채널을 이용한다는 것이 핵심
- 파이버 채널 스위치 연결
RAID
복수의 HDD 하나의 드라이브로 인식하고 사용하는 것을 말합니다.
여러개의 하드디스크로 문제 발생시 복구하기 위해 사용합니다.
신뢰성을 향상시킨다고 말하기도 합니다.
기본 개념
스트라이핑(striping)
여러 개의 디스크에 데이터를 분산하여 저장하는 기술로, 라운드로빈 방식으로 데이터를 여러 디스크에 나누어 저장하고 병렬로 읽고 쓰기를 수행하여 입출력 성능을 향상시키는 데 중점을 둡니다.
이를 통해 데이터의 처리량이 증가하고 응답 시간이 향상될 수 있습니다.
그러나 스트라이핑은 장애 허용 기능을 제공하지 않으며, 디스크 중 하나에 장애가 발생하면 해당 디스크에 저장된 데이터가 손실될 수 있습니다.
미러링(mirroring)
주로 RAID 1에서 사용되는 기술로, 동일한 데이터를 여러 개의 디스크에 중복 저장(복제)하는 방식입니다. 데이터의 안전성을 높이고 데이터 손실 위험을 줄이는 데 중점을 둡니다.
미러링은 하나의 디스크에 장애가 발생해도 데이터를 다른 디스크로 복제하여 데이터 손실을 방지할 수 있습니다.
그러나 스토리지 공간의 효율성이 낮아지고 비용이 증가하는 단점이 있습니다.
RAID Level 0~6
RAID 레벨 | 설명 | 주요 특징 |
RAID 0 | 데이터를 분산하여 병렬로 읽고 쓰기를 수행하여 성능을 향상시킵니다. | - 데이터 분산으로 성능 향상 - 하나의 디스크 장애 시 전체 데이터 손실 가능 스트라이핑 사용 |
RAID 1 | 미러링 방식으로 데이터를 중복 저장하여 데이터 안전성을 높입니다. | - 미러링으로 데이터 안전성 향상 - 디스크 중 하나 고장 시 데이터 손실 없음 하나를 백업으로 복사(미러링)해두므로 복구 가능 |
RAID 2 | 하드웨어 기반 ECC를 사용하여 오류를 검출하고 복구합니다. | - ECC를 이용하여 오류 검출 및 복구 - 현재 거의 사용되지 않음 해밍코드 사용 |
RAID 3 | 데이터와 패리티 정보를 분산 저장하고 단일 디스크에 패리티 정보를 저장하여 오류 복구 기능을 제공합니다. | - 패리티 정보로 데이터 복구 가능 - 패리티 디스크가 병목 현상 초래 가능 패리티(복구정보) 저장 |
RAID 4 | 데이터를 블록 단위로 분산 저장하고 패리티 정보를 독립적인 디스크에 저장하여 성능을 향상시킵니다. | - 패리티 정보 독립적으로 저장하여 성능 향상 - 병렬 읽기/쓰기로 성능 향상 패리티저장(블록단위) |
RAID 5 | 데이터와 패리티 정보를 분산 저장하여 데이터 안전성과 성능을 균형 있게 제공합니다. | - 패리티 정보로 데이터 복구 가능 - 하나의 디스크 고장 시 데이터 손실 없음 각 디스크에 패리티 저장 |
RAID 6 | 이중 패리티를 제공하여 두 개의 디스크가 동시에 고장 나도 데이터 손실을 방지합니다. | - 이중 패리티로 고장에도 데이터 손실 방지 - 디스크 2개 동시 고장 시 데이터 손실 없음 두개의 디스크에 패리티 저장 |
- RAID 0:
- 데이터를 여러 디스크에 나누어 저장하고, 병렬로 읽고 쓰기를 수행하여 성능을 향상시키는데 주안점을 둡니다.
- 데이터를 분산하여 저장하므로 하나의 디스크에 장애가 발생하면 전체 데이터가 손실될 수 있습니다.
- RAID 1:
- 미러링 방식으로 동일한 데이터를 여러 디스크에 중복 저장합니다.
- 데이터 안전성을 높이고 데이터 손실 위험을 줄이는 데 주안점을 둡니다.
- RAID 2:
- 비트 레벨에서 하드웨어 기반 ECC(Error Correction Code)를 사용하여 오류를 검출하고 복구합니다.
- 현재 거의 사용되지 않습니다.
- RAID 3:
- 데이터를 여러 디스크에 분산하고, 패리티 정보를 단일 디스크에 저장하여 오류 복구 기능을 제공합니다.
- 패리티 디스크가 병목 현상을 초래할 수 있습니다.
- RAID 4:
- RAID 3과 유사하지만 데이터를 블록 단위로 분산하고 패리티 정보를 독립적인 디스크에 저장합니다.
- 여러 디스크에서 병렬로 읽고 쓰기를 지원하여 성능이 향상됩니다.
- RAID 5:
- 데이터와 패리티 정보를 여러 디스크에 분산 저장하여 데이터 안전성과 성능을 균형있게 제공합니다.
- 하나의 디스크 장애에 대해 데이터 손실을 방지할 수 있습니다.
- RAID 6:
- RAID 5와 유사하지만 패리티 정보를 두 개의 디스크에 저장하여 이중 패리티를 제공합니다.
- 이중 패리티로 인해 두 개의 디스크가 동시에 고장나도 데이터 손실을 방지할 수 있습니다.
'정보처리기사' 카테고리의 다른 글
2. 근거리 통신망 - 4과목 네트워크 (0) | 2024.04.08 |
---|---|
1. 네트워크 기본 - 4과목 네트워크 (2) | 2024.04.08 |
[정처기 실기] 5. 병행프로세스 - 3과목 운영체제 (2) | 2024.04.07 |
[정처기 실기] 4. 프로세스 - 3과목 운영체제 (0) | 2024.04.07 |
3. 가상기억 장치 - 3과목 소프트웨어 (0) | 2024.04.06 |
댓글