ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kernel / user mode, kernel mode
    운영체제보안 2024. 10. 14. 21:46

    운영체제

    하드웨어 자원을 관리하고 프로그램에게 서비스를 제공하는 시스템 소프트웨어

    프로세스 관리, 인터럽트, 메모리 관리, 파일 시스템, 디바이스 드라이버, 네트워킹, 보안, I/O

     

    ------유저------
    표준 유틸리티 프로그램
    ------(쉘, 에디터, 컴파일러 등)------
    표준 라이브러리
    -------(open, close, read, write, fork 등)--------
    리눅스 OS
    ------(프로세스 관리, 메모리 관리, 파일 시스템, I/O 등)-------
    하드웨어
    ----------------(CPU, 메모리, 디스크, 터미널 등) ----------------

     

    Utilities

    Shell: 커맨드 인터프리터

    커맨드, 툴 ..

    cat, chmod, cp, cut, grep, head, ls, make, mkdir, od, paste, pr, ps, rm, rmdir, sort, tail, tr

     

    사용자 프로세스는 하드웨어 접근이 필요할 때가 있는데, 시스템 콜을 이용

    커널 코드와 데이터는 사용자 프로세스로부터 보호받음


    Key Concepts

    Process

    능동적인 객체. 실행 중인 프로그램, 가장 주소를 가지고 하나 이상의 스레드를 가짐

    프로세스 관리를 위해 OS에서 PCB 같은 걸로 관리

     

    Virtual Address Space

    어떤 프로세스, 스레드에 대한 실행 문맥

    처리할 데이터와 코드 주소를 관리하기 위한 네임 스페이스를 정의

    => 명령어들이 참조하는 주소를 가진 데이터와 코드들의 이름들로 구성된 실행 문맥

     

    Kernel

    - 하드웨어를 직접적으로 통제하는 소프트웨어의 구성 요소

    - 커널은 특권 기능들을 구현

    - 인터럽트 처리, 스케줄링, IPC, Fault, 시스템 콜 등등 다 커널이 처리

    - 신뢰되지 않는 사용자 코드로부터 보호를 받음

    - 모든 하드웨어 장치에 대해 가장 기본적인 수준의 통제 기법을 제공

    - 일반 사용자가 임의로 조작을 못하게 함

     

    FIle

    디스크에 저장되는 데이터와 정보(기본적인 단위)

    컴퓨터 내부 자원에 대한 접근 허가 적용의 대상


    User and Kernel Mode

     

    커널은 무엇인가?

    시스템의 모든 것은 완전히 통제하는 OS의 중심 컴포넌트

    - CPU 스케줄링, 컨텍스트 스위칭, IPC(메시지 큐, 쉐어드 메모리, 세마포어)

    - 메모리 관리

    - 익셉션 핸들러 (인터럽트 핸들러)

     

    CPU와 OS는 듀얼 모드 오퍼레이션 지원

    => 유저 모드와 커널 모드

     

    CPU mode : User and kernel mode

    몇몇 명령어나 레지스터는 커널 모드일 때만 합법적으로 접근 가능

     

    모드 전이

    익셉션 이벤트 발생 시 커널 모드로 전이 (trap, fault, interrupt)

     

    CS 레지스터의 하위 2비트가 현재 모드를 알려줌

    00 => 커널 모드

    11 => 유저 모드

    Protection rings.. 그런데 리눅스에선 보통 두 개만 씀

     

    쓰는 이유

    만약 오류가 있는 프로그램, 악의가 있는 프로그램이 권한이 없는데 특권 명령어 시도 시 차단 가능

    하드웨어적으로 보호 기법도 있음

    유저 모드 => 사용자를 위해 실행될 때

    커널 모드 => OS 코드, 커널 코드를 실행할 때

     

    커널모드

    모든 하드웨어에 대해 충분한 접근을 제공해야 함

    - 어떤 명령어들은 커널 모드에서만 사용 가능

    - 어떤 특징, 특권은 커널 모드에서만 실행됨

    - 커널은 CPU나 메모리와 같은 하드웨어와 직접적으로 상호작용

     

    유저모드

    할 수 있는 일이 제한됨

    유저 프로그램은 커널 모드와 분리됨


    커널 모드 특권

     

    특권 명령어

    - 인터럽트를 enable, disable 가능, 메모리 매핑 바꾸기 등 가능

     

    특권 메모리 or I/O 접근

    - 특정한 메모리 영역이나 I/O 공간은 커널에 의해서만 접근 가능

    - 크리티컬 섹션, 커널 자료구조

     

    분리된 스택과 레지스터 셋

     

    * 커널이 차지하는 공간.. 32비트 기준 1기가


    커널 모드로의 진입

    트랩, 폴트, 인터럽트의 결과

      intentional unintentional
    synchronous
    (coused by an instruction)
    trap: system call fault
    asynchronous
    (coused by some other event)
    software interrupt interrupt

    * 소프트웨어 인터럽트: 소프트웨어가 명시적으로 인터럽트 요청

     

    '운영체제보안' 카테고리의 다른 글

    리눅스 매뉴얼, 커맨드  (0) 2024.10.14
    User Authentication  (0) 2024.10.14
    Running Command with Privilege  (0) 2024.10.12
    File permissions  (0) 2024.10.12
    리눅스 보안 introduction  (0) 2024.10.12
Designed by Tistory.