OS - 컴퓨터 구조

Bomin Seo·2022년 8월 4일
0
post-custom-banner

컴퓨터

  • 컴퓨터 하드웨어 위에서 컴퓨터 소프트웨어가 수행되는 장치
  • Server Computer / Personal Computer(Desktop Computer) / Embedded Computer
  • 자동차 내장 Computer : MCU(Microcontroller unit)이 CAN(Controller Area Network)로 연결

컴퓨터 유형별 사용 OS

Server Computer

  • Node.js, Go, JAVA, Python(django) 등으로 프로그래밍
  • UNIX, Windows Server → 은행이나 학교 시설같이 보안이 중요한 곳은 여전히 UNIX 사용
  • Opensource 및 Cloud 활성화 이후 LINUX (google, Naver 등에서 사용)

Embedded Computer

  • 주로 C를 사용하여 프로그래밍
  • 대부분 LINUX 기반의 Android, Raspberry Pi, Tigen 등을 사용한다.
  • VxWorks 등의 상용 RTOS나 FreeRTOS 등의 오픈소스 OS를 사용한다.

운영체제

  • 컴퓨터 하드웨어 자원을 관리해주는 소프트웨어
  • Kernel + System program을 지칭한다.
    • Kernel : 메모리에 상주해서 항상 실행되는 프로그램
    • System Program
      • 컴퓨터를 활용하기 위해서 OS가 만든 프로그램 (파일 탐색기 등)
      • OS가 설치될 때 같이 설치되는 프로그램

운영 체제의 기능

  • 프로그램이 하드웨어를 몰라도 쉽게 활용할 수 있도록 interface제공 (system call)
    • Abstraction
      • 핵심적인 기능, 개념을 간추려내는 것 or 중요하고 필요한 부분을 통합하여 하나로 만드는 것
      • Class에서 객체가 가지는 속성을 member와 member function으로 표현하는 것
    • Encapsulation
      • 객체의 속성과 method를 하나로 묶고, information hiding한다.
    • Abstraction과 encapsulation기능을 제공하여 내부를 몰라도 사용자가 쉽게 사용할 수 있다.
    • 컴퓨터 자원이 효율적으로 동작하도록 관리한다.
  • CPU 관리(CPU 분배)
    • Process/Thread 관리, Process 간 데이터 전달 및 공유 관리
  • 메모리 관리
    • Virtual Memory Management로 용량 이상의 프로그램 동작 등의 기능
  • I/O 장치 관리
    • SDD/HDD(보조 기억 장치)에 있는 파일을 관리하는 파일시스템 관리
    • Graphical User interface 등 그래픽 장치 관리
    • 마우스와 모니터 등의 입출력 장치 제어
  • Sharing (Time/Space Multiplexing)
  • Protection(컴퓨터 및 프로그램 보호)
  • Fairness(resource 분배)
  • Performance(동작 실행 향상)을 관리하는 기능 제공

Modern PC Architecture

Memory Controller Hub(System controller, North Bridge)

  • CPU, RAM, 그래픽 카드 등 데이터 전송이 많은 부분을 지칭하며 South bridge와의 통신 관장한다.

AGP(Accelerated Graphics Port)

  • 그래픽 카드가 컴퓨터의 메인 보드에 장착된다.
  • 상당히 많은 데이터 전송이 필요하다
    • pixel 1024 1024의 경우 : 1kilo(2^10) 1kilo = 1mega
    • RGB를 표현하기 위하여 3Byte
    • 초당 60Hz로 refresh
    • 따라서 초당 180megabyte의 데이터 전송이 필요하다.

I/O Controller Hub

  • 상대적으로 데이터 전송량이 적은 부분을 지칭한다.
  • 컴퓨터에 부착된 각각의 장치와의 입출력을 담당한다.

컴퓨터 하드웨어

  • CPU, 메인 메모리(주기억장치), 보조기억장치, I/O 장치로 구성된 컴퓨터의 물리적 부품

  • bus형태로의 데이터 전송 : 한번에 하나의 데이터 전송 동작만 가능하다

  • 레지스터 : CPU 내에 임시적으로 데이터를 저장하고 있는 저장소 (PC, IR, SP, PSW 등)

  • 로딩 : 프로그램 동작에 필요한 프로그램과 리소스를 보조기억장치에서 주기억장치로 불러들인다

CPU

  • 폰 노이만(aniac제작) 구조 : 메모리에서 명령어를 실행하고 다음 명령어를 읽어와 실행하는 구조

