DKU/시스템프로그래밍

[시스템프로그래밍] 1-1 시스템 프로그램의 정의

ʕ민지ʔ 2022. 11. 7. 17:31

컴퓨터 구성요소

 

 하드웨어 구성요소: PC

  1. CPU (중앙처리장치)
  2. Main memory (주기억장치) - 데이터 저장, 처리
  3. Secondary storage (보조기억장치) - ex) HDD, CD
  4. Input device - ex) 마우스, 키보드
  5. Output device - ex) 모니터, 프린터기
  6. Communication device (통신장치) - ex) 이더넷, 블루투스

 

DRAM과 Disk의 차이

DRAM(Dynamic Random-Access Memory)로 메인 메모리로 쓰이고, Disk는 보조기억장치로 쓰인다.

  1. 속도 (speed)
    - DRAM에 있는 데이터에 접근시 걸리는 시간 : 100 ns (ns : 10^-9)
    - Disk에 있는 데이터에 접근시 걸리는 시간 : 10 ms (ms : 10^-3)
    ⇒ 10^5 만큼 차이난다. 즉, DRAM에 비해 Disk는 굉장히 느리다.
  2. 용량 (capacity)
    - DRAM : GB 단위 (10^9)
    - Disk : TB 단위 (10^12)
    ⇒ Disk과 DRAM보다 용량이 훨씬 크다. <메모리 계층구조>
  3. 휘발성 (volatility)
    - DRAM : 휘발성
    - Disk : 비휘발성
    ⇒ DRAM과 Disk의 데이터 저장 방법이 다르기 때문에 이러한 차이가 생긴다.
    ⇒ 어떤 데이터를 계속 유지하고 싶으면 데이터를 Disk에 써야하고, 이를 위해서는 file I/O가 필요하다.
  4. 인터페이스 (interface)
    - DRAM : 데이터를 바이트 단위로 읽고 쓴다. 4바이트나 16바이트로 읽기가 가능하다.
    - Disk : 데이터를 섹터 단위로 읽고 쓴다. 요즘 섹터는 512바이트로 구성된다. 즉, Disk에서 데이터를 읽을 때에는 512바이트로 한 번에 읽어야 한다는 의미이다. 4바이트나 16바이트 단위로 읽기가 불가능하다.
    ⇒ loading을 하는 이유는 Disk와 DRAM의 인터페이스 차이 때문이다.
DRAM과 Disk의 데이터 저장 방법
🤍 DRAM은 셀로 구성되어 있는데 각 셀마다 charge(전하)를 얼마나 유지하는지(전하량)로 0,1 데이터를 구분하고 저장한다. 그런데 전하는 물리학적 법칙에 의해 시간이 지남에 따라 줄어드므로 시간이 지남에 따라 전하가 새서 데이터를 잊게 된다. 이를 막기 위해 DRAM은 주기적인 refresh가 필요하다. 이 refresh를 하기 위해서는 logic이 필요하고, logic 수행을 위해 전원이 필요하다. 
⇒ DRAM은 charge를 refresh하기 위한 연산이 필요하고, 연산을 위한 전원이 공급되어야 데이터를 유지할 수 있다. 이러한 특성 때문에 DRAM을 휘발성이라고 한다.
🤍 Disk는 자기저장장치로 Disk를 N극, S극으로 자화시키는 방법으로 데이터를 저장한다.
⇒ Disk는 한 번 자화되면 전원이 공급되지 않아도 데이터가 계속 유지되기 때문에 비휘발성이라고 한다.
CPU가 Disk에 있는 데이터를 읽으려는 경우
예를 들어 32bit CPU이면 CPU는 4바이트로 데이터에 접근할 수 있다. 이때 Byte 단위의 인터페이스를 제공하는 DRAM에서는 바로 데이터를 읽어올 수 있지만, Sector 단위의 인터페이스를 제공하는 Disk에서는 데이터를 바로 읽어올 수 없다. 그래서 Disk에 있는 데이터를 읽어오기 위해서는 DRAM을 거쳐야 하고 이 과정을 loading이라고 한다.

 

하드웨어 구성요소: 스마트폰

