240119_캐시, 저장장치, 운영체제

추성결·2024년 1월 19일
0

참조: https://chogyujin.github.io/2019/03/26/2.8-%EC%A0%80%EC%9E%A5-%EC%9E%A5%EC%B9%98%EC%9D%98-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0/

캐시가 중요하다.

  • 더 큰 저장 장치들은 보다 작은 저장 장치들보다 느린 속도를 갖는다.
    일반적인 시스템의 디스크 드라이버는 메인 메모리보다 1000배 크기가 크지만, 프로세서가 1워드의 데이터를 읽어들이는데 걸리는 시간은 메모리에서보다 천만배 더 오래걸릴 수 있다.

  • 프로세서/메모리 간 격차에 대응하기 위해 시스템 설계자는 보다 작고 빠른 캐시 메모리(캐시)라고 부르는 저장 장치를 고안하며 프로세서가 단기간에 필요로 할 가능성이 높은 정보를 임시 저장한다.
  • 프로세서 칩 내에 들어있는 L1,L2 캐시는 SRAM이라는 하드웨어 기술을 사용한다.

저장 장치들은 계층 구조를 이룬다.

  • 계층 꼭대기에서부터 맨 밑바닥까지 이동할 수록 저장 장치들은 더 느리고, 더 크고, 바이트당 가격이 싸진다.
  • 레지스터 파일은 계층 구조의 최상위 레벨0 즉, L0을 차지한다.
  • 메모리 계층 구조의 주요 아이디어는 한 레벨의 저장 장치가 다음 하위레벨 저장 장치의 캐시 역할을 한다.

ex) L1과 L2의 캐시는 각각 L2와 L3의 캐시, L3는 메인 메모리 캐시

운영체제는 하드웨어를 관리한다.

  • 쉘 프로그램이 hello 프로그램을 로드하고 실행했을 때와 hello 프로그램이 메세지를 출력할 때, 프로그램은 운영체제가 제공하는 서비스를 활용

  • 응용 프로그램이 하드웨어를 제어하려면 언제나 운영체제를 통해서 해야한다.

  • 응용 프로그램의 목적:
    1. 응용 프로그램들이 하드웨어를 잘못 사용하는 것을 막는다.
    2. 응용 프로그램들이 단순하고 균일한 매커니즘을 사용하여 복잡하고 매우 다른 저수준 하드웨어 장치들을 조작하도록 하기 위함

  • 파일은 입출력장치의 추상화 / 가상메모리는 메인 메모리와 디스크 입출력 장치의 추상화 / 프로세스는 프로세서, 메인 메모리, 입출력 장치 모두의 추상화이다.

프로세스

  • 프로세스는 실행중인 프로그램에 대한 운영체제의 추상화이다.

  • 다수의 프로세스들은 동일한 시스템에서 동시에 실행.

  • 동시성은 한 프로세스의 인스트럭션들이 다른 프로세스의 인스트럭션과 섞인다는 것.

  • 운영체제는 문맥 전환(context switching)이라는 방법을 사용하여 교차 실행을 수행한다.
    문맥전환(context switching): 현재 프로세스의 컨텍스트를 저장하고 새 프로세스의 컨텍스트를 복원 시키는 것

  • 하나의 프로세스에서 다른 프로세스의 전환을 운영체제 커널에 의해 관리된다.
    커널은 운영체제 코드의 일부분으로 메모리에 상주한다. 별도의 프로세스가 아니다!

    쓰레드

  • 시스템에서 프로세스가 실제로 쓰레드라고 하는 다수의 실행 유닛으로 구성되있다.

  • 해당 프로세스의 컨텍스트에서 수행되며 다수의 프로세스들에서보다 데이터 공유가 더 쉽고, 프로세스보다 더 효율적이다.

    가상 메모리

  • 각 프로세스들이 메인 메모리 전체를 독점적으로 사용하고 있는 것 같은 착각을 제공하는 추상화이다.

  • 주소 공간의 최상위 영역은 모든 프로세스들이 공통적으로 사용하는 운영체제의 코드와 데이터를 위한 공간이다.

  • 주소 공간의 하위 영역은 사용자 프로세스의 코드와 데이터를 저장한다.

  • 영역 종류:
    프로그램 코드와 데이터

    공유 라이브러리
    스택
    커널 가상 메모리

    파일

  • 연속된 바이트들이며, 응용 프로그램의 시스템에 들어있는 다양한 입출력 장치들에게 통일된 관점을 제공하는 역할을 한다.