기본 동작

  • 프로그램을 실행하기 위해서 보조기억장치에 있는 프로그램을 Memory로 Loading후 실행시킬 명령어를 IR에 저장하고 실행시킬 명령어의 주소를 PC에 저장한다.
  • CPU는 메모리에서 명령어를 읽고 명령어를 수행하는 이 단계를 아주 빠르게 실행해주는 장치이다.

ALU(Arithmetic logic unit, 산술논리장치)

  • 레지스터 : PC(Program Counter, 실행시킬 프로그램의 Address 저장) / IR(Instruction Register)
  • IR(명령어를 저장하고 실행)의 명령어
  • Arithmetic instructions : add, subtract, multiply, divide …
  • Logical instructions : and, or, xor, not, shift …
  • Control flow(branch) instructions : goto, if, call, return …
  • Data instructions : load(메모리에서 CPU레지스터에 저장), store, move, input, output …

CU(Control Unit, 제어장치)

  • 입출력 장치 간 통신 및 조율
  • 레지스터 : PSW(Program Status Word, 상태표현), SP(Stack Pointer)

MMU (Memory Management Unit)

  • Virtual Memory Management 기능을 제공한다.

CPU의 Booting 후 동작 (Bootstrapping in Linux)

  • CPU 스스로 초기화 후 고정된 위치(intel : 0xfffffff0 / ARM : 0)에 있는 명령어를 실행한다.

  • 초기 실행하는 명령어는 ROM에 저장되어 있으므로 BIOS/UEFI로 이동하고, 하드웨어 초기화 및 테스트를 진행(POST : Power On Self Test)한다.

    • BIOS (Basic Input/Output System), UEFI (Unified Extensible Firmware interface)
    • Firmware : ROM에 저장되어 있는 소프트웨어 (HW, SW의 중간단계)
  • BIOS/UEFI가 Boot device를 찾고, Boot Loader(LILO/GRUB)를 메모리에 올리는 FETCH한다

  • MBR(Master Boot Record)에 BIOS가 있고, ESP(Efi System Partition)에 UEFI가 있다.

    • LILO/GRUB이 BIOS/UEFI에게 제어권을 받은 후 Kernel을 메모리로 load한다
    • kernel에 load 후 OS가 실행된다.

CPU 성능 개선

  • 명령어를 줄임으로써 CPU Clock을 높이고 pipelining으로 성능을 높였으며, cache 메모리 사용으로 성능을 향상 시켰다.

Instruction Set Architecture(ISA)

  • CISC vs RISC(Instruction의 개수 차이, 줄임으로써 성능 향상), 연산 논리 간단
  • 명령어를 줄여서 표준화 하여 pipe lining기법을 적용하였다.
  • 명령어를 줄임으로써 CPU제작도 용이 해졌으며, CPU Clock을 높일 수 있었다.

PipeLining

  • 명령어를 읽어 순차적으로 실행하는 방법으로 하나의 명령어만 실행하는 것이 아닌 여러 개의 F-D-X-W 파이프를 동시에 실행하는 방법
  • 다음 명령어를 미리 가져와 실행한다 : Jump가 될 수 있기 때문에 n배의 성능향상이 아니다.
  • Fetch : 메모리에서 레지스터(IR)로 가지고 오는 행위
  • Decode : 명령어를 해독 / Execute / Write Back(다시 메모리에 동작 결과를 저장)

Instruction-Level parallelism (ILP, 명령어를 동시에 실행시키는 방법)

  • Superscalar : CPU가 동시에 실행할 수 있는 명령어를 계산하여 같이 실행
  • VLIW : 하나의 긴 명령어에 여러 개의 실행어를 넣는다.
  • Simultaneous multithreading
  • Multi Core
    • Concurrent : 하나의 코어에서 여러 개의 프로그램이 번갈아 가면서 수행
    • Parallel : 여러 개의 코어에서 각각의 프로그램을 수행

Symmetric multiprocessing architecture(SMP)

  • 병렬시스템 : 하나의 mainboard에 CPU를 여러 개 두어 구현한 시스템
  • CPU를 여러 개 두고 하나의 메모리를 공유하는 구조
  • Cf) NUMA
    • CPU별로 메모리를 독립적으로 가지며 CPU간 Interconnect 되어있는 구조
    • 과학/수학/기상 시뮬레이션 등 연산이 많이 필요한 슈퍼컴퓨터에서 사용한다.

