본문 바로가기
자격증/정보보안기사

[시스템 보안] 운영체제의 구조 및 이해, 관리

by 푸고배 2021. 3. 2.

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.까지 모두 만족해야 발생
    1. 상호배제(Mutual Exclusion) : 한 프로세스가 자원을 다른 프로세스가 사용 못하게 배제할 때
    2. 점유대기(Wait) : 프로세스가 자신에게 할당된 자원을 해제 안하고, 다른 자원을 기다릴 때
    3. 비선점(비선점 조건; Non-Preemption) : 프로세스에 할당된 자원을 끝날 때까지 해제 할 수 없을 때
    4. 순환대기(Circular Wait) : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
    5. 발생 조건 : 1.~4.까지 모두 만족해야 발생
  • 해결방안
    1. 예방 : 교착 상태의 필요조건을 부정함으로써, 교착 상태가 발생하지 않도록 하는 방법
    2. 회피 : 교착 상태 가능성을 인정하고, 적절하게 피하는 방법 (은행원 알고리즘)
    3. 발견(탐지) : 교착 상태가 발생하면, 교착 상태의 프로세스와 자원을 발견하는 방법
    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 이기적 정보보안기사 필기 이론서

 

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

- 목차 - 1. 운영체제 (1) 운영체제 개요 ① 운영체제의 주요 기능   ② 운영체제의 구조   ③ 운영체제의 기술발전 흐름   (2) 운영체제의 주요 구성 기술   ① 프로세스 관리   

yjshin.tistory.com

 

반응형

댓글