운영체제란 하드웨어들을 효율적으로 관리하여 사용자 또는 응용 프로그램으로 서비스를 제공하는 역할을 한다.
컴퓨터 하드웨어
프로세서
CPU
그래픽카드(gpu)
DMDDYDWJSDYD CJFLWKDCL
메모리
주 기억장치(RAM)
보조 기억장치(DISK) 등
주변장치
키보드/마우스
모니터, 프린터
네트워크 모뎀 등
레지스터
프로세서 내부에 있는 메모리 이며 가장 빠른 메모리 빠르니까 비싸고 용량은 적다.
종류
1. 용도에 따른 분류
정해진용도로 쓰는 전용 레지스터
일반적으로 쓰는 범용 레지스터
2. 사용자가 정보 변경 가능 여부에 따른 분류
사용자 가시 레지스터, 불가시 레지스터
3. 저장 정보의 종류에 따른 분류
데이터 레지스터, 주소 레지스터, 상태 레지스터
데이터 레지스터란?
함수 연산에 필요한 데이터 저장한다.
주소 레지스터 주소나 유효 주소를 계산하는데 필요한 주소의 일부분을 저장한다.
가시 레지스터? 눈으로 본적이 있나??
있네
불가시 레지스터
일반적으로 전용레지스터들이 여기 있다.
프로그램 카운터> 다음에 실행할 명령어의 주소를 보관하는 레지스터
인스트럭션 레지스터>현재 실행하는 명령어를 보관하는 레지스터
누산기 >데이터를 일시적으로 저장하는 레지스터
다양한 레지스터들 는 ALU를 통해 연산이 이루어진다.
운영체제(OS)와 프로세서의 관계?
운영체제는 프로세서에게 처리할 작업을 할당 및 관리
프로세스(프로그램) 생성 및 관리
프로그램의 프로세서 사용제어
프로그램의 프로세서 사용 시간 관리
복수 프로그램 간 사용 시간 조율 등
메모리
데이터를 저장하는 장치(기억장치)
무엇을 저장? 프로그램 , 사용자 데이터 등
공학자는 한정된 자원으로 최고의 효율을 얻는 것 이에 따라 위의 계층이 나왔다.
메인 메모리
우리가 흔히 말하는 메모리 (DRAM, DDR4..)
프로세서가 무언가를 수행할 때 수행할 프로그램과 데이터는 메인 메모리에 있어야 한다. cpu가 직접 접근할 수 있는 메모리는 메인 메모리 까지다.
왜?
하드웨어적 관점에서 보면 디스크의 속도 발전은 굉장히 느리고 cpu는 굉장히 속도가 빠르게 발전되었고 cpu와 디스크 사이의 속도차가 너무 커져서 문제가 발생
따라서 디스크보다 저장 용량은 적지만 접근 속도는 빠른 무언가를 만들자! -> 램
램은 미리 디스크의 정보의 가져고오 cpu는 여기서 데이터를 가져오자!
DRAM을 주로 이용 : 용량이 크고 가격이 저렴
캐시
프로세서 내부에 있지만 레지스터보단 조금 더 멀리 있음 속도가 빠르고 가격이 비쌈
메인 메모리를 넣음으로써 보조기억장치와 속도 간극은 조금 줄였지만 그럼에도 cpu에서 데이터를 읽기에 속도가 느렸다. 그래서 메인 메모리의 입출력 병목현상을 해소하기 위해 캐시 메모리가 탄생
캐시의 동작
일반적으로 HW적으로 관리됨
프로세서가 먼저 캐시에게 데이터가 있는지 물어보고 없으면 메인 메모리로 가서 찾아 캐시로 가져오고 프로세서에게 전달
캐시에 있다> Cache hit 바로 찾아 불러 옴
캐시에 없다> Cahe miss 필요한 데이터 블록이 없는 경우
캐시가 효과를 낼 수 있는 이유
Locality (HW가 알아서 한다.)
공간적 지역성 (Spatial locality)
어떤 주소를 참고하면 참조한 주소와 인접한 주소를 잠 조할 확률이 높다는 아이디어로 나온 특성
시간적 지역성 (Temporal locality)
최근 참조한 주소를 곧 다시 참조할 확률이 높다는 아이디어로 나온 특성
지역성은 Cache hit ratio 히트 적중률과 밀접하다 알고리즘 성능 향상 위한 중요한 요소 중 하나다.
소프트웨어에서 Locality가 왜 중요하냐?
캐시가 지역성을 기반으로 동작함을 이해하였을 때 A와 B 중 어떤 방법이 효율적인지 알 수 있다.
캐시는 메인 메모리에서 어떤 주소를 불러왔을 때 공간적 지역성으로 인해 주변 주소들을 함께 들고 온다고 하였고 이를 cache line 혹은 cache block이라 한다.
만약 B코드를 선택하여 프로그램을 작성한다면 A [0][0], A [1][0], A [3][0],, 형식으로 탐색을 하며 미스가 많이 발생하고 이는 프로그램의 속도에 영향을 미친다
반면 A코드를 선택하여 프로그램을 작성하면 A [0][1], A [0][2]... 형식으로 메모리를 탐색하며 이는 캐시 블록에 있으므로 메모리 응답속도가 빨라 보다 효율적인 코딩이 된다.
이러한 차이로 많게는 100배 이상의 속도 차이를 낼 수 있다.
보조기억장치
프로그램과 데이터를 저장하나 프로세서가 메모리까지 직접 접근할 수없어 주변장치라 한다.
쓰고 싶다면 메인 메모리에 올려서 써야 한다.
장점은 용량이 크고 가격이 저렴하다.
프로그램 또는 데이터 크기가 주기억 장치보다 큰 메모리를 요구하는 경우 어떻게 돌리나>
이 문제는 가상 메모리(virtual memory)로 해결한다.
가상 메모리란 하드디스크의 일부를 메인 메모리처럼 사용한다고 쉽게 생각하자.
메모리와 운영체제
이러한 메모리의 할당 및 관리를 운영체제가 하며
프로그램의 요청에 따른 메모리 할당 및 회수, 할당된 메모리를 관리한다.
또한 가상 메모리의 생성 및 관리를 하며 논리적 주소를 물리적 주소로 변환하는 등의 역할을 해준다.
시스템 버스
지금까지 다양한 자원(프로세서, 메인 메모리, 주변장치) 들이 같이 일을 한다는 것을 알았는데 어떻게 통신하는가>?
시스템 버스라는 물리적 통로를 통해 신호를 주고받는다.
버스?
버스는 정류장이 있고 사람들을 각자의 목적지 정류장에 내려준다
데이터도 마찬가지로 각자의 저장되는 정류장이 있으며 원하는 목적지로 데이터를 옮겨주어 버스라 부른다.
버스에도 위 그림처럼 다양한 종류의 버스가 있다 (데이터, 주소, 제어 버스)
각자의 버스는 데이터 정보 주소 정보 제어정보를 담아 움직인다고 생각하자
주변장치
주변장치와 운영체제?
장치 드라이버 관리
어떠한 주변장치를 사용하고자 할 때 제조사는 OS가 사용할 수 있도록 (API) 인터페이스를 제공
OS는 이를 통해 장치를 제어한다 이러한 주변장치의 API를 흔히 드라이버라 부른다.
인터럽트 처리
주변장치에서 어떤 입력이 들어오면 system에게 알려줘야 하는데 이 신호를 인터럽트라 한다. os는 이 요청을 처리한다.
파일 및 디스크 관리
파일의 생성 및 삭제, 디스크 공간 등을 관리한다.
'OS > os 공부' 카테고리의 다른 글
6.Process Synchronization & Mutual Exclusion (0) | 2021.12.27 |
---|---|
5. 프로세스 스케쥴링 (0) | 2021.12.26 |
4. Thread Management (0) | 2021.12.25 |
3. 프로세스 관리 (0) | 2021.12.25 |
2. 운영체제 개요(Operating system overview) (0) | 2021.12.24 |