[OS] #1. 운영체제란?

<div>elop·2022년 4월 11일
0
post-custom-banner

Operating system?

많은 종류의 운영체제가 있다. Linux, Unix, Mac, Windows,...
이들의 존재이유와 목적은,

  1. application program이 하드웨어에 쉽게 접근하도록 interface를 제공(system call)
  2. 하드웨어 resources를 효율적으로 사용하도록 관리

두가지로 요약할 수 있다.
하드웨어를 관리하는 소프트웨어라고도 할 수 있을것이다.
앞으로 이 친구의 역할과 목적에 대해 자세히 알아볼 건데,
첫 포스팅은 OS보단 h/w에 대해 짚고 넘어가려고한다.
결국 OS는 h/w와 밀접한 관련이있기 때문이다.


H/W?

하드웨어는 CPU, Memory, I/O device 3가지로 나눌수 있다.
각각의 역할을 먼저 이해하자.
CPU : PC(program counter)에서 명령어를 읽어온 후, I/R(instuction Register)에 넣고 수행
I/O device : disk, 키보드, 마우스,...
Memory : 나는야 메모리

그림을 보면 좌측상단에 CPU가 있다.
ALU(Arithmetic Logic Unit), Control Unit ,MMU(Memory Management Unit)에 있는 Register들, 스택의 top을 가리키는 스택포인터와 PC, General Register들이 보인다.
또한 Bus를 통해 정보를 주고 받는것을 알 수 있다.(Bus내에서 한가지 정보가 전달되는동안 다른 정보는 전달될 수 없다.)


1. CPU의 성능과 아키텍처

CPU의 몇가지 특징을 알아보자. 우선 성능을 높이는 방법들이다.


1. RISC
오늘날의 PC는 RISC방식으로 cpu의 성능을 높인다.
instruction의 갯수를 줄이고 간단하게하여 CPU의 성능을 높인것. 오늘날 많은 프로세서들이 채택한 방식이다.

2. Pipelining
instruction을 병렬적으로 처리하는 기법.
자세한 내용은 Pipelining 포스팅 참조!

3. ILP(Instruction-Level Parallelism)
실제로 명령어 여러개를 동시에 처리하는 기법
(Pipelining은 하나의 instruction을 decode하는 동안 새로운 instruction을 fetch하는 등의 방식으로, 완전히 동시에 처리하는것은 아니다.) multi core, multi CPU등이 이에 해당한다.



이제 몇 가지 CPU 아키텍처들을 알아보자.


SMP

CPU끼리 Memory를 공유하고 process들은 CPU를 나누어서 수행한다.
오늘날 대부분의 multi process system이 사용하는 방식이다.

NUMA


CPU들이 각자 memory를 갖고있고, 필요한경우 interaction을 통해 data를 공유한다. 수퍼컴퓨터 등에 사용된다.

Clustered system

랙에 꽂아놓은 main board들이 network로 연결 되어있으며, second storage를 공유한다. Data center의 고성능 서버 컴퓨터 등에 사용된다.



2. I/O Device

I/O Device의 동작방식은 다음과 같다.


1. CPU가 I/O controller에게 I/O를 요청( ex. 키보드 입력, disk 읽기, ...)
2. I/O device가 수행

이때, 예를 들어 요청이 disk를 읽는것이었다면, CPU는 disk를 다 읽을때 까지 기다려야할까?
당연히 아니다. 다른일을 수행하다가, I/O device의 작업이 끝나면 handling 하는것이다. 그렇다면 I/O device의 작업이 끝난 사실은 어떻게 알까?

  • Interrupt
    하드웨어에서 event가 발생하면, CPU에게 알려준다.
    예를들어 키보드 입력이 들어오면, CPU에 interrupt를 걸고 레지스터를 통해 data를 전달한다.

  • Programmed I/O
    CPU가 하드웨어 이벤트 발생을 주기적으로 check한다.

예상할 수 있겠지만, interrupt방식이 효율적이다.

Interrup는 중요해서 좀 더 알아볼텐데, 크게 세가지 Interrupt로 나눌 수 있다

  1. Interrupt : 앞서 말한 H/W의 event에 의해 발생하는 interrupt.
  2. Trap : 어떤 application program에서 OS에 접근해야 할 경우 발생하는 interrupt. (OS권한이 필요한 명령어가 있을때 등...)
    System call이라고도 한다.
  3. Fault(Exception) : CPU가 자신에게 거는 interrupt. 예를들어 명령어가 잘못된경우(division 0, memory 참조 오류 등등...)


3. Memory

메모리는 가볍게 정리만 하도록 하겠다.

  1. ROM vs RAM
    ROM(Read Only Memory) : 읽기만 가능, 비휘발성, 비교적 느림
    RAM(Random Access Memory) : 읽고쓰기 가능, 휘발성, 비교적 빠름

  2. SRAM vs DRAM
    SRAM : flipflop방식, 한번 써놓으면 정보 유지, 용량 적음, cache로 사용
    DRAM : capacitor방식, 계속 방전해야 정보 유지, 용량 큼, maim memory.

  3. Cache Memory
    캐시메모리는 성능을 위해 매우매우 중요하다.
    main memory까지 access하는데 시간이 오래 걸리므로, 자주 쓰는 data는 가까운 cache memory에 저장해놓고 가져다 쓰는 것이다.
    원하는 data가 cache에 있으면 hit, 없으면 miss라고 하는데 당연히 hit 비율을 높여야한다.

profile
기록장
post-custom-banner

0개의 댓글