Computer?

컴퓨터란?

컴퓨터의 정의에 정답은 없지만 쉽게 정의하면 “하드웨어 위에서 소프트웨어가 수행되는 장치” 라 정의할 수 있다.

하드웨어는 CPU, 주기억장치, 보조기억장치로 이루어져 있다

운영체제란?

컴퓨터 하드웨어 자원(CPU, Memory, I/O device)를 관리해주는 소프트웨어이다. 컴퓨터 위에 존재하는 어플리케이션 소프트웨어가 잘 동작하도록 도움을 준다. 이를 위해 하드웨어 자원을 관리할 수 있어야한다.

1. CPU 관리

하나의 CPU 위에서 여러 개의 프로그램이 수행된다면 어떤 프로그램이 먼저 수행되고 언제 다른 프로그램이 수행될 지 등의 관리가 필요하다. 프로세스 및 스레드 관리, 프로세스 간 데이터 전달 및 공유 …

2. 메모리 관리

16G 의 Physical Memory 로 30G Memory 가 필요한 프로그램을 실행할 수 있도록 관리한다. 운영체제에서 Virtual Memroy 를 운영하기에 가능하다.

3. I/O Device 관리

HDD, SDD 의 파일을 관리하는 파일 시스템. 그래픽 장치, 마우스, 키보드 등의 장치 제어.

image

어플리케이션 프로그램과 시스템 프로그램

  • 어플리케이션 프로그램
    • 특정 목적으로 컴퓨터를 사용하기 위해서 실행시키는 프로그램
  • 시스템 프로그램
    • 컴퓨트를 활용하기 위해서 운영체제가 만들어놓은 프로그램
    • 대표적으로 윈도우 탐색기 및 운영체제가 설치되면 같이 설치되는 프로그램들

I/O

image

하드웨어들은 BUS 로 연결되어있다. 메모리에서 CPU 로 데이터가 이동 중일 때는 다른 동작을 할 수 없다. I/O 는 크게 I/O 장치들과 I/O 장치를 제어하는 컨트롤러/어댑터로 나눌 수 있다

Operating System?

다시 말해 운영체제는 Resource Manager 이다!

  1. Convenience
    • Abstraction
      • Encapsulation
      • 실제 내부를 모르더라도 외부에서 쉽게 사용할 수 있다.
      • 실제 System call 을 모르더라도 운영체제를 통해 쉽게 자원들을 접근하고 제어할 수 있다.
  2. Efficiency
  • Sharing, Protection, Fairness, Performance
    • 컴퓨터 위에서 여러 프로그램이 동시에 돌아갈 때 자원을 효율적으로 배분해줄 수 있다. 또한 하나의 프로그램이 전체 컴퓨터를 독점하는 것을 막는다.

Computer System Operation

Von Neumann architecture

CPU 에서 프로그램을 실행시킬 때 메모리에서 명령어를 읽어와서 실행시킨 후 다음 명령어를 읽어와 실행시킨다. 순차적으로 명령어를 읽어와서 실행시키는 아키텍쳐이다.

Bootstrapping in Linux

  1. CPU 는 인텔 기준 메모리 (0xfffffff0) 에서 명령어를 읽어와 실행한다
  • 전원이 꺼지더라도 데이터가 존재하는 메모리 영역 (ROM) 이 존재해야한다.
  1. 해당 명령어는 BIOS/UEFI 로 이동해 실행한다
  • BIOS (Basic Input/Output System)
  • UEFI (Unified Extensible Firmware Interface)
  1. BIOS/UEFI 가 POST 후 Boot Loader 를 실행한다
  • POST (Power On Self Test) - 하드웨어 초기화 및 테스트
  1. 이후 컨트롤을 Boot Loader 에게 넘겨준다 Boot Loader 는 운영체제의 OS 커널을 읽어 메모리에 올리고 실행한다
  • Firmware - 하드웨어에 포함된 소프트웨어이다. 보통 ROM 에 저장되어 동작하기에 업데이트가 힘들거나 불가능하며 변경 시 물리적인 변경이 필요하다

CPU

ISA, Instruction Set Architecture

  • Instruction 의 수가 많아져 점점 복잡해졌다. 명령어의 개수를 줄이고 기존에 있는 것을 사용한다. 복잡도를 줄였기에 성능이 많이 발전되었다.

Pipelining

  • 명령어의 실행 단계 - Fetch -> Decode -> Excute -> Write Back
  • 메모리에서 Instruction Register 로 명령어를 가져온다.
  • 무슨 명령어인지 Decode 한다.
  • 해당 명령어를 실행한다.
  • 결과를 저장한다.
  • 파이프를 여러 개로 만들어 한 시점에 4개의 명령어를 각각 다른 단계에서 실행하면 4배 빠른 것처럼 느껴질 수 있다.

