본문 바로가기
  • 시 쓰는 개발자
CS 개념/운영체제

운영체제 수업 (6) 03/21

by poetDeveloper 2024. 3. 28.

학교 수업을 정리한 내용입니다. 참고만 해주세요.

 

0321 목요일

 

Q. 전원을 켰을 때 CPU가 가장 먼저 하는 일은 Fetch, 그중에서도 AR ← PC 이다. 근데 전원 끄면 레지스터의 값도 모두 날아가서 PC값도 0일텐데 값을 어떻게 넘겨줄까 ??

A. ROM , Boot loader에 대해 배워보자.

 

RAM (Random Access Memory, DRAM)

  • 램의 어떤 곳에 있는 데이터를 찾든 시간이 똑같이 걸린다는 의미에서 RAM이라고 불린다.
  • 보통 DRAM이고, 휘발성이라 전원이 끄면 데이터가 날아간다.

ROM (Read Only Memory)

  • 수정불가능하고, 읽기만 가능하다 하여 ROM이라 불린다.
  • 방전이 안되고, 한번 저장하면 데이터가 계속 살아있다.
  • 시작 주소를 0번지로 하고 그곳에 부트 로더를 넣어둠.

Booting 이란? (Boot Rom , Boot Loader , Boot Strap 등등)

맨 위의 질문에 대한 답을 해보자. 컴퓨터를 처음 켜보면 모든 값이 0이니깐 AR ← PC도 0이 들어갈텐데, 어떻게 값이 들어가서 프로그램들이 실행될까?

 

  • 이 사진에서 Decoder가 이 과정에서 핵심 역할을 한다. 디코더는 AR이 준 값을 받는다. 만약 input값이 모두 0이면(부팅때상황) 디코더는 첫번째 값만 1로 만들어준다. 그럼 위 사진에서 첫번째 라인만 1로 실행되고 이때 ROM으로 들어가는 것이다.
  • ROM은 부팅만 해주는데 여기 첫번째 라인에 부팅 정보가 들어가있다. 정확히는 Boot Loader (Boot strap)가 들어가있고 이녀석이 부팅을 시켜주게 된다.
  • 부팅 : 부팅은 부트로더가 수행(★)하고, HDD에서 OS를 찾아 메모리에 로드해주는 일련의 과정이다. (1)HDD에서 OS찾음 → (2)메인 메모리의 빈 공간에 OS 로드 → (3)메모리상에서 OS의 주소를 PC에 저장하고 Boot Loader의 임무를 마친다. (ROM 작업 끝)
  • Boot Loader에서는 부팅을 마치고 끝날 때, 즉 마지막 명령어는 PC ← 1024(OS의 첫번째 주소라고 가정) 라고 해주게 되고 이 1024가 윈도우인 것이다. 여기서부턴 윈도우가 켜지는 화면으로 바뀌게 되는 것이고, OS가 부팅되는 것이다. 즉, 드디어 OS가 메모리에 올라왔다.
  • 정리 )) 메모리상에서 디코더가 출력의 영역을 나누어 상위 영역(EX. 0000 ~ 1023)에는 Boot Rom을 장착하고, 하위 영역(EX. 1024 ~ 2^32-1)에는 메인 메모리를 장착해서 컴퓨터 전원을 켜면 메모리 맨 앞에 있는 Boot Loader가 실행되는 것이다.

Boot Loader의 역할정리

  • BootROM의 부가기능 : 하드웨어 검사, 초기화 → CPU 레지스터, Device 컨트롤러, 메모리 등을 검사하고 값 초기화함.
  • Q. 하드웨어 관리는 OS 역할인데 왜 하드웨어 초기화 작업을 Boot Loader가 하는 걸까?
  • A. 하나의 컴퓨터는 매우 다양한 하드웨어로 구성되는데 하드웨어 종류마다 검사방법과 초기화방법이 서로 다르다. 그래서 이걸 OS에 담으면 OS크기가 너무 방대해지므로 하드웨어 검사, 초기화 루틴을 BootROM에 담았음.
  • OS를 메모리 빈공간에 올려줌
  • OS 실행시키기. PC ← 1024라고 정의해줌으로써 OS를 실행시킬 수 있다.

OS가 올라간 뒤 상황

OS 부팅이 끝나면 다음 2가지 일을 끝으로 마무리한다.

  1. 스케줄러라는 process를 만든다. (pid = 0)
  2. init이라는 프로세스를 만든다. (pid = 1) init은 어떤 사건이 발생하면 새로운 프로세스를 만들어준다. 이때 사건의 기준은 다음과 같다. (1) interrupt 발생시(HW interrupt, SW interrup) (2) 시스템 콜 fork 호출시 (3) 시스템 콜 pthread_create 호출시 / 이런 사건이 발생하면 init이 process를 생성해주게 된다.

'CS 개념 > 운영체제' 카테고리의 다른 글

운영체제 수업 (8) 03/28  (1) 2024.04.03
운영체제 수업 (7) 03/26  (0) 2024.03.28
운영체제 수업 (5) 03/19  (1) 2024.03.25
운영체제 수업 (4) 03/14  (0) 2024.03.22
운영체제 수업 (3) 03/12  (0) 2024.03.19