[운영체제보안] Protection in OSes

cloudbread·2025년 10월 13일

보안

목록 보기
3/7

1. What is OS?

  • 운영체제는 H/W와 응용프로그램 및 사용자 사이의 인터페이스 역할

  • 운영체제는 H/W와 S/w 자원을 관리

    • 하드웨어 : CPU, 메모리, 디스크, 입출력 장치
    • 소프트웨어 : 스택, 힙, 페이지 테이블, 프로세스 관리 테이블 관리
  • 운영체제는 모든 프로그램이 공통적으로 사용하는 기본 서비스를 제공한다.

  • 운영체제는 응용프로그램이 하드웨어와 직접 상호작용하지 않고, 시스템 호출 (System Call)을 통해 간접적으로 접근할 수 있게 한다.

  • 운영 체제 기능 1) 프로세스 관리 2) 주 기억장치 관리 3) 보조기억 장치관리 4) 파일 관리 5) 입출력 시스템 관리 6) 네트워킹 관리 7) 명령 해석기 시스템

  • 구분주요 역할대표 시스템 호출핵심 개념
    Program Execution
    (프로그램 실행)
    프로세스 생성, 실행, 대기, 종료 관리fork(), execve(), wait(), exit()CPU 스케줄링, 프로세스 상태 전이
    Memory Management
    (메모리 관리)
    가상 메모리 공간 관리 및 보호mmap(), mprotect(), madvise()Segmentation, Paging
    I/O Operations
    (입출력 관리)
    장치 제어 및 데이터 입출력ioctl(), mknod()디바이스 드라이버, 인터럽트 기반 I/O
    File System Manipulation
    (파일 시스템 조작)
    파일 생성, 읽기, 쓰기, 삭제creat(), open(), read(), write(), unlink()파일 및 디렉터리 관리
    IPC (Inter-Process Communication)
    (프로세스 간 통신)
    프로세스 간 데이터 교환 및 동기화pipe(), flock(), futex()Shared Memory, Message Passing
    Error Detection & Handling
    (오류 검출 및 처리)
    시스템 및 프로세스 오류 감지, 복구errno, 시그널(signal)예외 처리, 접근 위반 감지

2. 운영체제의 자원 관리

1) 가상 메모리 관리

  • 운영체제는 물리적 메모리(RAM)가 부족해도 프로그램이 실행될 수 있도록 가상 메모리를 제공한다.
  • 가상 메모리는 보조기억장치(HDD,SSD)의 일부를 RAM처럼 사용하는 기술
  • 방식 1) 세그멘테이션(segmentation) : 논리적 단위로 나누어 관리
  • 방식 2) 페이징 (Paging) : 메모리를 동일한 크기의 블록으로 나누어 관리

2) 디스크 관리

  • HDD : 자기 디스크 기반 저장 장치
  • SSD : 플래시 메모리 기반 저장 장치
  • OS는 디스크 스케줄링 알고리즘을 통해 읽기/쓰기 요청의 효율을 최적화한다.
  • OS는 이러한 저장 장치에서 I/O 요청 처리를 관리한다.

3) 입출력 관리

  • 입출력은 CPU,메모리,주변장치 간의 데이터 교환 과정을 의미한다.
  • 운영체제는 I/O 요청 관리, 장치 드라이버 관리, I/O 스케출링을 관리한다.

3. Multi-User Operating System (다중 사용자 운영체제)

  • Multi-user OS는 여러 사용자가 동시에 동일한 시스템 자원을 공유할 수 있도록 설계된 운영체제이다.
  • 각 사용자는 프로세서 시간의 일부분을 할당받아 프로그램을 실행한다.
  • 이때 time slice가 너무 짧으면 context swiching이 자주 일어나서 overhead가 발생한다.
    • cpu가 현재 실행 중인 프로세스의 상태를 저장하고, 다른 프로세스의 상태를 복원하여 실행을 전환하는 과정
  • Multi - tasking : 하나의 CPU 프로세스에 나누어 빠르게 전환하며 동시에 실행하는 것처럼 보이는 것

4. 프로세스 상태와 큐

  • A가 누락된 이유
  1. 작업 완료 -> 프로세스 종료
  2. I/O 요청 -> wating 상태로 전환
  • 시간 0: A, B, C가 Ready Queue에 있음
  • 시간 1: A가 디스크 읽기 요청 → Waiting Queue로 이동
    • Ready Queue: B, C
    • Waiting Queue: A

4. CPU가 직접 접근할 수 있는 스토리지

  • CPU는 속도가 빠른 스토리지에서만 직접 데이터를 읽고 쓸 수 있다.
    • 레지스터(resgister) : CPU 내부의 가장 빠른 임시 공간
    • 캐시 (Cache) : CPU와 메인 메모리 사이의 고속 버퍼
    • 메인 메모리 (RAM) : 프로세스 실행에 필요한 데이터를 저장
  • 따라서, 프로세스가 실행되려면 반드시 이러한 스토리지 중 하나에 로드되어 있어야 한다.

5. Interrupt (인터럽트)

  • CPU가 수행중인 작업을 일시 중단하고, 긴급한 이벤트를 처리하도록 OS에 신호를 보내는 것
  • 예 : 키보드 입력, 디스크 읽기 완료, 타이머 완료

6. 라운드 로빈 스케줄링

  • 각 프로세스가 도착하면 Ready Queue에 들어가고, 타임 퀀텀(2) 동안 CPU를 할당받아 실행한다
  • 타임 퀀텀이 끝나면 실행 중이던 프로세스는 다시 큐 맨 뒤로 이동하며, 대기 상태로 들어가게 된다.
  • CPU 작업이 끝나면 I/O Burst를 수행하며, I/O가 끝나면 다시 Ready Queue에 들어가 타임 퀀텀 단위로 CPU 사용을 반복한다.

