[정보보안기사] 시스템 보안 - 운영체제
- 목차 -
1. 운영체제
(1) 운영체제 개요
① 운영체제의 주요 기능
② 운영체제의 구조
③ 운영체제의 기술발전 흐름
(2) 운영체제의 주요 구성 기술
① 프로세스 관리
② 기억장치 관리
③ 파일 시스템 관리
④ 분산 시스템
(3) 운영체제 사례별 특징과 주요기능
① 유닉스
② 윈도우
③ 리눅스
④ 보안운영체제 특성
1. 운영체제
(1) 운영체제 개요
① 운영체제의 주요 기능
- 운영체제란 시스템 자원을 효율적으로 사용하게 하는, 사용자와 컴퓨터 간의 인터페이스 역할
② 운영체제의 구조
- 1단계 : 프로세서 관리 - 동기화 및 프로세스 스케줄링
- 2단계 : 메모리 관리 - 메모리 할당, 회수 기능
- 3단계 : 프로세스 관리 - 프로세스 생성, 제거, 메시지 전달, 시작과 정지
- 4단계 : 주변장치 관리 - 주변장치 상태 파악과 입출력 장치의 스케줄링
- 5단계 : 파일 관리 - 파일 생성, 소멸, 파일의 열기 닫기, 파일의 유지 및 관리
③ 운영체제의 기술발전 흐름
- 1세대: 일괄처리시스템(Batch Processing System)
- 2세대: 다중프로그램 시스템(Multi-Programming System)
▶ I/O 장치와 CPU 사이의 속도 차이를 이용하여,
하나의 CPU와 주기억장치로 여러 프로그램을 동시에 처리하는 방식
▶ I/O 장치의 조작으로 CPU 유휴시간이 발생하면, 다른 작업을 처리함
▶ 시분할 시스템(Time Sharing System)
▶ 라운드 로빈(Round Robin ; RR) 방식이라고도 함
▶ 다중처리 시스템(Multi-Processing System)
▷ 여러 개의 CPU와 하나의 주기억 장치를 이용해, 여러 프로그램을 동시에 처리 하는 방식
▶ 실시간 시스템(Real Time Processing System)
- 3세대: 다중모드처리(Multi-Mode Processing)
▶ 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리 시스템을 모두 제공하는 시스템
- 4세대: 분산처리 시스템(Distributed Processing System)
▶ 여러 개의 컴퓨터(프로세서)를 통신회선으로 연결해서 하나의 작업을 처리하는 방식
▶ 각 단말장치나 컴퓨터들은 고유의 운영체제와 CPU, 메모리를 가지고 있음
(2) 운영체제의 주요 구성 기술
① 프로세스 관리
- 프로세스와 스레드의 개념
▶ 프로세스: 실행 중인 프로그램
▶ 스레드: 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스 제어 블럭(PCB - Process Control Block)
▶ 운영체제가 프로세스에 대한 정보를 저장해 놓은 저장소
▶ 다른 프로세스로 제어를 넘겨줄 때, 현재 실행중인 프로세스의 정보를 PCB에 저장하고 제어를 넘김
▶ 각 프로세스가 생성될 때마다 PCB가 생성되고, 종료되면 제거됨
▶ 부모 프로세스와 자식 프로세스는 PCB를 공유하지는 않음
- 프로세스 구성 요소
▶ Code 영역: 프로그램 코드
▶ Data 영역 : 전역변수 저장
▶ Stack 영역: 지역변수 및 함수의 매개변수 저장
▶ Heap 영역: 동적 메모리 할당 영역
※ 스택 및 힙에 저장되는 변수들은 함수가 끝나면 사라지는 임시 데이터를 저장
- 프로세스 상태와 전이
▶ 준비 Ready
→ 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
▶ 실행 Run
→ 준비 상태 큐에 있는 프로세스가 프로세서를 할당 받아 실행되는 상태
프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는
준비 상태로 전이됨
실행 중인 프로세스에 입출력(I/O) 처리가 필요하면 실행 중인 프로세스는 대기 상태로 전이됨
▶ 대기(wait), 보류, 블록(Block)
→ 입출력 요구가 발생되어 현재 실행 중인 프로세스가 중단되고,
입출력 처리가 완료될 때까지 대기하고 있는 상태
- 프로세스 상태 전이 관련 용어
▶ Dispatch (Ready -> Run)
→ 준비 상태에 있는 여러 프로세스 중 프로세스를 선정하여 CPU를 할당하는 시점
▶ Time Run Out (Run -> Ready)
→ 할당된 시간이 지나면 Time out interrupt
▶ Event wait (Run -> Block)
→ I/O 입출력 발생(프로세스가 CPU를 사용 중에 I/O 행위가 필요하여 대기 상태로 이동하는 시점)
▶ Wake Up (Block -> Ready)
→ I/O 요청이 완료되면 다시 ready 상태로 전이
- 프로세스 스케쥴링: CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 일
▶ 장기 스케쥴링: 어떤 프로세스를 커널에 등록할 것인가
▶ 중기 스케쥴링: 어떤 프로세스에게 메모리를 할당할 것인가
▶ 단기 스케쥴링: 어떤 프로세스에게 CPU를 할당할 것인가
- 선점형 & 비선점
▶ 선점형 스케쥴링 정책(Preemptive Scheduling Policy): 처리 도중 뺏기 가능
▷ SJF(Shortest Job First 최단작업 우선 처리): 마트의 소액결제 계산대와 같은 원리
▷ SRT(Shortest Remaining Time First 최단 잔여 시간)
▷ RR(Round Robin 순환할당 스케쥴링)
▷ MLQ(Multi Level Queue 다단계 큐)
▷ MFQ(Multi level Feedback Queue 다단계 피드백 큐)
▶ 비선점형 스케쥴링 정책(Non-Preemptive Scheduling Policy): 처리 다할때까지 기다림
▷ SJF(Shortest Job First 최단작업 우선 처리): 선점형, 비선점형 둘다 사용 가능
▷ FIFO(First In First Out 선입 선출)
▷ FCFS(First Come First Service 선입 선출)
▷ HRN(Highest Response Ratio Next): CPU 할당 받을 시간과 기다린 시간으로 계산한 우선순위로 결정
→ Priority = (Estimated_Run_Time + Waiting_Time) / (Estimated_Run_Time)
→ Priority가 큰 수를 먼저 실행
- 프로세스 교착 상태 Deadlock
▶ 발생 조건 - ⓐ~ⓓ까지 모두 만족해야만 발생
ⓐ 상호배제(Mutual Exclusion) : 한 프로세스가 자원을 다른 프로세스가 사용 못하게 배제할 때
ⓑ 점유대기(Wait) : 프로세스가 자신에게 할당된 자원을 해제 안하고, 다른 자원을 기다릴 때
ⓒ 비선점(비선점 조건 ; Non-Preemption) : 프로세스에 할당된 자원을 끝날 때까지 해제 할수 없을 때
ⓓ 순환대기(Circular Wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
▶ 해결방안
ⓐ 예방 : 교착 상태의 필요조건을 부정함으로써, 교착 상태가 발생하지 않도록 하는 방법
ⓑ 회피 : 교착 상태 가능성을 인정하고, 적절하게 피하는 방법(은행원 알고리즘)
ⓒ 발견(탐지) : 교착 상태가 발생하면, 교착 상태의 프로세스와 자원을 발견하는 방법
ⓓ 회복(복구) : 교착상태를 일으킨 프로세스를 종료하고 할당된 자원을 회수하는 방법
② 기억장치 관리
- 주기억장치
▶ 반입기법(Fetch) : 언제 보조기억장치의 데이터를 주기억장치로 옮기느냐??
▷ 요구 반입 정책
▷ 예상 반입 정책
▶ 배치기법(Placement) : 보조기억장치의 데이터를 주기억장치의 어디로 위치시키느냐??
▷ 최초 적합
▷ 최적 적합
▷ 최악 적합
▶ 교체기법(Replacement) : 공간확보를 위해 어떤 데이터를 제거 하고 새로운 데이터를 위치할 것이냐??
▷ FIFO(First In First Out)
▷ LRU(Least Recently Used) : 가장 오랫동안 사용안한걸 바꿈
▷ LFU(Least Frequently Used) : 가장 사용 횟수가 작은걸 바꿈
▷ NUR(Not Used Recently) : 최근에 전혀 사용되지 않은걸 바꿈
- 가상기억장치
▶ 구현 방식
▷ 페이징(Paging) 기법: 프로그램을 동일한 크기의 Page로 나누어 구현
ⓐ 내부 단편화의 원인
ⓑ 스레싱(Thrashing): 자주 페이지의 교체가 일어나는 현상(프로세스 처리 시간 < 페이지 교체 시간)
ⓒ 워킹 셋(Working Set): 자주 사용되는 페이지들을 묶어서 주기억장치에 계속 상주시키는 방법
ⓓ 페이지 교체 알고리즘
ⅰ. FIFO(First In First Out)
ⅱ. LRU(Least Recently Used) : 가장 오랜기간 사용하지 않은 페이지 교체
ⅱ. OPT(Optimal ; 최적교체) : 가장 사용되지 않을(?) 페이지를 교체 ;; 실현가능성 희박
ⅳ. SCR(Second Chance Replacement) : 참조 비트를 주고, 1이면 0으로 깍고, 0이면 교체
▷ 세그먼테이션(Segmentation) 기법: 프로그램을 가변적 크기의 Segment로 나누어 구현
=> 외부 단편화의 원인
※ 단편화(Fragmentation)
ⓐ 내부 단편화(Internal Fragmentation)
→ 할당 받은 페이지를 다 사용 못했을 때 생기는 자투리 공간들(영향이 적긴 적지)
압축(Compaction)으로 해결 : 분산되어있는 단편화된 빈 공간들을 결합
ⓑ 외부 단편화(External Fragmentation) : 할당과 제거를 반복하면서, 적재하기 얘매해진 공간들
→ 통합(Coalescing)으로 해결 : 인접해 있는 단편화된 공간을 하나의 공간으로 통합
- 보조기억장치
▶ 디스크 스케쥴링
▷ FIFO(=FCFS)
▷ SSTF(Short Seek Time FIrst) : 탐색거리가 가장 짧은 요청을 먼저 처리
▷ SCAN : 헤드가 한 방향으로 쭉가면서 처리하는 방법, 실린더 끝까지 가서 방향을 전환한다.
▷ C-SCAN : 헤드가 실린더 끝에서 안쪽으로이동하며 처리
▷ N-Step SCAN : 헤드의 방향이 전환될 때, 이미 대기 중이던 요청만 처리(도중에 생긴 요청은 무시)
③ 파일 시스템 관리
- 디렉터리의 구조
▶ 1단계 디렉토리 : 모든 파일이 같은 디렉토리에 존재하며, 파일 이름은 유일한 구조
▶ 2단계 디렉토리 : 중앙에 마스터 디렉토리(MDF)가 있고, 각 사용자의 디렉토리(UFD)가 하위에 있는 구조
▶ 트리 디렉토리 : 하나의 루트 디렉토리와 다수의 하위 디렉토리로 구성되며,
포인터로 탐색(일반적으로 OS에서 사용)
▶ 비주기 디렉토리 (Acyclic Graph Directory) : 파일과 디렉토리의 공유가 허용될 수 있는 사이클이 없는 구조
▶ 일반 그래프 : 사이클이 허용되고, 기본 트리 디렉토리 구조에 링크를 첨가한 구조
- Windows File System
▶ FAT(File Allocation Table)
▷ DOS 때 부터 사용되고 있는 대표적인 File System. FAT16과 FAT32 등이 있다
▷ 하드디스크에 FAT라는 영역을 만들어 파일의 실제 위치 등의 정보를 기록하고 이를 이용함
▷ 저용량에 적합 / 보안에 취약 / 호환성이 우수
▶ NTFS(NT File System)
▷ MFT(Master File Table)를 사용하여 관리하며, Mirror와 파일로그가 유지되어 파일 복구가 가능함
▷ FAT + 대용량 / 보안성 / 압축기능 / 원격저장소 등의 기 능을 추가해서 만든 윈도우 전용 File System
▷ 대용량 지원 / 강력한 보안 / 자동 압축 및 안정성 / 호환성이 구림 / 저용량에선 FAT보다 느림
- Unix & Linux File System
▶ EXT2 : FSCK(File System Check)으로 시스템 손상 복구 가능
▶ EXT3 : 저널링(Journaling) 기술로 더욱 빠르고 안정적인 복구가 가능
▶ EXT4 : 빨라진 FSCK, 하위 호환성, 지연된 할당
- Partition
▶ 주 파티션 : 기본 파티션을 의미 / 주 파티션의 수 + 확장 파티션의 수 <= 4
▶ 확장 파티션 : 저장 공간을 없으며, 논리 파티션을 만들게 해주는 그릇의 역할 / 디스크에 하나만 생성 가능
▶ 논리 파티션 : 최대 12개(NTFS에서는 제한이 없음)
④ 분산 시스템
- 개념 : 분산되어 있는 컴퓨터에서, 작업이 나누어 처리되고 그 결과가 서로 호환되도록 연결되어 있는 시스템
- 투명성(Transparency)를 보장해야 함
▶ 위치 투명성 : 컴퓨터의 실제 위치를 몰라도 접근 가능
▶ 이주 투명성 : 자원 이동에 제한이 X
▶ 병행 투명성 : 사용자의 위치를 몰라도 다른 사용자와 자원의 공유 가능
▶ 복제 투명성 : 사용자에게 통지할 필요 없이 자유롭게 복제 가능
(3) 운영체제별 구조와 특징 (Unix, Linux, Windows)
① 유닉스 구조 및 특징
- 구조
▶ 커널(Kernel)
▷ OS의 핵심으로 주기억장치에 상주하여 자원을 관리함
▷ 크게 입출력 / 메모리 / 프로세스 / 파일관리의 부분으로 나눔
▷ 쉘에서 지시한 작업을 수행함
▶ 쉘(Shell)
▷ 커널과 사용자간의 인터페이스를 제공
▷ 사용자가 입력하는 명령의 입/출력을 수행하며 프로그램을 실행시킴
▷ 명령어 해석기/번역기라고 함
▶ 파일 시스템(File System)
▷ 계층적 트리 구조를 가지고 있고 다음과 같이 구성되어 있음
▷ 부트 블럭(Boot Blocks) : 파티션의 첫 부분에 예약되어 있는 블럭
부팅시 필요한 코드 저장(커널 적재 코드 등)
▷ 슈퍼 블럭(Super Block) : 파일 시스템당 한 개씩 생성 / 전체 파일 시스템에 대한 정보 저장
▷ 아이노드(I-Nodes) : 파일 이름을 제외한 모든 파일과 디렉토리에 대한 정보를 저장
▷ 데이터 블럭(Data Blocks) : 실제 데이터가 저장
- 특징
ⓐ 대화식 운영체제
▷ 명령어를 입력받기 위해 쉘 프롬프트($)를 화면에 나타난다. 프롬프트가 나타난 상태에서 사용자가
명령을 입력하면 시스템은 그 명령을 수행하고 다시 새로운 명령을 받기 위해 대기하고 있다는
표시로 쉘 프롬프트($)를 나타낸다.
ⓑ 다중 작업 기능(multi-tasking)
▷ 한 번에 하나 이상의 작업을 수행하는 것을 말한다.
ⓒ 다중 사용자 기능
▷ 여러 대의 단말기(키보드와 모니터)가 하나의 컴퓨터에 연결되어 각 단말기에서 사용자들이
프로그래밍을 하거나 파일 편집을 동시에 수행할 수 있다.
즉, 여러 사람이 동시에 유닉스 시스템을 사용하여 개개의 작업을 수행할 수 있다.
ⓓ 이식성(하드웨어 종류에 상관없이 운영되는 특성)
▷ 유닉스는 90% 이상이 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화 되어 있어 다른 하드웨어
기종으로의 이식이 용이하다.
즉, 다른 기종으로 이식할 경우 하드웨어에 의존하는 부분인 어셈블리어로 작성된 부분을 새로운 환경
으로 변환시키고, C 언어로 구현된 나머지 부분을 재컴파일하여 실행하면 된다.
ⓔ 계층적 트리 구조 파일 시스템
▷ 유닉스는 계층적 트리 구조를 가짐으로써 파일 관리를 용이하게 한다.
ⓕ 개발 도구
▷ 프로그래머가 여러가지 언어(Fortran, C, C++ 등)를 사용하여 프로그래밍할 수 있도록
많은 컴파일러(compiler)를 제공하고 있다.
ⓖ 통신
▷ 유닉스 시스템은 서로 다른 컴퓨터와 통신 가능하도록 하기 위해 여러 가지의 통신 유틸리티
(mail, ftp, telnet 등)를 제공한다.
ⓗ 가상 메모리
▷ 한정된 메모리를 갖는 시스템에서 실제 메모리보다 더 큰 프로그램을 수행하기 위해 가상 메모리
(virtual memory) 기법을 사용한다.
② 리눅스 구조 및 특징
- 구조
▶ 커널: 리눅스의 핵심
▷ 프로세스/메모리/파일시스템/장치 관리
▷ 컴퓨터의 모든 자원 초기화 및 제어 기능
▶ 셸: 사용자 인터페이스
▷ 명령해석
▷ 프로그래밍기능
▷ 리눅스 기본 셸: 배시 셸(리눅스 셸)
▶ 응용 프로그램
▷ 각종 프로그래밍 개발도구
▷ 문서편집도구
▷ 네트워크 관련 도구 등
- 특징
ⓐ 다중처리 다중사용자 시스템
ⓑ 다양한 유형의 시스템에서 사용
ⓒ 여러 파일을 동시에 지원
ⓓ 안정적인 네트워크 기능 제공
ⓔ 공개 소프트웨어, 오픈소스
③ 윈도우 구조 및 특징
- 구조
- 특징
ⓐ 그래픽 기반(GUI)
ⓑ 멀티 태스킹 기능
ⓒ 메시지 구동 시스템
▷ 운영체제가 대신 입력을 받아 전달해 주는 방식
ⓓ 독립된 장치
▷ 디바이스 드라이버에 의해 다양한 주변 장치들을 제어하고 관리한다
▷ 장치가 바뀌면 디바이스 드라이버를 교체하면 될 뿐 응용 프로그램은 이에 영향을 받지 않음
ⓔ 일관석
▷ 사용자가 프로그램에게 명령을 내리는 인터페이스 구성이 표준화 되어 있음
ⓕ 리소스 분리
▷ 응용 프로그램은 코드와 리소스가 분리되어 있어 개발자와 디자이너가 분담 작업을 쉽게 할 수 있음
④ 보안운영체제 특징
- 접근 권한 통제(Authorization) ; Authorization = Authentication + Access Control
▶ 사용자 인증(Authentication)
▶ 접근 통제(Access Control)
- 침입 탐지 및 방어(Intrusion Detection & Prevention)
'IT > 정보보안' 카테고리의 다른 글
[정보보안기사] 시스템 보안 - 서버 보안 (0) | 2019.06.20 |
---|---|
[정보보안기사] 시스템 보안 - 클라이언트 보안 (0) | 2019.06.20 |
시스템보안 - 보안 계정 관리자 SAM (Security Account Manger) (0) | 2019.06.19 |
시스템보안 - SECaas ( Security as a Service ), Saas, Iaas, Paas (0) | 2019.06.19 |
시스템보안 - FAT, NTFS (0) | 2019.06.18 |
댓글