ILP, Instruction-Level Parallelism

  • Superscalar - 명령어가 두 개일 때 둘 사이의 의존 관계가 없으면 동시에 실행한다.
  • Very long Instruction Word - 하나의 명령어에 여러 개의 명령어를 집어 넣는다.
  • Multi-core - 하나의 메모리를 여러 CPU core 가 공유하면서 프로그램을 동시에 실행시킨다.

    • Concurrent - 하나의 core 에서 두 개의 프로그램이 번갈아가면서 실행된다.
    • Parallel - 두 개의 core 에서 각각 두 개의 프로그램이 실행된다.
    • Simultaneous - 명확하지 않게 context 에 따라 1, 2번 둘다 사용한다. image
  • 메인 메모리를 여러 CPU가 공유한다. 많은 데이터 처리와 계산 처리에 효과적이다. image
  • 보드들이 네트워크로 연결되어 서로 통신하며 성능을 높인다. 세컨더리 스토리지를 쉐어하는 Clusterd system architecture. image

I/O Operation

  • I/O를 I/O 컨트롤러에 요청한다. I/O 작업 하는 동안 CPU에게 다른 일을 주어 효율적으로 사용되게 한다. 다른 일을 하고 있다가 I/O작업이 끝나면 컨트롤러가 CPU에게 다했다고 알려주는 것이 Interrupt 이다!
  • DMA - 키보드에서 눌린 값을 전달할 때 CPU와 메모리 사이에서 주로 버스가 다니므로 DMA 컨트롤러에서 기다리다가 버스가 사용되지 않을 때 메모리에 데이터를 전달하는 방법이다.
  • OS가 있으면 Interrupt 후 OS가 실행되어 다음에 어떤 일을 할지 스케쥴링한다. image

  • (a) = Synchronous / Blocking
  • (b) = Asynchronous / Non-Blocking

Interrupt

  • 키보드, 타이머 interrupt.
  • 하드웨어 디바이스에서 발생시키는 interrupt.

Trap

  • 프로그램에 의해서 발생하는 interrupt.
  • System call 어플리케이션이 수행된다.
    • System call - 일반적인 함수 호출과 같다. 운영체제에 존재하는 함수. 함수의 body는 OS에 존재한다. 그래서 Operation system을 call하는 것. 운영체제를 실행하기 위해서 Trap이 걸리면 user mode 에서 kernel mode로 바뀌면서 하드웨어 자원을 쉽게 쓸 수 있는 인터페이스를 제공한다.

Fault(Exception)

  • CPU가 자신에게 거는 interrupt.
  • 실행할 수 없는 명령문이 존재할 때 OS 를 수행시키기 위해서 Fault.

image

DMA

  • 사용자가 키를 누른다는 가정
  • Keyboard Controller 에서 Interrupt controller 를 통해서 CPU에 interrupt를 걸고 레지스터에서 입력값을 읽어간다.
  • 디스크는 2 byte 정도의 데이터를 disk controller 가 메모리의 버퍼에 써야한다.
  • BUS 는 CPU와 메모리 사이에서 주로 사용된다.
  • Disk Controller 가 직접 쓰려면 충돌이 일어나기 때문에 DMA Controller 를 통해서 CPU가 메모리를 사용하지 않을 때 메모리에 데이터를 집어넣는 방법이다.

Hardware Protection

Protection - 내부에서 비정상적으로 동작하지 않도록 보호하는 것 Security - 외부의 영향없이 프로그램이 정상적으로 동작하도록 하는 것

CPU protection

  • 하나의 프로그램이 하드웨어 자원을 독차지하는 것을 막는다.
  • 운영체제가 CPU 전체를 관리하기 때문에 모든 프로그램에 공평하게 나누어 실행하게 한다.
  • 무한루프를 도는 경우에도 Interrupt 를 걸고 운영체제가 제어한다
    • 주기적으로 인터럽트를 발생시키는 Timer 가 존재한다.

Memory protection

  • 참조할 수 없는 메모리 주소를 참조하는 경우 Fault 로 운영체제를 실행시킨다.

I/O protection

  • disk 를 프로그램이 마음대로 변경 및 삭제할 수 없도록 한다.
  • I/O 작업은 운영체제만 할 수 있다.
  • disk 에 데이터를 써달라고 커널에 요청하면 system call 을 통해 운영체제가 수행한다.

OS 가 Controll 을 가지고 실행될때

  1. Bootstrapping - 부팅 될 때
  2. System call - 어플리케이션이 운영체제에 수행을 요청할 때
  3. Interrupt - 하드웨어 디바이스에서 이벤트가 발생했을 때
    • Timer Interrupt

업데이트:

댓글남기기