[크래프톤 정글/Week 09] 키워드 정리

2024. 11. 12. 19:32·활동/크래프톤 정글


☑️ 유저 모드 vs 커널 모드(User Mode vs Kernel Mode)

운영체제에서 하드웨어의 주요 권한을 응용 프로그램으로부터 보호하기 위해 사용되는 기법

 

Window에서의 커널 모드와 유저 모드

 

⭐  커널이란?  

  • 영문 사전에서 커널(Kernel)은 '핵심'을 의미한다.
    • 컴퓨터 과학 용어들은 단어의 뜻 그대로를 가리키는 경우가 많다.
    • 커널도 운영체제에서 핵심을 의미한다.
  • 커널의 주요 기능은 다음과 같다.
    • 메모리의 할당 및 해제를 관리한다.
    • 프로세스 생성 및 소멸을 관리하며 어떤 프로세스가 CPU에 할당될지 결정한다.
    • 하드웨어 장치를 제어하고 입출력 작업을 처리한다.
    • 응용 프로그램에서 요구하는 요청을 처리한다.

 

⭐  유저 모드 vs  커널 모드  

  • 커널은 위와 같이 컴퓨터 하드웨어의 핵심적인 역할을 담당한다.
  • 이러한 커널이 응용 프로그램에서 다뤄지게 된다면, 악용되거나 시스템의 안정성을 깨트리게 될 수 있다.
    • OS는 2가지의 모드로 분리해서 커널을 관리한다.
    • 커널 모드에서는 커널에 접근하여 주요 작업을 처리할 수 있다.
    • 응용 프로그램은 사용자 모드에서 작동한다.
      • 응용 프로그램에서 커널의 도움이 필요한 작업(파일 입출력, 프로세스 관리, 등)이 있다면 시스템 콜을 통해서 운영체제를 일시적으로 커널 모드로 전환하여 작업을 처리할 수 있다.
  • 커널 모드는 하드웨어의 권한 전역에 접근할 수 있는 기능을 제공한다.
  • 유저 모드는 하드웨어의 지정된 영역에서만 접근할 수 있다.

 

☑️ 레지스터 vs 메모리(Register vs Memory)

레지스터와 메모리는 기억 장치를 의미한다. 다만, 레지스터는 특정한 목적을 가진 빠른 속도의 저장소다.

 

  • 레지스터와 메모리는 데이터를 처리하는 기억 장치다.
    • 레지스터 : CPU 내부에 위치한 초고속 임시 저장 장치
    • 메모리 : CPU 외부에 위치한 주기억장치
  • 동일한 역할을 하는 장치가 2개인 것은 CPU의 병목현상에 이유가 있다.
    • CPU는 매우 빠른 속도로 작업을 처리한다.
    • 메모리는 CPU 보다는 적은 속도를 가진다.
    • 이로 인해서 CPU가 메모리를 기다리는 병목 현상이 발생할 수 있다.
  • CPU 병목 현상을 해소하고자, CPU 내부에 메모리, 레지스터를 위치시켰다.
    • 레지스터는 실행 중인 프로그램에 대한 정보가 담긴다.

 

☑️ 유저 스택(User Stack)

프로그램 실행 중에 임시로 할당되는 메모리 영역 중 하나

 

  • 프로세스는 하나의 유저 스택과 커널 스택을 가지게 된다.
  • 유저 스택은 프로세스가 유저 모드에서 처리될 때 사용되는 메모리 영역을 의미한다.
    • 커널 스택은 프로세스가 커널이 필요한 작업을 요청했을 때, 커널 모드의 작업을 처리할 때 사용된다.
    • 커널 스택은 커널 영역에 위치해 있으므로, 프로세스가 직접 접근할 수 없다.
  • 유저 스택은 프로세스 할당 시에 생성된다.
    • 프로그램이 시작하면 진입점(Entry-Point)에 들어가는 Command와 Argument , 기타 정보를 저장한다.
    • 실행 중에는 Local 변수 및 함수의 Return Address와 같은 정보들을 보유한다.
    • 프로그램 실행 종료 후의 Exit Address도 보유하게 된다.

 

☑️ 시스템 콜(System Call)

