[정보보안기사] 시스템 보안 - 운영체제
본문 바로가기

[정보보안기사] 시스템 보안 - 운영체제

액트 2019. 6. 19.

시스템 보안 - 운영체제


- 목차 -

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)

 


댓글