[OS] 운영체제의 구조와 하드웨어의 구성

Suyeon·2022년 2월 12일
0

Operating System

목록 보기
2/10

1. 운영체제의 구조

💡 운영체제는 크게 커널과 인터페이스로 나뉜다.

1. 커널(Kernal)

  • 운영체제의 핵심 기능을 모아놓은 것으로 운영체제의 성능은 커널이 좌우한다.
    • 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스간 통신 관리 ****
  • 자동차에 비유하면 엔진에 해당한다.
  • 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다.
    • 유닉스의 사용자 인터페이스: shell, bash등
    • 매킨토시의 인터페이스: 유닉스 계열의 커널을 사용 (사용자에게는 다른 운영체제처럼 보인다)
  • 시스템 호출(system call)
    • 사용자나 응용프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근을 차단한다. 따라서 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용해야한다.
    • e.g. C언어의 printf()
    • 응용 프로그램 — 커널
  • 드라이버(driver)
    • 다양한 종류의 하드웨어를 커널에 연결한다.
    • 마우스, 기보드등 복잡하지 않은 디바이스 드라이브는 커널에 포함되어 있어서 컴퓨터에 꽃기만해도 작동되지만 그래픽카드, 프린터등 복잡한 디바이스는 사용자가 직접 설치해야한다.
    • 하드웨어 — 커널

2. 인터페이스(Interface)

  • 사용자와 응용프로그램에 인접하여 커널에 사용자의 명령을 전달하고 실행결과를 사용자에게 알려준다.

Q. 가상머신이란?

  • 유닉스에서 C언어로 만든 코드는 윈도우 운영체제에서 작동하지 않기 때문에 C언어 코드를 윈도우에 맞게 수정해야한다. 즉 개발자는 유닉스, 윈도우용 프로그램을 각각 따로 만들어야한다.
  • 자바: 운영체제 위에 가상머신을 만들고 그 위에서 응용프로그램이 작동하게 하여 호환성 문제를 해결했다.
  • 윈도우 운영체제에서 유닉스를 사용하고 싶은 경우 가상머신을 설치하여 사용할 수 있다.

2. 하드웨어의 구성

1. 컴퓨터의 구성

💡 컴퓨터는 필수장치와 주변장치로 이루어진다.

1.1 필수장치

  • 중앙처리장치 (CPU): 명령어를 해석하여 실행하는 장치
  • 메모리: 작업에 필요한 프로그램과 데이터를 저장하는 장소

1.2 주변장치

  • 입력장치
    • 키보드, 마우스
  • 출력장치
    • 프린트, 모니터(+그래픽카드), 스피커(+사운드카드)
  • 저장장치
    • 메모리보다 느리지만 저렴하고 용량이 크며 전원의 ON/OFF와 상관없이 데이터를 영구적으로 저장한다.
    • 자성을 이용하는 장치: 카세트테이프, 플로피디스크, 하드디스크(HDD)
      • 하드디스크: 운영 체제, 애플리케이션 및 데이터 파일을 저장
    • 메모리를 이용하는 장치: USB드라이버, SD카드, SSD
    • 레이저를 이용하는 장치: CD, DVD

Q. GPU란(Graphical Processing Uit)?

  • GPU는 그래픽용 CPU이다.
  • 과거에는 그래픽계산을 CPU가 담당하고 그 결과만 그래픽카드에 전달했다.
  • 최근에는 3D게임등 많은 계산을 필요로 하는 프로그램이 늘어남에 따라 그래픽카드에 GPU를 달아서 직접 계산한다.

