[OS] Operating System 01 - Introduction 02

2023. 12. 28. 23:25CS/OS

메모리 계층 구조

 

컴퓨터 시스템에서 데이터 저장과 접근을 효율적으로 관리하기 위한 구조이다. 해당 구조 내부에서는 다양한 유형의 메모리를 보여준다.

메모리 계층 구조

 

여러 유형의 메모리는 속도, 용량, 비용의 특성을 감안하여 계층적으로 배치가 된다. 상위에 배치된 항목일수록 속도가 빠르고 가격이 비싸며 용량이 적다. 반대로 하위로 넘어갈수록 속도는 느려지지만 가격은 저렴해지고 용량은 커진다

  • 레지스터(Register)
    • cpu내부에 위치하며 가장 빠른 접근 속도를 제공한다
    • 작은 용량을 가지고 있으며 cpu가 현재 처리하는 명령어와 데이터를 저장하는 역할을 한다
  • 캐시(Cache)
    • cpu와 메인메모리 사이에 존재한다
    • 레지스터보단 느리지만 메인메모리보단 빠른 속도를 가지고 있다
    • 자주 사용되는 데이터를 임시로 저장하여 cpu가 메인메모리에 접근하는 경우를 줄이기에 cpu의 데이터 접근 속도를 향상한다
  • 메인 메모리(Main Memory or RAM)
    • 프로그램과 현재 사용 중인 데이터가 저장되는 메모리
    • 윗 계층보단 속도가 느리지만, 레지스터나 캐시보단 훨씬 큰 용량을 가지고 있다
  • 보조 저장장치(Secondary Storage)
    • HDD, SDD 같은 장치가 속한 계층
    • 대용량의 데이터를 영구적으로 저장

 

Computer System Architecture

 

Components

  • CPU
    • 명령어(instruction)를 실행시키는 하드웨어
    • 기본적인 산술, 논리, 입력/출력 연산을 수행
  • Processor - 프로세서
    • 하나 이상의 CPU를 포함하는 물리적인 칩
    • 하나의 프로세서 칩은 여러 CPU를 포함할 수 있다
  • Core
    • CPU 내의 개별 처리 단위
    • 프로그램 지시사항을 읽고 실행 가능
    • 현대의 CPU는 다중 코어를 가지고 있고, 여러 작업을 동시 수행가능하여 성능의 향상이 이뤄진다
  • MultiCore
    • 단일 CPU에 여러 개의 코어가 포함된 것을 의미
    • 동시에 여러 프로세스를 실행 가능 -> 컴퓨터의 효율성과 속도를 증가
      • 모든 코어가 같은  칩 위에 존재하며 종종 CPU의 자원(캐시 메모리)을 공유할 수 있기 때문이다
    • 여러 개의 코어가 매인 메모리를 공유하는 구조를 가지고 있다
  • MultiProcessor
    • 하나 이상의 프로세서를 포함하는 컴퓨터 시스템을 설명하는 용어
    • 각 프로세서는 하나 이상의 코어를 가진다
    • 서로 다른 작업에 대해 협력하며 컴퓨터의 복잡한 계산 수행 능력과 다중 작업 능력을 크게 향상 시킴
    • Symmetric Multiprocessing (SMP)
      • 가장 많이 알려진 멀티 프로세서 시스템
      • 모든 프로세서는 동등한 지위를 갖고 운영 체제에 의해 제어되며 각 프로세서가 작업을 분담하여 처리
      • 프로세서 동등성 - 모든 프로세서는 동일한 기능을 가지며, 우선순위가 존재하지 않는다
      • 공유 메모리 - 모든 프로세서는 하나의 물리적 메모리공간을 공유
      • 운영체제 지원 - 운영체제가 프로세서 간의 부하를 적절히 분산시켜야 한다 -> 멀티태스킹 & 병렬처리
    • Asymmetric MutiProcessing
      • 프로세서들이 동일한 역할을 수행하는 것이 아닌 각기 다른 작업을 담당
        • 각 프로세서들이 특정 기능을 맡고 있으며 해당 역할은 교환 불가능
      • 모든 프로세서가 비슷한 작업을 수행하고 운영체제에 의해 분배된 처리를 하는 Symmetric 방식과 대비
      • 장점
        • 특정 작업을 위해 프로세서를 최적화하여 성능을 향상한다
      • 단점
        • 시스템 설계와 관리가 더 복잡해진다

 

Operating System Operations

 

MultiProgramming

  • 컴퓨터가 여러 프로그램을 메모리에 적재하여 실행
  • CPU의 활용도를 극대화하여 시스템의 효율성 증가
  • 프로그램이 입출력 작업으로 대기해야 할 때 다른 프로그램 전환으로 CPU가 계속해서 작업을 진행할 수 있게 한다
  • 운영체제가 메모리 관리를 효율적으로 수행해야 하며, 프로세스 사이의 전환(콘텍스트 스위칭)이 자주 발생
  • 프로세스는 독립된 메모리 공간을 할당받으며, 운영체제는 이러한 프로세스들 사이에서 자원 분배와 스케줄링을 담당

ex - image

MultiTasking

  • 하나의 CPU가 여러 프로그램이나 프로세스를 동시에 처리할 수 있는 것을 의미
  • 매우 짧은 시간 간격으로 여러 작업을 전환하면서 각 작업에 CPU 시간을 조금씩 할당
    • 매우 짧은 시간으로 전환이 되기에 사용자는 동시에 실행되는 것처럼 느낀다

Schduling

  • 프로세스들이 동시에 준비상태에 놓이는 경우 어떤 프로세스를 우선적으로 실행시킬지 결정하는 정책
  • 예시
    • 선입선출 : 먼저 도착한 프로세스가 먼저 실행
    • 최단작업 우선 : 실행시간이 가장 짧은 프로세스에게 우선순위 부여
    • 라운드 로빈 :  각 프로세스에게 동일한 시간 할당량 부여 및 순환 방식으로 작업 처리
    • 우선순위 기반 : 각 프로세스에 우선순위 할당, 높은 우선순위를 가진 프로세스를 먼저 처리
    • 다단계 큐 : 프로세스를 여러 큐에 분류, 각 큐마다 다른 스케쥴링 알고리즘 적용

 

Mode

- 프로세스가 실행될 때의 두 가지 모드 -> 보안과 안전성에 중요한 역할을 하고 있다

  • user mode
    • 메모리, 하드웨어 자원, 중요 시스템 파일에 대한 접근 제한
    • 일반적인 응용 프로그램들이 실행되는 모드이며, 해당 프로그램들은 시스템에 영향 불가
  • kernel mode
    • 컴퓨터의 모든 자원에 접근 가능 -> 운영체제의 핵심 및 하드웨어 장치, 자원 등을 직접적으로 제어 가능

유저 모드에서 커널 모드로 변경되는 과정

 

 

Virtualization - 가상화

 

Virtualization

  • 컴퓨터 자원을 추상화하여 다양한 작업 환경을 만들고, 이를 동시에 여러 작업이 공유할 수 있게 해주는 기술
    • 하드웨어, 운영체제, 스토리지 등의 다양한 자원에 적용 가능
    • 여러 개의 독립적인 가상 환경으로 분할
  • 장점
    • 자원효율성 증대
    • 유연성 및 확장성