CS 공부/운영체제

CS 스터디 - OS 정리 2

메모리 계층구조(Memory Hierarchy)

메모리를 필요에 따라 여러가지 종류로 나누어둔 것이다.

secondary storage

주기억장치는 모든 프로그램을 담기에 용량이 너무 적은 데다가 전원이 꺼지면 담겨져 있던 데이터가 모두 초기화 된다. 이를 보완하기 위해 주기억장치 밑에 HDD, SSD와 같은 보조기억장치를 넣게 된다.

따라서 운영체제는 보조기억을 위해 다음과 같은 역할을 지닌다.

- 비휘발성

- 보조 메모리

- 프로그램과 데이터 저장

 

캐시 메모리 (Cache Memory)

프로세서 내외부에 있으며, 처리 속도가 빠른 프로세서와 상대적으로 느린 메인 메모리의 속도 차이를 보완하고 데이터를 메인 메모리에서 블록 단위로 가져와 프로세서에 워드 단위로 전달하여 속도를 높인다.

 

주기역장치에서 사용하고 있는 정보의 일부를 가지고 있으며, 프로세서는 가장 먼저 캐시를 확인하게 된다.

만약 캐시에서 찾을 수 없다면 메모리에서 가져와 사용한 다음, 향후 사용을 위해 캐시에 저장하게 된다. 

 

Cache Design

캐시 사이즈 : 작은 캐시일수록 속도가 빠르다.

블록 사이즈 : 캐시와 메모리간의 데이터 교환 단위로서, 블록이 클수록 Hit ratio가 높아지고, 지역성이 높아진다. 

 

Mapping Function : 메모리의 어느부분을 캐시에 매핑할지 정하는 함수.

Replacement algorithm : 캐시의 어느 블럭을 교체할지에 관한 알고리즘으로, LRU(Least-Recently-Used)알고리즘이 있다.

Write Policy : 캐시의 데이터를 어떻게 메모리에 쓸지에 관한 정책

  • 항상 업데이트 하는 방법
  • 교체될 때 업데이트 하는 방법 (멀티코어인 경우 캐시 일관성 문제가 나타날 수 있다.)

 

Disk Cache

디스크로부터 읽은 내용을 일부 보존해두는 메모리 영역. 메모리보다 디스크에서 읽는 속도가 빨라서 접근 속도가 향상된다.

 

Programmed I/O

프로세서가 아닌 IO 모듈이 진행하며, IO status register가 적절한 비트를 구성한다. 프로세서는 operation이 끝날때 까지 상태를 확인한다.

 

Interrupt- Driven I/O

프로세서가 시작과 끝에만 관여하며, 대기할 필요가 없어서 Asynchronous 한 특징을 가지고 있다.

 

Direct Memory Access

IO가 메모리와 직접적으로 교환이 이루어진다. 입출력 장치를 메모리에 가까운 속도로 처리하기 위해 사용. 프로세서를 거치지 않고, 장치 제어기가 장치의 buffer storage 내용을 메모리에 block 단위로 직접 전송.
전송이 완료되면, DMA 모듈은 인터럽트 신호를 CPU로 보낸다. 따라서 CPU는 전송의 시작과 끝만 관여한다.
(byte 단위가 아닌 block 단위로 인터럽트를 발생시킴)
인터럽트 구동 방식보다 효율적이다.

 

Computer System Structure

컴퓨터 시스템은 하드웨어, 사용자, OS(Operating system), 어플리케이션 프로그램으로 나뉜다.

 

Computer System Organization

현대 컴퓨터 시스템은 하나 이상의 CPU와 여러 장치 제어가를 공용 버스(하드웨어를 제어하는 흐름)로 연결된다

CPU와 장치는 병행 수행하기 때문에 메모리를 사용하기 위해 경쟁을 한다.(그래서 OS가 이를 관리한다.)

각각의 장치 컨트롤러는 특정한 디바이스 타입을 특정하며, 로컬 buffer를 가지고 있다.

IO는 장치에서 컨트롤러의 로컬버퍼로 향하며, 장치 컨트롤러는 CPU에게 해당 연산이 끝났다는 내용을 interrupt를 통해 알려준다.

 

Computer System Architecture

래거시 시스템은 single processor를 사용한다. (간단하고 저렴하며, 특정한 목적을 가지고 있다.)

최근에는 Multiprocessors 가 많이 사용되고 있으며 중요해지고 있다.

  • 병렬적인 시스템으로 진행된다.
  • Increased throughput:
    throughput은 일정한 시간동안 얼마나 많은 프로그램을 끝낼 수 있는가를 의미하는데, N개의 프로세서가 실행되면 N time만큼 속도가 빨라진다. (하지만, 보통 약간의 overhead가 발생한다.)
  •  Economy of Scale:
    투입규모가 커질수록 비용이 줄어드는 것.
  • Imporved reliability:
    - ability to continue service proportional to the level of surviving H/W
    • fault tolerant: 하나의 프로세서에서 문제가 발생하여도 나머지 시스템에서는 계속 올바르게 작동하는 특성

Clustered Systems

멀티 프로세서가 하나의 CPU 안에 여러 코어가 들어가 있는 장치라면 Clustered System은 하나의 랙(rack) 장비 안에 여러 컴퓨터가 서로 연동하면서 작동하는 장치이다.

  • 주로 SAN(Storage Area Network)을 통하여 스토리지를 공유한다.
  • 한 컴퓨터가 고장나더라도 다른 컴퓨터들은 동작하는 높은 가용성을 보인다.
    - 비대칭 클러스터 구조: 다른 컴퓨터들이 응용흐로그램 실행 하는 중에 한 컴퓨터는 대기모드를 유지하는 모드.
    - 대칭 클러스터 구조: 둘 이상의 호스트들이 어플리케이션을 실행하고 서로를 감시하는 모드.
  • HPC(High Performance Computing) 구조를 가지고 있는데, 고성능 컴퓨터로서 거대한 연산능력을 가진 컴퓨터라고 생각하면 된다. 하지만 단순히 커다란 컴퓨터가 아닌, 수천개의 CPU와 저장장치가 서로 통신하며 병렬 및 병행처리 한다는 점을 주의할 것.

Operating System Definition

OS는 리소스의 할당자(resource allocator) 이다. 

 : 모든 리소스를 관리하며, 충돌하는 리퀘스트, 올바른 리소스 등을 결정하는 역할을 한다.

OS는 컨트롤 프로그램이다.

 : 프로그램의 실행을 관리하며 에러와 컴퓨터의 부적절한 사용을 막는다. 

 

다만, 이러한 정의가 전부 통합하는 것은 아니다.

컴퓨터가 켜져있을 동안에 항상 돌아가는 단 하나의 프로그램은 커널이며, 다른 것들은 시스템 프로그램 또는 응용프로그램이다.

 

 

Computer Startup

컴퓨터가 켜질때 bootstrap 프로그램이 실행된다. 이는 ROM 또는 EPROM에 저장되어있으며, 주로 펌웨어 (firmware)라고 불린다. 부트스트랩 프로그램은 시스템을 초기화하고, 부트로더(Boot loader)를 실행한다. (멀티부팅 컴퓨터의 경우 부트로더가 여러 운영체제를 가리키고 있는데, 이 경우엔 어떤 운영체제를 실행할지 선택해야 한다.) 그리고 부트로더는 최종적으로 운영체제를 실행하게 된다.