하드웨어의 기능을 사용할 수 있도록 추상화한 메서드

 

  • 시스템 콜은 응용 프로그램이 OS가 제공하는 서비스에 접근할 수 있도록 하는 인터페이스(함수)를 의미한다.
    • 커널에 존재하는 기능들을 사용하기 위해서는 시스템 콜을 통해서 접근해야 한다.
    • 응용 프로그램은 직접적으로 하드웨어를 조작하는 것이 아니라, 시스템 콜을 통해서 조작하게 된다.
      • 프로세스 관리, 파일 입/출력, 디바이스 관리, 프로세스 통신, 메모리 관리, 등
  • 시스템 콜을 호출하면 유저 모드에서 커널 모드로 변경된다.
    • 작업이 완료되면 다시 유저 모드로 전환한다.

 

☑️ 파일 디스크립터(File Descriptor)

프로세스가 파일 접근/수정에서 사용하는 추상적인 값

 

  • 파일 디스크립터는 Linux/Unix 계열의 OS에서 프로세스가 파일을 다룰 때 사용되는 추상적인 값이다.
    • 해당 계열의 OS는 파일, 폴더, 소켓, 등의 모든 객체들을 '파일'로 분류한다.
    • 파일 디스크립터는 음수가 아닌 정수를 값으로 가진다.
  • 모든 프로세스는 각자 파일 디스크립터를 가지게 된다.
    • 0은 표준 입력, 1은 표준 출력, 2는 표준 에러의 의미를 가진다.
  • 프로세스 ID를 통해서 파일 디스크립터(File Descriptor)를 확인할 수 있다.
  • 파일 디스크립터를 할당하는 주체는 커널이다.

 

☑️ 캐시(Cache)

메모리와 레지스터 사이를 잇는 보조 기억 장치

 

  • 레지스터와 동일하게 CPU의 병목현상을 줄이기 위해서 사용되는 메모리다.
  • 캐시 메모리는 지역성(Locality) 개념으로 인해서 CPU 성능을 향상한다.
    • 시간 지역성은 한 번 접근된 데이터는 짧은 시간 동안 다시 접근될 가능성이 높다는 의미다.
    • 공간 지역성은 호출된 메모리 주소의 인근 주소로 다시 접근할 가능성이 높다는 의미다.
    • 두 가지 지역성을 기반으로 캐시 메모리는 데이터를 보유한다.
    • 이로 인해서 CPU는 빠르게 원하는 정보를 찾을 수 있다.

 

☑️ 원자적 연산(Atomic Operation)

실행 중인 프로그램의 OS에서의 관점을 프로세스라고 한다.

 

  • 실행 시에 중단 없이 실행되는 연산을 의미한다.
  • 원자적 연산은 작은 원자적 연산과 큰 원자적 연산을 가진다.
    • 작은 원자적 연산 : 더 이상 쪼개질 수 없는 연산
    • 큰 원자적 연산 : 작은 원자적 연산으로 이루어져 있으나 중단 없이 실행을 보장받은 연산
  • OS의 다른 프로세스에 종속되거나 중단되지 않고 실행되어야 하는 병렬 처리에서 많이 사용된다.
  • 원자적 연산은 프로세스/스레드의 동시 접근을 방지하며, 데이터의 무결성과 일관성을 유지한다.
    • 어떤 프로세스가 변수 N의 값을 10으로 올려주는 함수 Up을 실행했다고 가정하자.
    • 함수 Up을 실행하는 중간에 다른 프로세스가 변수 N의 값을 100으로 올렸다.
    • 초기 예상된 값은 10이고 함수가 종료되고 나타난 값은 110이 되는 문제가 발생한다.
    • 원자적 연산을 사용함으로써 중단 없이 실행을 보장받아 값을 10으로 만들 수 있다

 

☑️ Rax Register

레지스터 집합에 속하는 레지스터의 이름

 

  • Rax 레지스터는 64비트 환경에 존재하는 휘발성 레지스터다.
  • 함수의 반환 값을 저장하는 레지스터다.

 

☑️ 32bit OS vs 64bit OS