1.3 하드웨어 사양 관련 용어

  • 클록(clock): CPU 속도와 관련된 단위
    • CPU가 작업할때의 일정한 박자이다. 클록이 일정 간격으로 tick을 만들면 거기에 맞추어 CPU안의 모든 구성 부품이 작업을 한다.
    • Tick은 purse 혹은 clock tick이라고도 부른다.
    • 메인보드의 클록이 틱을 보낼때마다 버스는 데이터를 보내거나 받는다.
  • 헤르츠(Hz): 클록틱이 발생하는 속도
    • 1초에 클록틱이 몇번 발생하는지 나타낸다.
  • 시스템 버스: 메모리와 주변장치를 연결하는 버스로 FSB(Front-side bus), 전면 버스라고 한다.
  • CPU 내부 버스: CPU 내부에 있는 장치를 연결하는 버스로 BSB(Back-side bus), 후면 버스라고 한다.
    • CPU내부 버스의 속도는 CPU클록과 같아서 시스템 버스보다 훨씬 빠르다.

2. 폰노이만 구조

💡 오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다. 폰노이만구조는 CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어있는 구조를 말한다.

  • 폰노이만 구조가 등장하기 전의 컴퓨터는 hard wiring형태였기때문에 다른 용도로 사용하려면 전선의 연결을 바꿔야했다.
  • 폰노이만은 메모리를 이용하여 프로그래밍이 가능한 컴퓨터 구조, 즉 하드웨어는 그대로둔채 작업을 위한 프로그램만 교체하여 메모리에 올리는 방식을 제안했다.
  • 가장 중요한 특징은 “모든 프로그램은 메모리에 올라와야 실행할 수 있다.” 이다. **
    • e.g. 워드프로세스 보고서를 작성한 경우, 보고서 파일은 하드디스크(저장 장치)에 저장되지만 프로그램과 데이터가 저장장치에서 바로 실행되지 않는다.
    • 저장장치에 있는 프로그램을 실행하려면 프로그램이 메모리에 올라와야하며, 운영체제도 프로그램이기 때문에 메모리에 올라와야 실행이 가능하다.

3. CPU와 메모리

3.1 CPU의 기본 구성

💡 CPU는 산술논리 연산장치, 제어장치, 레지스터로 구성되며 이것들의 협업으로 작업을 처리한다. 필요한데이터를 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산을 한 후, 그 결과를 다시 레지스터에 저장했다가 메모리로 옮긴다.

3.1.1 산술논리 연산장치(Arithmetic and Logic Unit, ALU)

  • 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈같은 산술연산과 AND, OR 같은 논리연산을 수행한다.

3.1.2 제어장치(Control Unit)

  • 명령어를 해석하여 제어신호를 보내고 CPU 내의 데이터 흐름을 조절한다.

3.1.3 레지스터(Register)

  • CPU가 연산을 하기위해 필요한 데이터를 CPU로 가져와 임시로 보관하는 장소이다.
  • 사용자 가시 레지스터(user-visible register)와 사용자 불가시 레지스터(user-invisible register)로 나뉜다.

사용자 가시 레지스터

  • 사용자 프로그램에 의해 변경된다.
  • 데이터 레지스터(DR): CPU가 명령을 처리하는데 필요한 일반 데이터를 임시로 저장
  • 주소 레지스터(AR): 데이터 또는 명령어가 저장된 메모리의 주소를 저장

사용자 불가시 레지스터

  • 프로그램 카운터(PC): 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에게 알려준다.
  • 명령어 레지스터(MAR): 현재 실행중인 명령어를 저장한다.
  • 메모리 주소 레지스터(MAR):
  • 메모리 버퍼 레지스터(MBR): 메모리에서 가져온 데이터나 메모리로 옮겨갈 데이터를 임시로 저장한다. 항상 메모리 주소 레지스터와 함께 동작한다.

3.1.4 버스의 종류

💡 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 버스에는 다음 작업을 지시하는 제어 신호, 메모리의 위치 정보를 알려주는 주소, 처리할 데이터가 오고 가며 각각 제어버스, 주소 버스, 데이터 버스에 실린다.

제어 버스(control bus)

  • 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다.
  • 제어버스의 신호는 CPU, 메모리, 주변장치와 양방향으로 오고간다.

주소 버스(address bus)

  • 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지를 알려주는 위치 정보(주소)가 오고 간다.
  • 메모리 주소 레지스터와 연결되어 있으며 단방향이다.

