1. 운영체제 개요
(1) 운영체제의 주요 기능
시스템 자원을 효율적으로 사용하게 하는 사용자와 컴퓨터 간의 인터페이스 역할
(2) 운영체제의 구조
1단계(프로세서 관리) : 동기화 및 프로세스 스케줄링
2단계(메모리 관리) : 메모리 할당, 회수 기능
3단계(프로세스 관리) : 프로세스 생성, 제거, 메시지 전달, 시작과 정지
4단계(파일 관리) : 파일 생성, 소멸, 파일의 열기 닫기, 파일의 유지 및 관리
(3) 운영체제의 기술발전 흐름
1세대 : 일괄처리시스템(Batch Processing System)
- 초기의 컴퓨터 시스템에 사용한 형태로 일정량 또는 일정기간 데이터를 모아 한꺼번에 처리하는 방식
2세대 :
- 다중프로그램 시스템(Multi-Programming System)
- I/O 장치와 CPU 사이의 속도 차를 이용하여, 하나의 CPU와 주기억장치로 여러 프로그램을 동시에 처리하는 방식
- I/O 장치의 조작으로 CPU 유휴시간이 발생하면, 운영체제가 다른 작업을 처리함(CPU의 사용률과 처리량 증가)
- 시분할 시스템 : 일정시간 동안만 CPU를 사용하고 다음 사용자에게 사용 권한 전환(라운드 로빈 방식)
- 다중처리시스템 : 여러 개의 CPU와 하나의 주기억 장치를 이용해 여러 프로그램을 동시에 처리하는 방식
3세대 : 다중모드처리(Multi-Mode Processing)
- 일괄처리 시스템, 시분할 시스템, 다중처리 시스템, 실시간 처리 시스템을 모두 제공하는 시스템
4세대: 분산처리 시스템(Distribute Processing System)
- 여러 개의 프로세서를 통신회선으로 연결해서 하나의 작업을 처리하는 방식
- 각 단말장치나 컴퓨터들은 고유의 운영체제와 CPU, 메모리를 가지고 있음
2. 운영체제의 주요 구성 기술
(1) 프로세스 관리
프로세스와 스레드의 개념
- 프로세스 : 자원을 할당 받는 작업 단위, 실행 중인 프로그램
- 스레드 : 프로세스 내에서 실행되는 흐름의 단위
프로세스 제어 블록(PCB : Process Control Block)
- 운영체제가 프로세스에 대한 정보를 저장해 놓는 저장소(운영체제 커널의 자료 구조)
- 다른 프로세스로 제어를 넘겨줄 때, 현재 실행 중인 프로세스의 정보를 PCB에 저장하고 제어를 넘김
- 각 프로세스가 생성될 때마다 PCB가 생성되고, 종료되면 제거됨
- 부모 프로세스와 자식 프로세스는 PCB를 공유하지 않음
- Process ID, Process State, Porgram Counter 등
프로세스 구성 요소
- Code 영역 : 프로그램 코드
- Data 영역 : 전역변수 저장
- Stack 영역 : 지역변수 및 함수의 매개변수 저장
- Heap 영역 : 동적 메모리 할당 영역
프로세스 상태와 전이
- 준비 Ready : 프로세스가 프로세서를 할당으려고 기다리고 있는 상태
- 실행 Run :
- 준비 상태 큐에 있는 프로세스가 프로세서를 할당 받아 실행되는 상태(프로세스가 프로세서를 점유)
- 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 준비상태로 전이
- 실행 중인 프로세스에 입출력 처리가 필요하면 실행 중인 프로세스는 대기 상태로 전이
- 대기(Wait), 보류, 블록(Block) : 입출력 요구가 발생되어 현재 실행 중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태
프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스 사이의 우선 순위를 정하는 방식
- 장기 스케줄링 : 어떤 프로세스를 커널에 등록할 것인가
- 중기 스케줄링 : 어떤 프로세스에게 메모리를 할당할 것인가
- 단기 스케줄링 : 어떤 프로세스에게 CPU를 할당할 것인가
선점형 / 비선점형 스케줄링
선점형 스케줄링 정책 | 비선점형 스케줄링 정책 |
SJF(Shortest Job First) | FCFS(First Com First Served) |
SRT(Shortest Remaining Time First) | SJF(Shortest Job First) |
RR(Round Robin) | FIFO(First In First Out) |
MLQ(Multi Level Queue) | HRN(Highest Response Ratio Next) |
MFQ(Multi level Feedback Queue) |
프로세스 교착 상태(DeadLock)
- 발생 조건
- 상호배제(Mutual Exclusion) : 한 프로세스가 자원을 다른 프로세스가 사용 못하게 배제할 때
- 점유대기(Wait) : 프로세스가 자신에게 할당된 자원을 해제 안하고, 다른 자원을 기다릴 때
- 비선점(비선점조건) : 프로세스에 할당된 자원을 끝날 때까지 해제 할 수 없는 경우
- 순환대기(Circular Wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
- 해결 방안
- 예방 : 교착 상태의 필요조건을 부정함으로써 교착 상태가 발생하지 않도록 하는 방법
- 회비 : 교착 상태 가능성을 인정하고 적절하게 피하는 방법
- 탐지 : 교착 상태가 발생하면 교착 상태의 프로세스와 자원을 발견하는 방법
- 복구 : 교착 상태를 일으킨 프로세스를 종료하고 할당된 자원을 회수하는 방법
(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) 기법 : 프로그램이나 데이터를 서로 다른 크기로 분할하여 주기억 장치에 적재하도록 하는 기법
- 내부 단편화의 원인(내부 단편화란 주기억장치 내 사용자 영역이 실행 프로그램보다 커서 프로그램의 사용 공간을 할당 후 사용되지 않고 잔여 메모리가 발생하는 현상)
- 스레싱(Thrashing) : 페이지 교체가 자주 일어나는 현상(프로세서의 사용 시간이 페이지 교체에 많은 시간 사용)
- 워킹 셋(Working Set) : 자주 사용되는 페이지들을 묶어서 주기억장치에 계속 상주시키는 방법
- 페이지 교체 알고리즘
- FIFO(First In First Out)
- LRU(Least Recently Used)
- OPT(Optimal)
- SCR(Second Chance Replacement)
- 세그멘테이션(Segmentation) 기법 : 프로그램을 가변적 크기의 Segment로 나누어 구현
- 외부 단편화의 원인(외부 단편화란 남아있는 총 메모리 공간이 요청한 메모리 공간보다 크지만, 남아있는 공간이 연속적이지 않아 발생하는 현상)
보조기억장치
- 디스크 스케줄링
- FIFO(FCFS) : 먼저들어온 순서대로 요청을 처리
- SSTF : 현재 헤드 위치에서 제일 가까운 요청을 가장 먼저 처리
- SCAN : 헤드가 안쪽 위치에서 바깥 위치로 이동하면서 요청에 대해 처리(바같 위치 스캔 후 안쪽으로 스캔)
- C-SCAN : 헤드가 안쪽 위치에서 바깥 위치로 이동하면서 요청에 대해 처리(바같 위치 스캔 후 안쪽부터 다시 스캔)
- N-Step SCAN : SCAN의 변형 알고리즘으로 이동하기 시작한 후 도착한 요청은 다음에 처리
- C-LOOK : SCAN과 C-SCAN의 비효율적인 문제를 개선한 스케줄링으로 요청이 없다면 스캔 방향 전환
(3) 파일 시스템 관리
디렉터리 구조
- 1단계(단일) 디렉터리 : 모든 파일이 같은 디렉토리에 존재하며 파일 이름은 유일한 구조
- 2단계 디렉터리 : 중앙에 마스터 디렉터리(MDF)가 있고, 각 사용자의 디렉터리(UFD)가 하위에 있는 구조
- 트리 디렉터리 : 하나의 루트 디렉터리와 다수의 하위 디렉터리로 구성되며, 포인터로 탐색
- 비순환 그래프 디렉터리 : 파일과 디렉터리를 공동으로 사용할 수 있는 사이클이 허용되지 않는 구조
파일시스템
- Windows File System
- FAT(File Allocation Table)
- DOS때 부터 사용되고 있는 대표적인 File System으로 FAT16과 FAT32 등이 있다.
- 하드디스크에 FAT라는 영역을 만들어 파일의 실제 위치 등의 정보를 기록하여 이용
- 저용량에 적합(4GB 이상 미지원) / 안전성 및 보안성 취약
- 지원하는 드라이브의 최대 크기는 32GB
- NTFS(NT File System)
- MFT(Master File Table)를 사용하여 관리하며, Mirror와 파일 로그가 유지되어 파일 복구가 가능함
- FAT + 대용량 / 보안성 / 압축기능 / 원격저장소 등의 기능을 추가해서 만든 윈도우 전용 File System
- FAT(File Allocation Table)
- Unix & Linux File System
- EXT2 : FSCK(File System Check)으로 시스템 손상 복구 가능
- EXT3 : 저널링 기술로 더울 빠르고 안정적인 복구가 가능
- EXT4 : 빨라진 FSCK, 하위 호환성, 지연된 할당
- Partition
- 하나의 물리적 디스크를 여러 공간으로 나누어, 분할하여 사용
- RAID(Redundant Array of Independent Disks)
- 여러개의 디스크를 이용, 분산 저장하여 성능 및 안전성을 확보하는 기술
- RAID 0(Stripe) : 데이터를 여러개의 디스크에 나누어 저장, 디스크 장애 발생 시 복구 불가
- 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 분산 복수 저장) : RAID 5의 안전성 향상을 위해 Parity를 다중화하여 저장
(4) 분산 시스템
- 분산되어 있는 컴퓨터에서 작업이 나누어 처리되고 그 결과가 서로 호환되도록 연결되어 있는 시스템
- 투명성 보장 필요
- 위치 투명성 : 컴퓨터의 실제 위치를 몰라도 접근 가능
- 이주 투명성 : 자원 이동에 제한이 없어야함
- 병행 투명성 : 사용자의 위치를 몰라도 다른 사용자와 자원의 공유 가능
- 복제 투명성 : 사용자에게 통지할 필요없이 자유롭게 복제 가능
3. 운영체제별 구조와 특징
(1) Unix / Linux 구조 및 특징
Unix / Linux 구조
- 커널(Kernel)
- OS의 핵심으로 주기억장치에 상주하여 자원을 관리함
- 크게 입출력 / 메모리 / 프로세스 / 파일 관리의 부분으로 구분
- 쉘에서 지시한 작업을 수행함
- 쉘(Shell)
- 사용자와 커널간의 인터페이스 제공
- 사용자가 입력하는 명령의 입/출력을 수행하여 프로그램을 실행시킴
- 명령어 해석기 / 번역기
- 파일시스템(File System)
- 계층적 트리 구조를 가지고 있음
- 부트 블럭(Boot Blocks) : 파티션의 첫 부분에 예약되어 있는 블럭, 부팅시 필요한 코드 저장
- 슈퍼 블럭(Super Block) : 파일 시스템 당 한 개씩 생성, 전체 파일 시스템에 대한 정보 저장
- 아이노드(I-Nodes) : 리눅스 커널이 현재 사용하는 자료구조(파일 정보)를 유지하는 구조체
- 파일 이름을 제외한 모든 파일과 디렉터리에 대한 정보를 저장
- 파일 링크 정보 저장(심볼릭 링크 하드링크 구분)
- 심볼릭 링크 : 기존 파일의 바로가기 파일 생성(새로운 I-Node 부여)
- 하드 링크 : 기존 파일과 동일한 I-Node를 갖는 파일 생성
- 데이터 블럭(Data Blocks) : 실제 데이터가 저장
Unix / Linux 특징
- 대화식 운영체제
- 다중 작업 기능(Multi-tasking)
- 다중 사용자 기능
- 이식성(하드웨어 종류에 상관없이 운영되는 특성)
- 계층적 트리 구조 파일 시스템
- 개발 도구
- 통신
- 가상 메모리
(2) Windows 구조 및 특징
Windows 구조
- HAL
- 마이크로 커널
- 각종 관리자
- 응용 프로그램
Windows 특징
- 그래픽 기반 인터페이스(GUI)
- 멀티 태스킹 기능
- 메시지 구동 시스템
- 독립된 장치
Windows 인증
- 인증 프로세스 구성요소
- Winlogon : 윈도우 로그인 프로세스
- LSA : Winlogon을 통해 전달된 계정과 암호 검증을 위해 NTLM 모듈 로딩, 계정 검증
- SAM : 사용자 계정정보 저장
(3) 보안운영체제 특징
접근 권한 통제 : 사용자 인증(Authentication), 접근 통제(Access Control)
침임 탕지 및 방어(Instrustion Detection & Prevention)
'정보보안기사 > 시스템보안' 카테고리의 다른 글
[정보보안기사] 시스템 보안 : 서버 보안 (68) | 2023.05.03 |
---|---|
[정보보안기사] 시스템 보안 : 클라이언트 보안 (16) | 2023.05.02 |
[정보보안기사] 시스템 보안 : CPU의 구성 요소 (9) | 2023.04.28 |
백도어의 정의와 기능, 종류 (0) | 2023.04.13 |
댓글