컴퓨팅 연산을 처리할 수 있는 단위가 각각 32Bit, 64Bit인 운영체제

 

  • 운영체제는 컴퓨터 시스템에서 리소스를 관리하고 작업을 실행하는 낮은 계층의 소프트웨어다.
    • 1990년대에 컴퓨터는 32 Bit를 가지고 데이터를 처리하거나 전송할 수 있었으며, 운영체제도 이에 맞춰서 32 Bit를 기준으로 연산을 하게 되었다.
    • 이를 32 Bit OS라고 한다.
    • 이후, 컴퓨터의 연산량이 32 Bit에서 64 Bit로 변경됨에 따라서 64 Bit OS가 나타나게 되었다.
  • 64 Bit OS는 기존 32 Bit OS에서 동작하는 프로그램들과의 호환성 계층을 지원한다.
    • 64 Bit OS는 이론적(2^64)으로 16 EB(엑사바이트)의 값을 참조할 수 있다.
    • 32 Bit의 데이터가 처리되면 64비트 만들어준ㄴ다~ 내일 더 자세하게 쓰렴

 

☑️ 인터럽트(Interrupt)

프로세스 실행 중에 예외 사항이 발생할 경우, 발생 상황을 처리하기 위한 실행 흐름

 

  • 프로세스 실행 중에 예외가 발생하면 나타나는 신호를 의미한다.
  • CPU는 현재 실행 중인 작업을 중단하고 발생된 상황을 처리하고 다시 실행 중인 작업으로 복귀한다.
  • 인터럽트는 다음과 같은 순서로 실행된다.
    • 인터럽트 신호 발생
    • 현재 프로세스 실행 중단 : Atomic Operation까지 작업 실행
    • 현재 프로세스의 상태 저장 : PCB에 현재 실행 중인 프로세스 정보/상황 저장
    • 인터럽트 처리 루틴 실행, 인터럽트 서비스 루틴 실행 : 인터럽트 원인 파악 후, 우선순위에 따라 실행
    • 상태 복구
    • 중단 프로세스 실행 재개

 

☑️ 세그먼테이션 폴트(Segmentation Fault)

허용되지 않은 메모리 영역에 접근하거나 허용되지 않은 방법으로 메모리 영역에 접근을 시도할 때 나타나는 에러

 

  • 기존에는 메모리를 세그먼트라는 블록 단위로 나누었다.
    • 코드 세그먼트, 데이터 세그먼트, 스택 세그먼트, 힙 세그먼트
  • 서로의 고유한 영역을 침범해서 작업이 진행되면 오류가 발생한다.
  • 이때 발생하는 오류가 세그먼테이션 폴트다.
    • 즉 허락되지 않은 메모리 영역에 접근하려고 했을 때 발생하는 메모리 접근 오류.

'활동 > 크래프톤 정글' 카테고리의 다른 글

[크래프톤 정글] 크래프톤 정글 7기를 끝마치며..  (0) 2025.02.10
[크래프톤 정글/Week 11] 키워드 정리  (0) 2024.11.23
[크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 높은 우선순위 먼저 실행하기 )  (0) 2024.11.08
[크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 정리 )  (1) 2024.11.07
[크래프톤 정글/Week 08] 키워드 정리  (3) 2024.11.05
'활동/크래프톤 정글' 카테고리의 다른 글
  • [크래프톤 정글] 크래프톤 정글 7기를 끝마치며..
  • [크래프톤 정글/Week 11] 키워드 정리
  • [크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 높은 우선순위 먼저 실행하기 )
  • [크래프톤 정글/Week 08/PintOS] Priority Scheduling ( 정리 )
태역
태역
  • 태역
    RYULAB
    태역
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 언어
        • C
        • C++
        • C#
      • 엔진, 프레임워크
        • Unity
        • Unreal
        • Electron
      • 공부
        • 디자인 패턴
        • 수학
        • CS
        • Git
        • 알고리즘
        • 자료구조
      • 코테
        • 프로그래머스
        • 백준
      • 독서
        • Effective C#
        • CLR via C#
        • 뇌를 자극하는 윈도우즈 시스템 프로그래밍
        • 오브젝트
        • CSAPP
        • OSTEP
      • 프로젝트
        • Unity
      • 개발 일지
        • 퓨처리티
        • 골든타임
      • 활동
        • 게임잼 후기
        • 게임제작동아리 브릿지
        • 크래프톤 정글
        • 기타
      • 기타
  • 블로그 메뉴

    • 링크

    • 공지사항

      • 2024 04 17
    • 인기 글

    • 태그

      인프런 #인프런강의후기 #게임개발 #게임개발강의 #인강후기 #강의후기 #게임개발자 #인프런강의
      오블완
      티스토리챌린지
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    태역
    [크래프톤 정글/Week 09] 키워드 정리
    상단으로

    티스토리툴바