컴퓨터 구조 측면에서 볼 때, PC와 스마트폰은 동일한 구조(6가지)를 가지고 있다. 즉, 두 기기 모두 하나의 독립적인 컴퓨터 시스템이라고 볼 수 있다. 차이점은 실제 사용하는 component들이 다르다는 것이다. PC와 스마트폰의 요구사항이 다르기 때문이다.

  스마트폰 PC
1. CPU ARM 기반의 Multicore (RISC)
(ARM: Advanced RISC Machine)
intel CPU (CISC)
2. Main Memory LPDDR, SRAM DRAM
3. Secondary Storage NAND flash Disk
4. Input device Touch Screen, Sensors, Voice, Iris 키보드, 마우스
5. Output device LCD, LED, Sound, Buzzer 모니터
6. Communication WLAN, LTE, CDMA, GSM, IrDA,
블루투스, NFC, UART, USB, 케이블
 

 

모바일 기기의 요구사항

1. Power Saving (저전력)

  • RISC CPU를 사용한다. (CISC CPU 대신)
    - 적은 명령어의 개수로 compact한 CPU 내부를 가지게 되면서 전력을 덜 소모한다.
RISC와 CISC
RISC는 Reduced Instruction Set Computing으로 CPU가 이해할 수 있는 명령어의 개수를 줄여 instruction의 수가 적다. (ARM CPU는 30-40개의 명령어를 제공한다.) 따라서 compact한 CPU 내부를 가지게 되어 전력을 덜 소모한다. 반면, CISC는 Complex Instruction Set Computing으로 복잡한 명령어까지 지원한다. (intel CPU는 300-400개의 명령어를 제공한다.)
  • LPDDR (Low-Power DDR)을 사용한다. (일반적인 DRAM 대신)
    - 낮은 전압(voltage)과 refreshing을 더 적게함으로써 전력(power)을 덜 소모한다.

2. Portability (휴대성)

  • Flash memory를 사용한다. (Disk 대신)
    - Flash memory는 가볍고, 모터가 없으며, 충격에 강하다(shock resistance).
    - Disk는 원판으로 구성되어 있고, 모터가 돌고 있고, 헤더 있는 등의 이유로 고장나기 쉬워 들고 다니기에 적합하지 않다.

3. User friendliness (사용자 편의성)

  • 다양한 input, output, 통신 장치의 사용으로 사용자가 사용하기 쉽게 서비스를 제공한다.

 

소프트웨어 구성요소

  1. Application Program (응용 프로그램)
    - 특정한 목적, 자신이 해야할 일에만 집중하는 프로그램
    - ex) 브라우저(인터넷 검색), 계산기(연산 수행), PPT(슬라이드 제작)
  2. System Program (시스템 프로그램)
    - 컴퓨터 시스템에서 응용프로그램이 동작할 수 있도록하는 여러 이슈들을 해결하고, 방법을 제공하는 프로그램들의 집합

 

시스템 프로그램에서의 중요 이슈

  1. 어떻게 프로그램이 CPU 위에서 돌아가는가?
    object, binary, compiler, assembler, loader
  2. printf()의 역할/작동법은 무엇인가?
    library, linker
  3. 문자열은 어떻게 모니터에 display되는가?
    device driver, file system
  4. 프로그램은 어떻게 다른 프로그램들과 동시에(concurrently) 실행될 수 있는가?
    process, scheduler, context switch, IPC(Inter Process Communication)
  5. local 메모리와 global 메모리의 차이는 무엇인가?
    data, stack, heap, virtual memory, buddy system
  6. 프로그램의 성능을 높일 수 있는 기술의 종류에는 무엇이 있는가?
    compiler optimization (loop unrolling, reordering)
    CPU optimization (pipeline, superscalar, out-of-order execution)

 

시스템 프로그램의 정의

  1. 응용프로그램들이 수행하는 computing 환경 제공
    - commands, library 기능, system call과 같은 인터페이스 제공
  2. 하드웨어와 굉장히 밀접 (하드웨어 관리)
  3. 추상화 제공 
    HW component (실제세상) 시스템 프로그램에 의해 추상화된 객체
    CPU Task (Process)
    DRAM Virtual Memory
    Disk File
    Device Driver
    Machine level language High level language
    Untrusted Domain Trusted Domain