운영체제
시스템의 자원들을 효율적으로 관리, 사용자가 컴퓨터를 편리하게 사용할 수 있도록 환경 제공
-- 운영체제 목적 --
처리능력 향상 : 시간당 작업 처리량, 평균 처리시간 개선
신뢰성 향상 : 실패 없이 주어진 기능 수행
응답시간의 단축 : 반응 시간 단축
자원 활용률 향상 : 자원 공유, 효율적 활용
가용성 향상 : 고장과 오류가 발생해도 운영 영향 최소화
-- 자원 관리 기능 --
프로세스 관리 : 프로세스 스케줄링 및 동기화 관리, 생성, 제거, 시작, 정지 관리
기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리
주변장치 관리 : 입/출력 장치 스케줄링 및 점유 관리
파일 관리 : 파일의 생성과 삭제, 변경, 유지 관리
-- 운영체제 발달 과정 --
1. Batch Processing System : 유사한 작업을 모아 일괄처리, 실시간 처리 미흡, 긴 실행시간 소요
2. Multi Programming System : CPU 가동률 극대화 -> 유후시간 최소화, 정교한 메모리 관리
3. Time Sharing / Multi-Tasking System : 사용자와 시스템 간의 상호작용 서비스
4. Multi-Processing System : 가용성 증대를 위해 여러 개의 CPU로 다중작업 구현
5. Real-Time System : 시스템 서비스 요청이 발생할 때 마다 시간에 제약을 두어 즉시 처리하고 결과 출력
6. Multi-Mode Processing : 일괄처리, 시분할, 다중처리, 실시간 처리를 한 시스템에서 모두 제공
7. Distributed System : 독립적 운영체제가 네트워크 등을 이용해 협업
프로세스 vs 스레드
구분 | 프로세스 | 스레드 |
정의 | 현재 실행 중이거나 곧 실행 가능한 PCB를 가진 프로그램 | 제어의 흐름 |
상호통신 | System call, Call 종료시까지 전체자원 Blocking | Lirary Call, 요청 Thread만 Blocking |
처리방식 | 자원 할당을 위한 기본 구분 단위 | CPU를 이용하는 기본 작업 |
부하 | 프로세스 자원 할당 시 부하 발생 | 프로세스보다 상대적으로 부하 발생이 적음 |
문맥교환
CPU가 이전의 프로세스 상태를 PCB에 보관하고, 또 다른 프로세스의 정보를 PCB에서 읽어 레지스터에 적재하는 과정
PCB
프로세스의 상태 정보를 저장하는 구조체
스케줄링
특정 자원을 요청하고 있는 프로세스들을 대상으로 CPU 자원을 할당해 주는 순서를 정하는 일
-- 구분 --
장기 스케줄러( = 작업 스케줄링 ) : 어떤 작업이 시스템의 자원들을 차지할 것인지 결정
중기 스케줄러 : CPU를 사용하려는 프로세스 간 중재하여 일시 보류/재활성화
단기 스케줄러( = CPU 스케줄링, 프로세스 스케줄링 ) : CPU 스케줄러인 Dispatcher에 의해 동작됨
-- 점유 방식에 따른 기법 --
선점 : 프로세스가 CPU 점유 중에도 다른 프로세스가 CPU 점유 가능
< 종류 >
Round-Robin( = 순환할당 )
각 프로세스는 같은 크기의 시간을 할당한다.
CPU 시간이 만료될 때까지 처리를 완료하지 못하면 CPU는 대기중인 다음 프로세스로 넘어가며,
실행 중이던 프로세스는 준비 완료 리스트의 가장 뒤로 보내진다.
SRT( Shortest Remaining time )( = 최소 잔류시간 우선 )
처리가 완료되는 데까지 가장 짧은 시간이 소요된다고 판단되는 프로세스를 먼저 수행한다.
Multi Level Feedback Queue( = 다단계 피드백 큐 )
여러개의 준비 큐 존재 -> 프로세스 생성시 가장 높은 우선순위의 준비큐에 등록( FCFS 순서 )
-> Round-Robin 방식으로 순환
비선점 : 프로세스가 CPU를 해제할 때까지 다른 프로세스는 대기
< 종류 >
FCFS( First Come First Service )( = 선입 선처리 )
대기 큐에 도착한 순서에 따라 CPU를 할당한다.
SJF( Shortest Job First )( = 최소작업 우선 )
기다리고 있는 작업 중에서 수행 시간이 가장 짧다고 판단된 것을 먼저 수행한다.
Multi Level Queue( = 다단계 큐)
여러개의 준비 큐 존재 -> 각 큐는 별도의 스케줄링 알고리즘을 가지며, 큐 사이에도 스케줄링이 존재
-> 큐별로 절대적인 우선순위가 있음 -> 우선순위가 높은 큐가 비워지면 다음 순위의 큐 실행
상호배제
두 개 이상의 프로세스가 공유 자원에 동시에 읽기/쓰기를 못하게 하는 방식
임계영역
한순간에 반드시 프로세스 하나만 진입해야 하는데, 프로그램에서 임계자원을 이용하는 부분으로
공유 자원의 독점을 보장하는 코드영역
-- 임계구역을 고려한 병행프로세스 구조 --
-- 세마포어 상호배제 구현 기법 --
설명 : 우선 mutex 기본값이 1로 설정되어있으므로 처음 진입하는 프로세스는 wait()를 수행한 후
임계구역의 코드에 진입할 수 있다. 하지만 이와 동시에 다른 프로세스가 이 루프를 돈다고 한다면
이미 앞에 있는 프로세스에서 wait()로 mutex 값을 0으로 만들어 놓았기 때문에 wait()로 진입하지 못하게 된다.
처음 진입한 프로세스가 임계구역에서 작업을 마치고 나면 signal()을 거쳐 나가며, signal()에서
mutex 값이 다시 1로 설정되기 때문에 아까 wait()에 진입이 지연되던 프로세스의 진입이 허용된다.
교착상태
하나 또는 둘 이상의 프로세스가 더 이상 계속할 수 없는 어떤 특정 사건을 기다리고 있는 상태
-- 발생조건 --
상호배제 : 한 번에 한 프로세스만이 자원 사용 가능
점유와 대기 : 다른 종류의 자원을 부가적으로 요구하면서, 이미 어떤 자원을 점유하고 있음
비선점 : 자원들은 그들을 점유하고 있는 프로세스로부터 도중에 해제되지 않음
환형대기 : 각 프로세스는 자신에게 할당된 자원을 가지면서, 상대방 프로세스의 자원을 상호 요청하는 경우
-- 교착상태 해결방안 --
1. 예방 : 교착상태 필요조건을 부정함으로써 미리 예방
상호배제 조건 부정 : 상호 배제 조건은 비 공유를 전제
점유와 대기 조건의 부정 : 각 프로세스는 필요한 자원들을 모두 한꺼번에 요청
비선점 조건 부정 : 이미 자원을 가진 프로세스가 자원 할당을 요구하여 받아들여지지 않으면
보유 자원 반납 후 다시 재요구
환형대기 조건 부정 : 모든 프로세스에게 각 자원의 유형별로 할당 순서 부여
2. 회피 : 교착상태 가능성을 배제하지 않고, 적절하게 피해 나가는 방법
은행원 알고리즘 : 안정상태를 유지할 수 있는 요구만을 수락하고 불안전 상태를 초래할 사용자의 요구는
나중에 만족될 수 있을 때까지 계속 거절한다.
3. 탐지 기법 : 교착상태 발생을 허용하고, 발생 시 원인을 규명하여 해결
교착상태 발견 알고리즘 : 교착상태 발생 여부를 파악하기 위해 시스템의 상태를 검사하기 위한 알고리즘
자원 할당 그래프 : 방향 그래프를 이용하여 자원의 할당사항과 요구사항을 나타내는 기법
4. 회복 기법 : 교착상태 발견 후 행동
프로세스 중지 : 교착상태가 해결될 때까지 한 프로세스씩 중지
자원 선점 : 프로세스로부터 자원들을 선점하여, 이들 자원을 교착상태가 해결될 때까지 다른 프로세스들에게 할당
디스크
헤드가 임의의 섹터를 랜덤하게 참조 / 빠르게 데이터를 읽음 / 주기억장치보다 많은 양의 데이터를 저장
헤드 : 디스크로부터 정보를 읽어 들임
섹터 : 디스크에 정보가 저장되는 최소 단위
트랙 : 연속된 섹터의 공간
-- 디스크 접근 시간 --
탐색시간( Seek Time ) : 현 위치에서 특정 트랙으로 디스크 헤드가 이동하는데 걸리는 시간
회전 지연시간( Rotation Delay Time ) : 섹터가 디스크 헤드까지 도달하는데 걸리는 시간
전송시간( Transfer Time ) : 데이터를 전송하는데 걸리는 시간
-- 디스크 스케줄링 --
FCFS : 가장 먼저 도착한 요청을 우선적으로 처리
장점 : 개발 용이 / 단점 : 이동 경로가 길어짐
SSTF : 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스함
장점 : 전반적인 Seek Time 감소 / 단점 : 기아현상 발생
SCAN : 헤드가 이동하는 방향의 모든 요청을 서비스하고, 끝까지 이동한 후 역방향의 요청을 서비스함
C-SCAN : 끝에 도달하면 반대쪽 끝으로 이동하여 서비스함
C-LOCK : 한쪽방향으로 서비스하다가 기다리는 요청이 없으면 헤드의 방향을 바꿔 서비스함
파일 시스템
사용자가 생성한 파일을 저장소( 보조기억장치 )에 어떻게 저장하고 관리할 것인지 결정
-- 종류 --
FAT16
최대 2GB까지만 지원 / 암호화 및 압축 불가 / 파일명 최대길이는 영문 8자 / 내부단편화 발생
FAT32
최대 2TB까지 지원 / 암호화 및 압축 불가 / 파일명 최대길이는 영문 256자 / 내부단편화 발생
NTFS
암호화 및 압축 지원 / 트랜잭션 로깅을 통한 복구, 오류 수정이 가능
EXT
최대 2GB까지 파일 시스템 크기 지원 / 255byte까지 파일명 지원
EXT2
FSCK를 사용한 파일 시스템 오류 수정 지원( 많은 시간 소요 )
EXT3
파일 시스템 변경 시 저널에 먼저 수정 내용을 기록 / 디스크 조각화를 최소화
EXT4
저널 Checksum 기능으로 안전성 강화 / 조각화 방지
UFS( Unix File System )의 구조
VTOC 디스크 레이블 : 각 파티션의 기본 정보
부트블록 : 부트스트랩에 필요한 파일들
프라이머리 슈퍼블록 : 데이터 블록의 개수, 실린더 그룹의 개수, 마운트 정보
백업 슈퍼블록 : 각 실린더마다 슈퍼블록 복사본 가짐
슈퍼블록 : 파일 시스템 크기, i-node 테이블 크기
i-node 테이블 : 파일에 대한 중요한 정보, 파일 크기, 위치, 날짜 정보
데이터 블록 : 실제 데이터가 저장되는 공간
RAID
디스크 고장 시 그대로 복구할 수 있도록 2개 이상의 디스크에 데이터를 저장하는 기술
-- 개념 --
디스크를 배열구조로 중복 구성함으로써 고용량, 고성능, 고가용성 디스크를 대체
-- 종류 --
RAID 0
최소 2개의 디스크로 구성 / 데이터를 나누어 저장하지만 중복 저장하지 않기 때문에 장애 발생시 복구 X
RAID 1
여러 디스크에 데이터를 완전 이중화하여 저장하는 방식 / 병렬직으로 실행되어 속도 빠름
RAID 2
Hamming Code를 이용하여 오류 복구
RAID 3
Parity 정보를 별도 Disk에 저장 -> 한개 디스크 장애, 오류 시 복구 가능
RAID 4
RAID 3과 동일하나 Parity를 Block 단위로 관리
RAID 5
분산 Parity를 구현하여 안정성 향상 / 최소 3개의 디스크가 요구
RAID 6
RAID 5의 안정성 향상을 위해 Parity를 다중화하여 저장 / 장애가 발생된 상황에서 추가 장애가 발생해도 정상 작동
'자격증 > 정보보안기사 - 시스템보안' 카테고리의 다른 글
윈도우 클라이언트 및 서버 보안 명령어 (0) | 2019.08.16 |
---|---|
윈도우 클라이언트 및 서버 보안 (0) | 2019.08.07 |
리눅스 서버 보안 명령어 (0) | 2019.08.04 |
리눅스 서버 보안 (0) | 2019.08.01 |
운영체제 이해 및 관리 (1) | 2019.07.28 |