Kernel, user mode, kernel mode

2024. 3. 26. 03:03·컴퓨터 공학(Computer Science)/OS

User mode, Kernel mode

CPU는 User mode, Kernel mode 2가지 중 한 모드에서 동작한다. 어떤 모드로 동작할 것인지는 CPU내의 mode register에서 결정한다.

응용 프로그램은 user mode에서, 커널 코드는 kernel mode에서 동작한다.


User mode

User mode에서는 User Space만 접근할 수 있다. 만약, Kernel Space에 접근하게 되면 오류를 발생시킨다. User mode에서는 어떤 하드웨어에도 접근할 수 없다. 또 다른 응용 프로그램에게 할당된 메모리에도 접근할 수 없다.

특권 명령(privileged instruction)도 실행할 수 없다.

Kernel mode

kernel mode 에서는 모든 메모리 공간 접근가능하며, 특권 명령을 실행할 수 있다. 커널 코드는 커널 모드일 때 실행되기 때문에 모든 명령 가능하다.


mode 전환

user mode에서 kernel mode로 전환이 일어나는 경우는 2가지다.

  • system call
  • interrupt

항상 커널 접근을 위해서는 system call과, interrtupt 2가지 방법만 있다는 것을 알아두자. 왜냐면 시스템 보안, 안전성을 위해서(이미 실컷 얘기 했음)

system call시 CPU 기계 명령이 실행되고, 이것에 의해 user mode에서 kernel mode로 바뀐다. system call이 끝나면 다시 기계 명령이 실행되고 user mode로 전환된다.

interrupt시 CPU는 자동으로 user mode에서 kernel mode로 바뀌고 ISR()을 실행한다. ISR()이 커널 공간에 있기 때문임. ISR()끝나면 다시 user mode로 전환 하던일 마저 한다.


특권 명령

특권 명령은 kernel mode에서만 사용할 수 있다. CPU제조 업체에 의해 설계된 기계 명령

  • I/O 명령
  • Halt 명령
  • interrupt flag
  • 타이머
  • context switching

그렇게 중요하진 않은듯..


user mode와 kernel mode는 CPU의해 구현된다. 커널에 의해 구현되는 것이 아님.

'컴퓨터 공학(Computer Science) > OS' 카테고리의 다른 글

OS와 인터럽트  (0) 2024.03.30
Kernel의 실체  (0) 2024.03.26
커널과 시스템 호출  (0) 2024.03.25
배치(batch) OS, 다중 프로그래밍, 시분할 시스템  (0) 2024.03.14
'컴퓨터 공학(Computer Science)/OS' 카테고리의 다른 글
  • OS와 인터럽트
  • Kernel의 실체
  • 커널과 시스템 호출
  • 배치(batch) OS, 다중 프로그래밍, 시분할 시스템
Jminu
Jminu
  • Jminu
    뇌 구조가 바이너리
    Jminu
  • 전체
    오늘
    어제
    • 분류 전체보기
      • C프로그래밍
        • 오류해결
        • 개인 공부
        • Programming Lab(학교수업)
        • MemoryTracker
      • C++
        • 개인 공부
      • 자료구조(Data Structure)
      • ARM arch
        • Cortex-M
        • FreeRTOS
      • 컴퓨터 공학(Computer Science)
        • OS
        • 컴퓨터 구조
      • Qualcomm 기업과제
      • Linux
        • start_contribute()
        • start_analyse()
      • Web
      • 똥글
      • 백준
      • Git 학습
        • 오류해결
        • 학습중
      • Python
        • 오류해결
        • 개인 공부
  • 블로그 메뉴

    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    소수
    파일 입출력
    드라이버 분석
    yolo
    피보나치
    rubikpi3
    백준
    C++
    arm
    시스템콜
    커널
    이진 트리
    Qualcomm
    rubik pi
    스택
    Git
    파이썬
    버퍼
    동적메모리
    c언어
    커널 기여
    자료구조
    순환
    commit
    앤드류모튼
    INIT
    Branch
    포인터
    리눅스
    토발즈
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Jminu
Kernel, user mode, kernel mode
상단으로

티스토리툴바