우리가 컴퓨터를 키면 로딩되는 것을 부팅
이라고 한다.
그럼 부팅이 뭐냐...??
이미지 출처 : 출처
부팅은 OS를 CPU에 불러오는 과정 이다.
운영체제는 소프트웨어다.
그럼 운영체제는 우리가 흔히 아는 C드라이브, D드라이브
드라이브의 용량으로 컴퓨터의 용량을 따지는 컴퓨터가 뭐 900G의 용량이 있다고 굉장히 자랑하고 그러는데
그 C드라이브, D드라이브 처럼 데이터를 영구적으로 저장할 수 있는 저장소를 SSD
라고 한다.
운영체제는 SSD에 들어있다.
근데 SSD는 느리다.
영구적으로 데이터를 저장하는 보관소이기 때문에 굉장히 느리다.
그래서 운영체제를 중간다리인 DRAM (그림상 RAM)
에 1번 옮긴다.
DRAM은 SSD와는 다르게 휘발성이다.
SSD는 영구적으로 데이터를 저장해야되기 때문에 비휘발성이다.
그렇기때문에 SSD보다 훨씬 빠르다.
비휘발성인 SSD보다 휘발성인 DRAM이 속도적인 측면에서 훨씬 빠르기 때문이다.
그래서 DRAM에서 다시 CPU로 운영체제를 옮긴다.
이렇게 SSD에 있던 OS를 CPU로 옮기는 과정을 부팅과정
이라고 한다.
위 그림을 보면 오른쪽 큰 네모와 왼쪽에 작은 네모가 있다.
반도체에는 버스라는 개념이 있는데,
버스가 뭐냐면 데이터가 지나다닐 수 잇는 통로 를 버스
라고 한다.
반도체에서 보드라는게 있다.
이런 네모판을 보드
라고 한다.
근데 위 그림을 자세히 보면, 회로같은게 보일것이다.
보드는 두께가 있다.
이미지출처 : ko.aliexpress.com
이 판 안에 데이터통신 할 수 있는 통로인 버스
가 만들어져있다.
그 회로를 바로 버스라고 한다.
그런데 컴퓨터에 들어가는 반도체 보드는 메인보드
라고 한다.
자, 그러면 다시 설명하겠다.
컴퓨터에는 메인보드라는 이름의 위에서 계속 설명한 초록색 판이 들어간다.
그 보드 안에는 CPU , DRAM, SSD 등 여러 반도체가 들어간다.
그런데 CPU는 컴퓨터의 심장이다.
CPU안에서 또 데이터 통신을 한다.
CPU안에서는
캐시 와 , 코어가 통신을 한다.
이렇게 CPU안에서 통신을 하기위한 통로인 버스를 내부버스
라고한다.
내부버스의 속도는 시스템버스에 비해 월등히 빠르다.
시스템버스는 메인보드 내의 버스를 모두 시스템버스라고한다.
CPU안에서의 버스를 제외한 모든 버스는 시스템버스이다.
캐시는 메모리와 CPU간의 속도 차이를 완화하기위해 메모리의 데이터를 미리 가져와 임시저장해두는 장소이다.
CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 둔다.
왜냐하면 CPU안에서 내부버스로 코어와 통신하는게 매우 빠르기 때문에 미리 가져다 두는 것이다.
모든것을 DRAM과 CPU가 바로 통신하지 않고,
앞으로 좀 더 사용할 것이라고 예상되는 데이터들은 캐시에 임시 저장해둔다.
(좀 더 효율적으로 속도를 내기 위해서)
캐시같은경우에는 굉장히 비싸서 고가의 i7코어의 캐시도 고작 8MB밖에 되지 않는다.
캐시는 명령어와 데이터를 구분하여 가져오는 특수캐시와 명령어와 데이터의 구분없이 모든 자료를 가져오는 일반캐시가 있다는 것만 알아두면 좋다.
자꾸 캐시캐시 하는데, 소프트웨어학도인 나는 진짜 브라우저 캐시가 하드웨어 캐시 영역에 저장되는줄 알았는데
그건 아니다!!
브라우저 캐시는 그냥 캐시의 개념을 빌려온 것 뿐이다.
웹에서 앞으로 다시 방문할 것을 예상하여 지우지 않은 데이터
를 브라우저의 캐시영역에 저장 해둔다.
이 계층구조는 정말 맨꼭대기에 있는 친구가 가장 비싸다고 이해하면 쉬울것 같다 ^^
맨 위에 있는 레지스터는 우리가 흔히 아는 intel i5, i7 core칩이다.
그리고 캐시
캐시는 CPU안에 들어있는 친구이기때문에 굉장히 빨라서 비싸다.
그리고 DRAM , CPU와 SSD사이의 중간다리 역할을 하는 친구이다.
그리고 SSD
SSD는 C드라이브, D드라이브 이런놈이다.
임베디드 개발을 할 때에 굉장히 중요한 개념중 하나가, 바로 폴링
이다.
while(1){
if(touched){
휴대폰 터치스크린을 ON으로 변경하기위해 CPU에게 터치스크린 ON 명령을 보낸다.
break;
}
}
이런 방식으로 while문을 계속 돌리면서 사용자가 휴대폰을 터치할 때까지 기다리는 것이다.......
폴링방식은 그래서 메모리 소모가 크고 작업효율이 떨어진다.
이러한 폴링방식을 보완하기위해 나온 방식이
인터럽트 방식이다.
인터럽트방식이란 폴링방식과는 정반대로
무한대기 하지 않고, 휴대폰이 터치되었을 때 즉시 CPU에게 터치스크린을 ON하라고 명령하는 방식이다.
폴링방식은 CPU혼자서 북치고장구치고 다했다.
하지만 인터럽트방식은 CPU와 입출력관리자가 분업을 하여 좀 더 효율적으로 메모리를 소비할 수 있다.
원래는 CPU 혼자 북치고 장구치고 다 하는 폴링방식이었기 때문에
모든 권한은 CPU혼자 갖고있었다.
하지만 오늘날 , 인터럽트 방식으로 넘어오면서 입출력장치도 권한을 갖게되었다.
이것을 바로 직접 메모리 접근 (DMA)
라고 한다.
인터럽트 방식에서는 DMA 방식이 필수이다.
입출력장치에는 휴대폰을 예로들자면,
터치스크린
, 카메라
, 휴대폰을 흔들 때 흔들림을 인지할 수 있는 센서인 자이로 센서
, 잠금버튼인 버튼
이 있다.
입출력장치에 이벤트가 발생하면 입출력버스를 통해 직접메모리 접근 제어기와 통신을 하고,
직접메모리접근제어기에서 시스템버스로 메모리와 CPU에 소통을 하는 것이다
그래서 오늘날의 운영체제의 영역은 두가지 영역을 갖게된다.
쉽게배우는 운영체제 - 한빛 아카데미