데이터 버스(data bus)

  • 데이터를 실어서 전달한다.
  • 메모리 버퍼 레지스터와 연결되어 있으며 양방향이다.

버스 관련 용어

  • 대역폭(bandwidth): 한번에 전달할 수 있는 데이터의 최대 크기
    • 버스의 대역폭은 CPU가 한번에 처리할 수 있는 데이터의 크기와 같다.
    • 버스의 대역폭, 레지스터의 크기, 메모리에 한번에 저장할 수 있는 데이터의 크기는 항상 같다.
  • 워드(word): CPU가 한번에 처리할 수 있는 데이터의 최대 크기
💡 제어버스가 다음에 어떤 작업을 할지 신호를 보내주고 주소 버스가 위치 정보를 전달하면 데이터가 데이터 버스에 실려 목적지까지 이동한다.

3.2 메모리의 종류와 부팅

💡 모든 프로그램은 메모리에 올라와야 실행될 수 있다. 메모리에는 실행에 필요한 데이터가 존재하며, CPU와 협업하여 작업이 이루어진다. 메모리는 RAM과 ROM 두종류로 나뉜다.
  • 메모리를 이루는 소자 하나의 크기는 1bit 혹은 0이나 1이 저장된다.
  • 소자 하나만으로 데이터를 표현할 수 없어 메모리 주소는 바이트 단위로 저장되고 메모리에서 데이터를 읽거나 쓸 때는 워드 단위로 움직인다.

3.2.1 RAM(Random Access Memory)

  • 읽거나 쓸 수 있다.
  • 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있다는 의미에서 이름이 유래되었다.
  • RAM은 휘발성 메모리비휘발성 메모리로 나뉜다.

휘발성 메모리

  • 전력이 끊기면 데이터가 사라진다.
  • DRAM(Dynamic RAM): 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야한다.
    • 메인 메모리에 사용
  • SRAM(Static RAM): 전력이 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없다.
    • 속도가 빠르지만 가격이 비싸다.
    • 캐시같은 고속 메모리에 사용
  • SDRAM(Synchronous Dynamic Access Memory): 클록틱이 발생할 때마다데이터를 저장하는 동기 DRAM이다.

비휘발성 메모리

  • 플래시 메모리(flash memory): 전력이 없어도 데이터를 보관하는 저장장치
    • 디지털 카메라, MP3 플레이어, USB드라이버
  • SSD: 하드디스크를 대신한다.
    • 가격이 비싸지만 빠른 데이터 접근 속도, 저전력, 내구성때문에 개인용 컴퓨터, 노트북, 스마트폰등 많은 기기에 사용된다.

3.2.2 ROM(Read Only Memory)

  • 전력이 끊겨도 데이터를 보관할 수 있지만 데이터를 한번 저장하면 바꿀 수 없다.
  • 주로 바이오스(BIOS, Basic Input/Output system)를 롬에 저장한다.

3.2.3 부팅(Booting)

💡 운영체제도 CPU에 의해 실행되는 프로그램이기 때문에 메모리에 올라와야 실행할 수 있다. 따라서 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅(booting)이라고 한다.
  1. 사용자가 컴퓨터의 전원을 켜면 롬에 저장된 바이오스가 실행된다.
  2. 바이오스는 CPU, 메모리, 하드디스크, 키보드, 마우스와 같은 주요 하드웨어가 제대로 작동하는지 확인한다.
  3. 이상이 없으면 하드디스크의 마스터 부트 레코드(Master Boot Record, MBR)에 저장된 부트 스트랩 코드를 실행한다.
    1. 마스터 부트 레코드: 하드 디스크의 첫번째 섹터
    2. 부트스트랩 코드: 운영체제를 메모리로 가져와 실행하는 역할을 하는 프로그램
  4. 부트 스트랩이 메모리에 올라오면 하드디스크에 저장된 운영체제를 메모리로 불러온다.
profile
Hello World.

0개의 댓글