[운영체제] Lecture 1. Computer System Overview

오젼·5일 전
0
post-thumbnail

https://www.youtube.com/watch?v=EdTtGv9w2sA&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN&index=1

한기대 김덕수 교수님 강의 보고 운영체제 복습하기!
이해가 쏙쏙 된다... 추천추천

운영체제란?

HW > OS > Application!

운영체제란? 컴퓨터 하드웨어, 컴퓨터 시스템을 관리하는 녀석.

이번 강의에서는 운영체제가 관리하는 하드웨어에 대해 먼저 간단하게 살펴본다!

컴퓨터 하드웨어

  • 프로세서
    - 계산하는 녀석. CPU, GPU, 응용 전용 처리장치 .. 등등

  • 메모리
    - 저장하는 녀석.

  • 주변장치
    - 그 외 장치들.

프로세서

컴퓨터의 두뇌. 연산 수행. 중앙 처리 장치.

  • 레지스터 - 프로세서(CPU) 내부에 있는 메모리! 가장 빠르다.

    • 용도에 따른 분류: 전용, 범용 레지스터.
    • 정보 변경 가능 여부에 따른 분류: 가시 레지스터, 불가시 레지스터.
    • 저장 정보의 종류에 따른 분류: 데이터 레지스터, 주소 레지스터, 상태 레지스터

    가시 레지스터는 사용자가 쓸 수 있는, 볼 수 있는 레지스터. c언어에서 register int 같이 선언할 수 있다. 가능하면 register를 사용해줘~ 라는 뜻이다. 꼭 보장되는 것은 아님.

    데이터 레지스터는 데이터를 저장하는 레지스터, 주소 레지스터는 주소를 저장하는 레지스터. 일단 간단하게 이 정도로만 알고 넘어가기

    PC, IR, ACC 정도 기본으로 알아 두기

운영체제와 프로세서

프로세서를 왜 알아봤냐! 운영체제가 하는 일이 프로세서가 할 일을 관리해주는 것이기 때문에

메모리

저장 장치.

위로 올라갈수록 속도가 빠르고, 비싸지고, 용량은 작아짐.

계층이 나뉜 이유: 최소한의 비용으로 최고의 효율을 내기 위해. 레지스터만 1TB 써서 성능 올린다? (X)(X)(X) 계층을 활용해 효율을 높인다 (good)

메모리의 종류

주기억 장치 (Main Memory)

프로세서가 직접 접근할 수 있는 애는 여기까지! 디스크까진 못 감. CPU 속도 <-> Disk 속도 갭이 너무 커짐. CPU가 일을 할 동안 필요한 데이터를 디스크에서 미리 가져다 놓자. "디스크 입출력 병목현상 해소"

캐시 (Cache)

이번엔 또 CPU <-> 메인 메모리 사이의 속도 차이도 커짐. 앞전처럼 해결하자! 사이에 메인 메모리 보단 빠르고 CPU 보단 느린 장치를 하나 더 놓자 => 캐시

그런데 캐시가 진짜 효과가 있나? 크기가 엄청 작은데? (L1: 128KB) 겨우 이거 가지고 병목현상을 해결할 수 있나?

캐시의 동작

Locality 덕분에!

우선 캐시의 동작을 알아보자.

캐시는 일반적으로 HW적(CPU가 알아서)으로 관리 된다.
동작은 크게 캐시 히트, 캐시 미스.

프로세서는 캐시에 필요한 데이터가 있니? 물어보고 있으면 캐시 히트. 캐시에 있는 값을 바로 쓰고
없으면 캐시 미스. 메인 메모리로 가서 "블록 단위"로 메모리를 캐시에 올린 다음 가져온다.

지역성

이렇게 캐시는 한 번에 블록 단위로 데이터를 불러오고, 최근에 사용한 데이터를 유지하기 때문에,
프로그램이 가진 공간적·시간적 지역성을 효과적으로 활용할 수 있다.

일반적으로 우리가 작성하는 대부분의 프로그램은

공간적 지역성: 현재 접근 중인 데이터 근처의 데이터도 곧 접근할 가능성이 높다.
시간적 지역성: 한 번 접근한 데이터는 가까운 시점에 다시 접근할 가능성이 높다.

이 두 지역성을 가지고 있다.

따라서 지역성을 잘 활용하면 캐시 적중률(Cache Hit Rate)을 높일 수 있고, 전반적인 프로그램 성능 또한 향상된다.

근데 캐시는 하드웨어가 관리한다고 했는데 이걸 또 왜 이렇게까지 설명하느냐? 이게 왜 중요하냐면

A랑 B랑 인덱스 순서가 다르다. 이 미세한 차이가 몇 배의 속도 차이를 만들어 낸다.

B의 경우 캐시에 가져온 블록에 값이 없어 매번 캐시 미스가 발생한다.

코드를 효율적으로 짜기 위해 고려해야 하는 요소가 되는 것!

보조기억 장치

프로그램과 데이터를 저장.

프로세서가 직접 접근할 수 없는 장치. 주변 장치. 주기억 장치를 거쳐서 접근. 쓰고 싶으면 디스크에 있는 데이터를 메인 메모리에 올려서 사용해야 함.

그런데 메인 메모리보다 프로그램 용량이 더 큰데? 어떻게 가능하느냐? -> 가상 메모리를 활용. 이는 뒤에서 더 알아보기.

메모리와 운영체제

시스템 버스

버스: 버스는 정류장이 있다!

각각의 장치들을 정류장으로 가지는 데이터 수단이어서 시스템 버스라는 명칭이 붙었다.

데이터가 타는 버스, 주소가 타는 버스, 제어 신호가 타는 버스

데이터를 나르는 통로. 주소를 나르는 통로. 제어 신호를 나르는 통로.

간단하게:

PC가 가리키는 주소를 MAR(Memory Address Register)에 넣고 주소니까 주소 버스로 전달 된다. -> 주소 버스를 통해 메모리에게 어느 주소를 읽어야 하는지 전달한다. 동시에 제어장치가 제어 신호를 발생 시키고 제어 버스를 통해 전달된다. 주소 버스로 전달된 주소를 읽어달라는 신호를 보낸다. -> 주소에 있는 명령어가 읽어져서 데이터 버스를 타게 된다. -> 데이터 버스를 타다가 내려야 할 곳(MBR Memory Buffer Register)에서 내린다. -> MBR에서 IR(Instruction Register)에 들어와서 다음에 수행할 명령어가 최종적으로 저장되게 된다.

주변장치와 운영체제

장치 드라이버: 어떤 하드웨어를 사용할 수 있도록 제공하는 인터페이스. OS가 모든 하드웨어를 어떻게 관리할지 알 수 없기 때문에 하드웨어 벤더에서 장치를 편하게 사용할 수 있게 인터페이스를 제공. OS는 인터페이스(드라이버)를 통해 장치를 관리/사용.

인터럽트: 키보드 입력이 들어왔어! -> 이걸 OS에 알려줘야 한다.


이렇게 운영체제가 하드웨어를 관리하는 녀석이라고 했는데 실제로 어떤 하드웨어를 관리하고 있는지, 어떤 것들인지 살펴보았다. 1강은 여기까지

0개의 댓글