[Operating System ①] 운영체제와 컴퓨터 하드웨어의 관계
[Operating System ①] 운영체제와 컴퓨터 하드웨어의 관계
HPC Lab 김덕수 교수님의 운영체제 강의를 정리한 내용입니다.
목차
- 레지스터
- 프로세스의 동작
- 운영체제와 프로세서의 관계
- 메모리 종류
- 주기억장치
- 캐시
- 보조기억장치
- 메모리와 운영체제
- 주변장치와 운영체제
운영체제란
컴퓨터 게임을 하기 위해서 어떤 것들이 필요할까? 컴퓨터 내의 하드웨어들이 필요하다.
- CPU
- GPU
- MOM(Memory)
- HDD/SSD
- LAN(Network 장치)
운영체제는 위와 같은 컴퓨팅 자원들을 효율적으로 관리할 수 있게 하는 시스템을 말하며, 사용자와 응용프로그램에 서비스를 제공한다.
주요 컴퓨터 하드웨어
운영체제가 관리하는 컴퓨터 하드웨어는 크게 3가지로 나뉜다.
- 프로세서(Processor) : 계산하는 장치
- CPU
- GPU/GPGPU
- 응용 전용 처리장치: 특별한 목적을 위해 개발된 장치
- 메모리(Memory) : 기억하는 장치
- DRAM : 주기억장치
- Disk : 보조기억장치
- 주변장치
- 키보드/마우스 : 입력장치
- 모니터, 프린터: 출력장치
- 네트워크 모뎀 : 네트워크 장치
1. 프로세서 : 계산하는 장치
- 연산 수행
- 컴퓨터 내 장치의 동작 제어
프로세서 구조
1-A) 레지스터(Register)
- 프로세서(CPU) 내부에 있는 메모리
- 프로세서가 사용할 데이터를 저장
- 컴퓨터에 존재하는 다양한 메모리 중 가장 빠른 메모리
- 종류
- 용도에 따라 분류 : 전용 레지스터(정해진 용도로만), 범용 레지스터(일반적으로 사용 가능)
- 사용자가 변경 가능한지에 따라 분류 : 가시 레지스터(사용자가 보고 변경 가능), 불가시 레지스터
- 저장하는 정보 종류에 따라 분류 : 데이터 레지스터, 주소 레지스터, 상태 레지스터
사용자 가시 레지스터
- 데이터 레지스터: 데이터 저장
- 주소 레지스터: 주소 저장
- C언어에서 사용자의 register 조작
사용자 불가시 레지스터
- 대부분 전용 레지스터이다.
-
프로그램 카운터(PC, Program Counter)
: 다음에 실행할 명령어의 위치/라인의 메모리상 주소를 가르키는 레지스터 -
명령어 레지스터(IR, Instruction Register)
: PC를 통해 가져온 명령어가 저장되는 레지스터 -
누산기(ACC, ACCumulator)
: 계산과정에서의 값을 임시적으로 저장하는 레지스터
1-B) 프로세서의 동작
프로그램이 동작할 때 다양한 레지스터를 통해 연산이 이루어진다.
1-C) 운영체제와 프로세서의 관계
- 프로세서에게 처리할 작업 할당 및 관리
- 프로세스(Process) 생성 및 관리
- 프로그램의 프로세서 사용 제어
- 프로그램의 프로세서 사용시간 관리
- 복수 프로그램간 사용시간 조율 등
2. 메모리 : 데이터를 저장하는 장치
- 데이터를 저장하는 장치 (기억장치)
- 저장 대상: 프로그램, 사용자 데이터 등
- 종류 (피라미드형 구조. 위부터 속도 빠르고 가격 비싸고 용량 적음)
- 레지스터 (CPU)
- 캐시 (CPU)
- 메인 메모리 (DRAM)
- 보조기억장치 (HDD)
- 왜 나눠 놓았느냐? 최소한의 비용으로 최고의 효율을 내기 위해서, 각 메모리를 적당히 섞어서 최고의 성능을 얻기 위해
2-A) 메모리 종류 - 주기억장치(Main Memory)
- 주기억장치(Main Memory) : 흔히 말하는 메모리 - DRAM,DDR4
- 프로세서가 수행할 프로그램과 데이터가 해당 메모리 안에 반드시 존재해야 함
- Disk로 바로 접근하지 않는 이유?
- Disk 속도 개선 느림. CPU 속도 개선 빠름 => gap 커짐. CPU는 빠른데 메모리가 느려서 생기는 문제
- Disk보다 용량은 작지만 접근 속도는 빠른 것을 중간에 놓고, CPU가 일을 하는 동안 다음에 필요한 데이터를 미리 준비해놓자. 이것을 통해 문제를 개선하려는 목적.
- 즉, Disk 속도가 느린 것이 프로그램이 동작하는 데에 방해요소(디스크 입출력 병목현상, I/O bottleneck)으로 작용을 하기 때문에, main memory를 중간에 두어 문제를 해소
2-A) 메모리 종류 - 캐시 (Cache)
- 레지스터와 마찬가지로 CPU 안에 존재
- 하지만, 레지스터보다 코어에 멀리 떨어져있고, 속도 느리며, 사이즈는 크다
- 존재이유
- 메인 메모리 존재 이유와 같은 맥락
- 메인 메모리를 두어 디스크 병목현상 해소했지만, 여전히 CPU와 performance gap 큼
- 따라서 main memory보다 속도 빠른 cache를 두어 메인메모리 병목현상을 해소
2-A) 메모리 종류 - 캐시 (Cache) 의 동작
- 기본적으로 HW적으로(CPU가 알아서) 관리
- 프로세서 -> 캐시에 접근해서 필요한 데이터 있는지 확인 -> 메인메모리로 가서 필요 데이터 캐시에 가져옴 -> 캐시에 가져온 데이터를 프로세서에 전달
- 캐시 히트(Cache hit) : 필요한 데이터블록이 캐시에 존재하는 상황
- 캐시 미스(Cache miss) : 필요한 데이터블록이 캐시에 존재하지 않는 상황
2-A) 메모리 종류 - 캐시의 지역성 (Locality)
- 첫번째, 공간적 지역성(Spatial Locality) : 어떤 주소를 참조하면, 다음 번에 해당 주소 주변을 참조할 가능성이 높다는 특성
- 데이터를 읽는 경우, 해당 데이터 블록만 가져오는 것이 아니라 일부분을 다 가져오게 됨. => cache line (spatial locality)
- 두번째, 시간적 지역성(Temporal locality) : 어떤 주소를 참조하면, 이후 해당 주소를 다시 참조할 가능성이 높다는 특성 ex)for문 등의 순환문
- 즉, 이러한 지역성 때문에 캐시 히트의 가능성이 높다.
- 따라서, 128kb의 적은 용량의 캐시라도 메인 메모리의 병목현상을 해소하는 데 유의미한 영향을 끼침.
2-A) 메모리 종류 - 캐시의 지역성 (Locality) 2
for i in range(n):
for j in range(n):
x = x + a[i][j] # A
x = x + a[j][i] # B
- B의 경우 : cache miss 계속 발생 => cache 없는 편이 더 빠름
- A의 경우 : cache miss 한번 발생 후, cache hit 발생 => cache 덕에 더 빠르게 처리
- 즉, cache를 이해한다면, 프로그램 더 효율적으로 짤 수 있음
- A 속도 »» B 속도
2-A) 메모리 종류 - 보조기억 장치(Disk) HDD/USB/CD/SD카드..
프로세서가 직접 접근 할 수 없음 (따라서 주변장치로 분류됨) 따라서, 데이터 사용을 원하는 경우 Disk의 데이터를 Memory에 올려놓고 사용해야 한다.
- 용량이 크고, 가격이 저렴하다
- 의문점?
- 실행하려는 게임(Disk) 메모리가 20GB일 때, Memory가 5GB밖에 없을 경우는?
- 가상메모리로 해결 : Disk의 일부를 Memory처럼 사용
2-B) 메모리와 운영체제 : 메모리도 OS가 관리하는 중요자원 중 하나
- 메모리 할당 및 관리 방법
- 가상메모리 관리 방법
3. 시스템 버스
다양한 자원/리소스들(프로세서, 메모리, 주변장치)이 함께 일을 하려면 통신이 필요.
이 통신의 통로를 시스템 버스라 일컫음
즉, 하드웨어들이 데이터 및 신호를 주고 받는 물리적 통로
- 각각의 리소스들을 정류장으로 가지는 버스
- 종류
- 데이터 버스 : 데이터를 나르는 통로
- 주소 버스 : 주소를 나르는 통로
- 제어 버스 : 제어 신호를 나르는 통로
시스템 버스의 작업 흐름
4. 주변 장치
- 프로세서/메모리(계산)에 직접적으로 필요하지 않은 나머지 장치들
- 입력장치
- 출력장치
- 저장장치 : 보조기억장치..
4-A) 주변장치와 운영체제
- 장치드라이버 관리 : HW를 사용하기 위해 제공하는 API(인터페이스).
- 주변 장치 사용을 위한 인터페이스 제공
- 장치드라이버란? OS가 모든 HW에 대한 인터페이스를 알 수 없기 때문에, 장치 벤더들이 자신들의 장치를 쉽게 사용할 수 있도록 인터페이스를 제공. OS는 인터페이스를 통해 해당 장치를 사용하게 됨.
- 인터럽트 처리
- 주변 장치의 요청 처리
- 인터럽트의 예시 : 키보드 입력을 할 때, 입력이 들어왔다는 사실을 System에 알려주는 것 => 키보드 인터럽트
- 파일 및 디스크 관리 : 대표적인 SW자원인 파일과 그것을 담고 있는 Disk의 관리
- 파일 생성 및 삭제
- 디스크 공간 관리 등
댓글남기기