Clustered system architecture(서버컴퓨터 등)

하나의 메인보드에 여러 개의 CPU를 둔 Standalone 컴퓨터를 네트워크로 연결하고, secondary straoge를 공유하는 구조 ( 병렬 시스템 + 분산시스템)

  • 분산시스템 : 컴퓨터와 컴퓨터 간에 네트워크로 연결하고, 메모리를 공유하는 구조


I/O 장치

  • 구성 : CPU + I/O Controller + I/O 장치

I/O instruction

  • CPU가 I/O instruction을 I/O Controller의 레지스터에 전해 input/output 실행
  • Direct I/O(intel) : CPU가 장치의 레지스터에 직접 명령을 작성해서 I/O Instruction을 내린다.
  • Memory-mapped I/O(ARM) : 메모리의 Mapping된 위치에서 읽기/쓰기를 통해 I/O 요청 실행

I/O Controller의 레지스터

  • IR, DR(Data Register, 명령어의 매개 변수를 저장한다.
  • 기본 동작
    • CPU가 I/O Controller에게 내린 I/O Instruction을 통해 I/O Request를 전달한다.
    • CPU가 I/O장치의 속도보다 빠르기 때문에 I/O 장치의 실행이 끝남을 알아야한다.
  • Programmed I/O : Polling방식을 통해 I/O 장치의 실행 종료 유무를 확인한다.
  • Interrupt : I/O 장치가 동작이 끝났거나 예외 상황이 발생했을 때 알린다.
    • CPU는 수행 중인 작업(레지스터 값)을 저장하고, Interrupt handler/interrupt service routine을 통해 interrupt를 처리하고, 운영체제가 실행된다. CPU는 원래 수행 중이던 작업으로 복귀한다.
    • 또는 키보드에서 입력된 것을 CPU에게 알리기 위해 Interrupt를 보내거나 이더넷 네트워크와 같은 것에서 새로운 작업이 왔을 때 CPU에게 알리기 위해 Interrupt를 보낸다.

I/O 명령어

  • Load : 메모리에서 데이터를 읽어가는 명령어 (메모리에서 CPU 레지스터에 데이터 저장)
  • Store : 메모리에 데이터를 쓰는 명령어 (CPU레지스터에서 메모리로 데이터 저장)
  • Input : I/O 컨트롤러 레지스터에서 데이터를 읽는 명령어
  • Output : I/O 컨트롤러 레지스터에 데이터를 쓰는 명령어
  • Move : 레지스터에서 레지스터로 데이터를 옮기는 명령어 (CPU, I/O, DATA를 오간다)

I/O method

Programmed I/O
  • I/O 장치에서 데이터를 버스를 통하여 CPU 레지스터에 저장하고 다시 버스를 통하여 메모리로 저장하는 방식. Polling 방식을 사용한다.
  • CPU를 거쳐야하기 때문에 지연 시간도 있으며, 입출력 동안 CPU가 IDLE상태가 된다.
Interrupt(HW Interrupt)
  • CPU가 프로그램을 실행하고 있을 때, I/O 장치의 요청이나 예외상황이 발생하여 처리가 필요할 경우 CPU에게 알려 우선적으로 처리할 수 있도록 하는 Method
  • Hardware 장치에서 발생시키는 interrupt(asynchronous)
  • E.g) timer interrupt, Keyboard interrupt
Trap(SW Interrupt)
  • application processes에서 발생시키는 interrupt(synchronous)
  • E.g) system calls
Fault(Exception)
  • CPU가 자기 자신에게 Interrupt를 걸고, OS를 실행시킨다.(synchronous)
  • Divide by zero, page fault, protection fault
DMA
  • CPU가 메모리를 사용하지 않을 때 CPU의 개입없이 I/O장치가 메모리에 직접 접근하는 방식
  • CPU는 제어신호만 주고받으며 데이터 전송에는 관여하지 않으므로 자원의 낭비를 막는다.
  • Disk와 같은 큰 데이터를 전달해야하는 경우 interrupt handler를 통해 interrupt를 전달하는 것이 아닌 memory buffer에 전달해야 한다. 하지만 bus방식에 따라 시간이 오래 걸릴 수 있으므로, DMA를 통해 CPU가 Memory를 사용하지 않을 때 buffer에 요청을 전달한다.

Application program 입장에서의 I/O

profile
KHU, SWCON
post-custom-banner

0개의 댓글