7. 운영체제는 시스템이 효율적으로 동작하도록 보장한다.

  • 자원 할당 : 여러 사용자나 동시에 실행 되는 여러 작업에 자원을 할당한다.
  • 가상화 : 운영체제는 가상화라는 기술을 통해 시스템이 정확하고 효율적으로, 사용자가 쉽게 이용할 수 있는 방식으로 동작하고 관리한다.
  • 회계(Accounting) : 어떤 사용자가 어떤 종류의 컴퓨터 자원을 얼마나 사용했는지를 기록하고 추적한다.

8. 공유 (sharing) vs 보호 (Protection)

  • 공유 (sharing)
    • Multi-User : 여러 사용자가 시스템을 동시에 이용
    • Multi-tasking : 여러 프로세스가 동시에 실행될 수 있도록 지원
    • Multi-processing : 하나 이상의 CPU에서 프로세스를 실행할 수 있도록 지원 => 여러개의 CPU를 사용해서 여러 프로세스를 동시에 실행하는 것
    • Multi-threading : 하나의 프로그램 내 여러 부분이 동시에 실행 될 수 있도록 지원 => 리눅스는 process가 달라도 커널, stack을 제외한 메모리를 공유하고 있음 (thread)
  • 보호 (protection)
    • 중요한 자원에 대한 접근을 제어하는 매커니즘
    • 자원 보호 1)보호 없음 2)격리 (프로세스는 독립된 주소를 가짐) 3) 완전 공유 또는 완전 비공유 4) 접근 제한을 통한 공유

9. 프로세스 vs 파일

  • 프로세스 : 시스템에서 실행중인 전형적인 주체 (프로그램 이름, PID, PCB(Process Control Block))
  • 파일 : 시스템에서 정보를 저장하거나 처리하는 논리 단위 (파일 이름, i-node, FCB(File Control Block))

10. Thread

  • 하나의 프로세스 안에서 여러 쓰레드를 생성 => code segment, data segment는 무조건 공유한다.
  • data segment : 전역 변수
  • thread의 기본 단위는 함수라고 생각하면 된다
  • 스레드의 정보를 저장하는 자료구주는 TCB이다.

11. 운영체제에서의 보호

  • 보호는 시스템 자원과 사용자 자원에 접근하는 것을 제어하는 매커니즘
  • 이 매커니즘은 권한 있는 접근과 권한 없는 접근을 구분해야 한다.
  • 보호의 목표
    1) 컴퓨터 구성요소 : H/W, S/W, File
    2) 각 객체는 고유한 이름을 가지며 정의된 연산을 통해 접근 가능
    3) 각 객체는 허가된 프로세스만 올바르게 접근할 수 있도록 보장
  • 운영체제 보호의 기본 원리 : 격리
    • 커널 공간 vs 사용자 공간
    • 루트 사용자 vs 일반 사용자
    • 프로세스 주소 공간 분리

12. 운영체제에서의 분리 유형

1) 물리적 분리 - 별도의 장치를 이용한 분리

  • CPUs (Multicore processor), 프린터, 네트워크 장치 등
  • 예 : 망 분리

2) 시간적 분리 - 다른 시간에 실행

  • 같은 자원을 서로 다른 시간에 사용하도록 하여 충돌 방지

3) 논리적 분리 - 각 사용자가 시스템 내 혼자 있는 것처럼 인식

  • 주소 공간 분리, 샌드 박싱
  • 각 프로세스마다 별도의 주소 공간 부여

4) 암호화 분리 - 데이터를 숨겨 다른 사용자가 이해하지 못하도록 함

  • 외부인이 정보를 이해할 수 없도록 보호

13. Sandboxing

  • 샌드박스는 프로그램이 실행될 수 있는 격리된 환경 => 가상 머신
  • 강력한 격리는 개념적으로 간단
  • 별도의 머신에서 실행하거나 VMware같은 가상 환경에서 실행

14. Address space & Process separation

15. virtual machine vs container

  • 가상 머신 (VM) : 각 VM이 자체 OS를 가지므로 완전히 격리되지만, 무겁고 자원 소모가 큼
  • 컨테이너 (Container) : 호스트 OS를 공유하며 가볍고 빠르게 생성 가능하지만, OS 수준에서는 완전 격리가 아님

16. 커널

  • 커널은 운영체제의 핵심으로 하드웨어 자원을 관리하고, 프로세스와 메모리를 제어하며, 시스템 호출을 통해 사용자 프로그램과 소통하며, 파일 시스템/네트워크/보안 등 시스템 전체를 관리하는 역할
  • Ketnel mode 운영
  • Process Scheduling
  • System Call interface
  • Memory Management
  • IPC (inter Process Communication) 관리 -> 프로세스간 통신과 동기화 지원
  • 가상 파일 시스템
  • 네트워킹

17. 운영체제가 해야할 일

1) 자체 보호 : 활성 주체의 오용/남용으로부터 OS 보호
2) 사용자 보호 : 한 사용자가 다른 사용자를 방해하거나 침해하지 못하게 보호
3) 프로세스 보호 : 한 프로세스가 다른 프로세스에 영향을 주지 않도록 보호

  • 운영체제의 주요 보호 기능
    • 권한 수준 (Privilege level) & 메모리 보호 (Memory protection)
    • file permissions
profile
잡다한거 다 공부중....

0개의 댓글