1. 운영체제 개요
(1) 운영체제의 주요 기능
- 운영체제 : 시스템 자원을 효율적으로 사용하게 하는, 사용자와 컴퓨터 간의 인터페이스 역할
(2) 운영체제의 구조
- 1단계 : 프로세서 관리 ; 동기화 및 프로세스 스케줄링
- 2단계 : 메모리 관리 ; 메모리 할당, 회수 기능
- 3단계 : 프로세스 관리 ; 프로세스 생성, 제거, 메시지 전달, 시작과 정지
- 4단계 : 주변장치 관리 ; 주변장치 상태 파악과 입출력 장치의 스케줄링
- 5단계 : 파일 관리 ; 파일 생성, 소멸, 파일의 열기 닫기, 파일의 유지 및 관리
(3) 운영체제의 기술발전 흐름
- 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와 하나의 주기억 장치를 이용해, 여러 프로그램을 동시에 처리하는 방식
- 3세대 : 다중모드처리(Multi-Mode Processing)
- 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리 시스템을 모두 제공하는 시스템
- 4세대 : 분산처리 시스템(Distribute Processing System)
- 여러 개의 컴퓨터(프로세서)를 통신회선으로 연결해서 하나의 작업을 처리하는 방식
- 각 단말장치나 컴퓨터들은 고유의 운영체제와 CPU, 메모리를 가지고 있음
2. 운영체제의 주요 구성 기술
(1) 프로세스 관리
- 프로세스와 스레드의 개념
- 프로세스 : 실행 중인 프로그램
- 스레드 : 프로세스 내에서 실행되는 여러 흐름의 단위
- 프로세스 제어 블럭(PCB; Process Control Block)
- 운영체제가 프로세스에 대한 정보를 저장해 놓은 저장소
- 다른 프로세스로 제어를 넘겨줄 때, 현재 실행중인 프로세스의 정보를 PCB에 저장하고 제어를 넘김
- 각 프로세스가 생성될 때마다 PCB가 생성되고, 종료되면 제거됨
- 부모 프로세스와 자식 프로세스는 PCB를 공유하지는 않음
- 프로세스 구성 요소
- Code 영역 : 프로그램 코드
- Data 영역 : 전역변수 저장
- Stack 영역 : 지역변수 및 함수의 매개변수 저장
- Heap 영역 : 동적 메모리 할당 영역
- 프로세스 상태와 전이
- 준비 Ready : 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태
- 실행 Run :
- 준비 상태 큐에 있는 프로세스가 프로세서를 할당 받아 실행되는 상태
- 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비상태로 전이된다.
- 실행 중인 프로세스에 입출력(I/O) 처리가 필요하면 실행 중인 프로세스는 대기 상태로 전이된다.
- 대기 (wait), 보류, 블록(Block)
- 입출력 요구가 발생되어 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
- 프로세스 상태 전이도
- 프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스 사이의 우선 순위를 관리하는 일
- 장기 스케줄링 : 어떤 프로세스를 커널에 등록할 것인가
- 중기 스케줄링 : 어떤 프로세스에게 메모리를 할당할 것인가
- 단기 스케줄링 : 어떤 프로세스에게 CPU를 할당할 것인가
- 선점형 스케줄링 정책(Preemptive Scheduling Policy) : 처리 도중 뺏기 가능
- SJF(Shortest Job First : 최단작업 우선처리) : 버스트 시간이 짧은 프로세스를 우선 처리
- SRT(Shortest Remaining Time First : 최단 잔여 시간)
- RR(Round Robin : 순환할당 스케줄링) : Time slice 기반 스케줄링
- MLQ(Multi Level Queue : 다단계 큐)
- MFQ(Multi level Feedback Queue : 다단계 피드백 큐)
- 비선점형 스케줄링 정책(Non-Preemptive Scheduling Policy) : 처리가 끝날 때까지 기다림
- FCFS(First Come First Served : 선입선출) : 먼저 CPU를 요청하는 프로세스를 우선 처리
- SJF(Shortest Job First : 최단작업 우선처리) : 버스트 시간이 짧은 프로세스를 우선 처리
- FIFO(First In First Out : 선입선출)
- HRN(Highest Response Ratio Next) : CPU 할당 받을 시간과 기다린 시간으로 계산한 우선 순위로 결정
- 프로세스 교착 상태(Deadlock)
- 발생 조건 : 1.~4.까지 모두 만족해야 발생
- 상호배제(Mutual Exclusion) : 한 프로세스가 자원을 다른 프로세스가 사용 못하게 배제할 때
- 점유대기(Wait) : 프로세스가 자신에게 할당된 자원을 해제 안하고, 다른 자원을 기다릴 때
- 비선점(비선점 조건; Non-Preemption) : 프로세스에 할당된 자원을 끝날 때까지 해제 할 수 없을 때
- 순환대기(Circular Wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
- 발생 조건 : 1.~4.까지 모두 만족해야 발생
- 해결방안
- 예방 : 교착 상태의 필요조건을 부정함으로써, 교착 상태가 발생하지 않도록 하는 방법
- 회피 : 교착 상태 가능성을 인정하고, 적절하게 피하는 방법 (은행원 알고리즘)
- 발견(탐지) : 교착 상태가 발생하면, 교착 상태의 프로세스와 자원을 발견하는 방법
- 회복(복구) : 교착상태를 일으킨 프로세스를 종료하고 할당된 자원을 회수하는 방법
(2) 기억장치 관리
- 주기억장치
- 반입기법(Fetch) : 언제 보조기억장치의 데이터를 주기억장치로 옮기나
- 요구 반입 정책(Demand Fetch Strategic) : 자료가 요구되는 시점에 주기억장치로 옮김
- 예상 반입 정책(Anticipatory Fetch Strategic) : 프로그램 수행 중 요구될 가능성이 큰 자료를 예상하여 주기억장치로 미리 옮김
- 배치기법(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 : 헤드의 방향이 전환될 때, 이미 대기 중이던 요청만 처리한다. (도중에 생긴 요청은 무시)
- C-LOOK(Circular-Look) : C-Scan의 보완, 대기시간을 좀 더 균형 있게 함, 진행 방향에 더 이상 요청이 없으면 Head는 진행 방향을 바꾼다.
(3) 파일 시스템 관리
- 디렉토리의 구조
- 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, 하위 호환성, 지연된 할당
- ※ 저널링(Journaling) : 파일 시스템에 대하여 변경을 수행하기 전 원래의 로그를 기록하여 변경을 추적 관리하고 복구할 수 있는 시스템을 의미한다.
- Partition
- 주 파티션 : 기본 파티션을 의미 / 주 파티션의 수 + 확장 파티션의 수 <= 4
- 확장 파티션 : 논리 파티션을 만들게 해주는 그릇의 역할 / 디스크에 하나만 생성 가능
- 논리 파티션 : 최대 12개 (NTFS에서는 제한이 없음)
- RAID(Redundant Array of Independent Disks)
- 디스크 고장 시 그대로 복구할 수 있도록 2개 이상의 디스크에 데이터를 저장하는 기술
- RAID 0(Stripe, Concatenate) : 데이터를 나누어 저장, 디스크 장애 발생 시 복구 불가능
- RAID 1(Mirroring) : 여러 디스크에 데이터를 완전 이중화하여 저장, 가장 좋은 방식이나 많은 비용 발생
- RAID 2(Hamming Code ECC) : ECC(Error Correction Code) 기능이 없는 디스크의 오류 복구를 위해 Hamming Code 이용
- RAID 3(Parity ECC) : Parity 정보를 별도 Disk에 저장
- RAID 4(Parity ECC, Block 단위 I/O) : Parity 정보는 별도의 디스크에, 데이터는 Block 단위로 데이터 디스크에 분산 저장
- RAID 5(Parity ECC, Parity 분산 저장) : 분산 Parity를 구현하여 안전성 향상
- RAID 6(Parity ECC, Parity 분산 복수 저장) : PAID 5의 안전성 향상을 위해 Prity를 다중화하여 저장
(4) 분산 시스템
- 개념 : 분산되어 있는 컴퓨터에서, 작업이 나누어 처리되고 그 결과가 서로 호환되도록 연결되어 있는 시스템
- 투명성(Transparency)를 보장해야 함
- 위치 투명성 : 컴퓨터의 실제 위치를 몰라도 접근 가능
- 이주 투명성 : 자원 이동에 제한이 없어야함
- 병행 투명성 : 사용자의 위치를 몰라도 다른 사용자와 자원의 공유 가능
- 복제 투명성 : 사용자에게 통지할 필요없이 자유롭게 복제 가능
3. 운영체제별 구조와 특징 (Unit, Linux, Windows)
(1) 유닉스/리눅스 구조 및 특징
- 구조
- 커널(Kernel)
- OS의 핵심으로 주기억장치에 상주하여 자원을 관리함
- 크게 입출력 / 메모리 / 프로세스 / 파일관리의 부분으로 나눔
- 쉘에서 지시한 작업을 수행함
- 쉘(Shell)
- 커널과 사용자간의 인터페이스를 제공
- 사용자가 입력하는 명령의 입/출력을 수행하며 프로그램을 실행시킴
- 명령어 해석기/번역기라고 함
- 파일시스템(File System)
- 계층적 트리 구조를 가지고 있고 다음과 같이 구성되어 있음
- 부트 블럭(Boot Blocks) : 파티션의 첫 부분에 예약되어 있는 블럭, 부팅시 필요한 코드 저장(커널 적재 코드 등)
- 슈퍼 블럭(Super Block) : 파일 시스템 당 한 개씩 생성 / 전체 파일 시스템에 대한 정보 저장
- 아이노드(I-Nodes) : 리눅스 커널이 현재 사용하는 자료구조(파일 정보)를 유지하는 구조체
- 파일 이름을 제외한 모든 파일과 디렉토리에 대한 정보를 저장
- 파일 링크 정보를 가지며, 파일 링크는 심볼릭 링크(Simbolic Link)와 하드링크(Hard Link)로 구분
- 심볼릭 링크 : 윈도우의 바로가기와 유사한 기능
- 긴 파일/디렉토리 명을 대신하여 사용할 때 링크 정보만 가지고 있는 새로운 inode 생성
- inode는 원래 파일의 포인터 정보만을 가짐
- 하드 링크 : 원본파이을 복사해 동일한 inode 생성
- 원본 파일을 삭제, 이동해도 하드링크는 존재
- 데이터 블럭(Data Blocks) : 실제 데이터가 저장
- 특징
- 대화식 운영체제
- 명령어를 입력받기 위해 쉘 프롬프트($)를 화면에 나타낸다. 프롬프트가 나타난 상태에서 사용자가 명령을 입력하면 시스템은 그 명령을 수행하고 다시 새로운 명령을 받기 위해 대기하고 있다는 표시로 쉘 프롬프트($)를 나타낸다.
- 다중 작업 기능(multi-tasking)
- 한 번에 하나 이상의 작업을 수행한느 것을 말한다.
- 다중 사용자 기능
- 여러 대의 단말기(키보드와 모니터)가 하나의 컴퓨터에 연결되어 각 단말기에서 사용자들이 프로그래밍을 하거나 파일 편집을 동시에 수행할 수 있다.
- 즉, 여러 사람이 동시에 유닉스 시스템을 사용하여 개개의 작업을 수행할 수 있다.
- 이식성(하드웨어 종류에 상관없이 운영되는 특성)
- 유닉스는 90% 이상이 C 언어로 구현되어 있고, 시스템 프로그램이 모듈화 되어 있어 다른 하드웨어 기종으로 이식이 용이하다.
- 즉, 다른 기종으로 이식할 경우 하드웨어에 의존하는 부분인 어셈블리어로 작성된 부분을 새로운 환경으로 변환시키고, C 언어로 구현된 나머지 부분을 재컴팡리하여 실행하면 된다.
- 계층적 트리 구조 파일 시스템
- 유닉스는 계층적 트리 구조를 가짐으로써 파일 관리를 용이하게 한다.
- 개발 도구
- 프로그래머가 여러가지 언어(Fortran, C, C++ 등)를 사용하여 프로그래밍할 수 있도록 많은 컴파일러(compiler)를 제공하고 있다.
- 통신
- 유닉스 시스템은 서로 다른 컴퓨터와 통신 가능하도록 하기 위해 여러 가지의 통신 유틸리티(mail, ftp, telnet 등)를 제공한다.
- 가상 메모리
- 한정된 메모리를 갖는 시스템에서 실제 메모리보다 더 큰 프로그램을 수행하기 위해 가상 메모리(virtual memory) 기법을 사용한다.
- 리눅스 특징
- 다중처리 다중 사용자 시스템
- 다양한 유형의 시스템에서 사용
- 여러 파일을 동시에 지원
- 안정적인 네트워크 기능 제공
- 공개 소프트웨어, 오픈소스
(3) 윈도우 구조 및 특징
- 구조
- 특징
- 그래픽 기반(GUI)
- 멀티 태스킹 기능
- 메시지 구동 시스템
- 운영체제가 대신 입력을 받아 전달해주는 방식
- 독립된 장치
- 디바이스 드라이버에 의해 다양한 주변 장치들을 제어하고 관리한다.
- 장치가 바뀌면 디바이스 드라이버를 교체하면 될 뿐 응용 프로그램은 이에 영향을 받지 않음
- 일관성
- 사용자가 프로그램에게 명령을 내리는 인터페이스 구성이 표준화 되어 있음
- 리소스 분리
- 응용 프로그램은 코드와 리소스가 분리되어 있어 개발자와 디자이너가 분담 작업을 쉽게 할 수 있음
- 윈도우 인증 처리
- 인증 프로세스 구성요소
- Winlogon : 윈도우 로그인 프로세스
- GiNA : Winlogon은 msgina.dll을 로딩해 사용자가 입력한 계정, 암호를 LSA로 전달
- LSA : 게정과 암호 검증을 위해 NTLM 모듈 로딩, 계정 검증
- SAM : 사용자 계정정보(해시 값)에 저장 (리눅스의 /etc/shadow 파일과 같은 역할)
- 윈도우 운영체제 관련 프로세스 세부 내역
- wininit.exe : 윈도우 시작 프로그램
- services.exe : 윈도우 서비스 관리
- lsm.exe : Local Session Manager, 호스트 컴퓨터와 서버의 연결 관리
- lsass.exe : Local Security Authority Subsystem Service, 사용자 로그인 검사, 비밀번호 변경 관리, 액세스 토큰 생성
- svchost.exe : 서비스를 관리하기 위한 프로세스
- conhost.exe : 쉘의 기본 기능 수행
(4) 보안운영체제 특징
- 접근 권한 통제(Authorization) ; Authorization = Authentication + Access Control
- 사용자 인증(Authentication)
- 접근 통제(Access Control)
- 칩임 탐지 및 방어(Intrustion Detection & Prevention)
참고 자료 :
2021 이기적 정보보안기사 필기 이론서
'자격증 > 정보보안기사' 카테고리의 다른 글
[어플리케이션 보안] 인터넷 응용 & 데이터베이스 보안 (0) | 2021.03.09 |
---|---|
[네트워크 보안] 네트워크 기반 공격 기술 및 대응 기술 (0) | 2021.03.07 |
[네트워크 보안] 네트워크 일반 및 활용 (0) | 2021.03.06 |
[시스템 보안] 클라이언트 보안 (0) | 2021.03.05 |
[시스템 보안] 서버 보안 (0) | 2021.03.04 |
댓글