시스템은 네트워크를 사용해 다른 시스템과 통신한다.

  • 네트워크는 단지 또 다른 입출력 장치로 볼 수 있다.
  • 시스템이 메인 메모리로부터 네트워크 어댑터로 일련의 바이트를 복사할 때, 데이터는 로컬 디스크 드라이브 대신에 네트워크를 통해서 다른 컴퓨터로 이동된다. 시스템은 다른 컴퓨터로부터 받은 데이터를 읽어서 메인 메모리에 복사할 수 있다.

중요한 주제들

  • 시스템이라는 것은 응용 프로그램의 실행이라는 궁극의 목적을 달성하기 위해 협력해야하는 하드웨어와 시스템 소프트웨어가 서로 연결된 것을 의미

Amdahl의 법칙

  • 어떤 시스템의 한 부분의 성능을 개선할 때, 전체 시스템 성능에 대한 효과로 얼마나 빨라졌나 계산. 모든 작업을 개선하기 위한 일반적인 원칙이다.

동시성과 병렬성

  • 동시성: 다수가 동시에 벌어지는 일을 갖는 시스템
  • 병렬성: 동시성을 사용해서 시스템을 보다 빠르게 동작하도록 하는 것
쓰레드 수준 동시성

먼저 쓰레드와 프로세스의 차이점부터 확실히 알고 가자.

  • 쓰레드를 이용하면 한 개의 프로세스 내에서 실행되는 다수의 제어흐름을 가질 수 있다.

  • 여러 명이 한 개의 웹 서버로부터 페이지를 사용하고자 할 때, 동시에 교신할 수 있도록 한다.

  • 대부분의 실질적인 계산은 한 개의 프로세서에 의해 이루어지는 걸 단일 프로세서 시스템이라 한다.

  • 여러개의 프로세서를 가지고 하나의 운영체제 커널의 제어하에 동작하는 것을 멀티 프로세서 시스템이라한다.

  • 멀티 프로세싱 이용으로 시스템 성능 개선 방법이 두가지 있다.
    1. 다수의 태스크를 실행할 때 동시성을 시뮬레이션할 필요를 줄여준다.
    2. 프로그램이 병렬로 효율적으로 실행할 수 있는 멀티 쓰레드 형태로 표현될 때 개선된다.

인스트럭션 수준 병렬성
  • 프로세서들을 훨씬 낮은 수준에서의 추상화로 여러개의 인스트럭션을 한번에 실행할 수 있는 것.
  • 사이클 당 한 개이상의 인스트럭션을 실행할 수 있는 프로세서를 슈퍼스케일러라 한다.
싱글 인스트럭션, 다중 데이터 병렬성(SIMD)
  • 최신 프로세서들은 최하위 수준에서 싱글 인스트럭션, 다중 데이터, 즉 SIMD 병렬성이라는 모드로 한 개의 인스트럭션이 병렬로 다수의 연산을 수행할 수 있는 특수 하드웨어를 가지고 있다.
  • 대개 영상, 소리, 동영상 데이터 처리를 위한 응용 프로그램의 속도를 개선학디 위해 제공한다.

컴퓨터 시스템에서 추상화의 중요성

  • 인스트럭션 집합 구조는 실제 프로세서 하드웨어의 추상화를 제공한다.
  • 이로 인해 기계어 코드 프로그램은 마치 한 번에 하나의 인스트럭션을 실행하는 프로세서에서 실행되는 것처럼 동작한다.
    ex) 다른 언어로 예를 들면 자바의 경우 클래스 선언, C에서는 함수 프로토타입

0개의 댓글

관련 채용 정보