[OS] CPU 아키텍처, 주요 운영체제 개념, 가상화

pos++·2023년 10월 25일
0

Operating System

목록 보기
1/2
post-thumbnail

2023.10.24 TIL

System Call 이란?

핵심 기능

  • 운영체제 커널과 사용자 응용 사이의 인터페이스
  • 운영체제의 기능을 활동할 수 있도록 제공하는 API
  • 사용자 모드에서 커널 모드로 진입하는 경로

주요 시스템 콜

  • open(), close(), read(), write(), loctl()
  • 그 외 프로세스 관리, 통신, 프로세스 간 통신 등을 위한 시스템 콜 존재

Bible…
Advanced Programming in the UNIX Environment


운영체제(커널)을 이루는 것들

  • 프로세스 자료구조, 프로세스 스케줄링
  • 디바이스 제어 (상호배제)
  • 메모리 관리, 가상메모리
  • 네트워크 지원 (TCP/IP Socket Programming)
  • 클라우드/가상화 지원 (AWS, Azure, GCP)
  • 파일시스템
  • 플래시메모리 제어
  • 보안 지원

네트워킹 및 소켓 프로그래밍

  • 네트워크 상의 두 개체를 연결, 정보 교환하기 위한 체계
  • 네트워크 연결을 파일 입출력과 유사한 방법으로 구현
  • TCP/IP 프로토콜 네트워크 지원
  • 클라이언트-서버 프로토콜 구현

ARM 프로세서

ARM 프로세서 아키텍쳐의 특징

  • 간단한 RISC(Reduced Instruction Set Computing) 아키텍쳐
  • 저전력
  • 자체적으로 CPU를 생산하지 않음 (모두 설계 라이센스))
  • 성능 최적화를 위해 운영체제와 협력하는 기능 확대
  • 자동차, IoT, 가전, 서버 등에 활용

CPU 아키텍처에 대한 이해

RISC Architecture (vs CISC)

  • 명령어 수가 적다
  • 연산 시 피연산자의 값을 Register에서만 가져온다. Memory에서 직접 가져오지 않는다.
    • load-store architecture
    • 연산의 예측성 확보, 빠른 속도
  • Register가 많다
  • 파이프라인 구조
    • 하나의 명령어를 파이프라인 실행으로 나누는데, RISC는 이게 잘 되어있다.

Inclusion Property : 메모리 계층 구조에서 지켜지는 원리
상위에 있는 메모리의 contents는 반드시 하위에 있는 메모리의 contents의 부분집합이어야 한다.

  • Cache
  • Memory
  • Secondary Storage

Locality : 왜 cache메모리가 필요한가?
CPU가 굉장히 빠른 속도로 내용을 가져올 수 있음

  • Cache에는 내용이 저절로 채워짐
    • CPU가 Memory에서 access한 내용을 Cache에 올려놓고, 두번째부터는 cache에서 access
  • 한번 접근한 내용은 다음에 또 접근할 가능성이 높다
  • 그 주변 주소의 내용을 접근할 가능성도 높다
  • 그 가능성을 Hit rate 라고 한다

Cache Coherence
멀티 프로세서에서 메모리 내용의 정확성 유지

  • 여러개 CPU에서 하나의 Memory를 access하고 내용을 수정할 경우 서로 Cache에 다른 내용을 가지고 있을 수 있다
  • 서로 내용을 맞춰준다

Kernel Mode vs User Mode

  • System Call, Interrupt
    • User Mode → Kernel Mode

Exception : 특별한 처리가 필요한 사건

  • Interrupt를 포함하는 더 큰 개념
  • 프로그램의 흐름을 정지시키고 다른 곳에서 무언가 해야할 때
  • 정상적인 상황
    • System Call (User Mode → Kernel Mode)
    • Page Fault
  • 오류인 상황
    • 정상적인 Page Fault가 아닌 경우
    • 사용자 권한 관련 규정을 어긴 경우

주요 운영체제 개념

운영체제 원리를 이해하는 키워드들

  1. 프로세스 관리

    프로세스 스케줄링, CFS(Complete Fair Scheduling), 실시간 스케줄링, 프로세스 라이프 사이클, Inter-Process Communication

  2. 메모리 관리

    Virtual Memory, Demand Paging, Page, Page Fault, Page Table, TLB

  3. 파일시스템

    압축 파일 시스템, 저널링 파일 시스템, 플래시 메모리, 버퍼 캐시, 마운트, proc 파일링 시스템, 디바이스 노드


프로세스 스케줄링

  • 목적
    • Fairness (for computer resources CPU, Memory)
  • CFS(Complete Fair Scheduling) vs RT(Real Time Scheduling)

프로세스 라이프 사이클

모든 프로세스는 fork()에 의해 부모 프로세스로부터 생성되고, 이후 부모에 의해 삭제된다.


프로세스의 실체

  • Process
    • App이 실행될 수 있는 모든 정보를 가지고 있음
    • 사이즈가 매우 큼
  • Thread
    - light-weight process

Virtual Memory : 왜 쓰는가?

  • Physical Memory의 크기가 제한적이다
    • Physical Memory의 주소를 Virtual Memory에서 mapping
  • 보안상의 이유
    • 자원을 보호 → Virtual Memory 간에 access 불가능

Page, Paging

  • Page
    • 4K Byte
    • Memory ㄷ

SWAP 메모리

Disk를 Memory처럼 사용한다


플래시 메모리 : 무엇이 다른가?

  • Read는 빠르고 Write는 매우 느리다
  • write의 과정 → 너무 복잡
    • 내용을 수정하려면 새로운 내용을 다른곳에 쓰고 기존 위치에 mapping
    • 이전 내용은 나중에 한꺼번에 지워짐

저널링 파일시스템 : 왜 저널링을 사용하는가?

플래시 메모리의 write가 복잡해서

  • 내용을 수정하면 이전 버전을 그대로 두고 수정된 버전을 계속 새로 저장
  • read할땐 최신 버전을 읽음

버퍼캐시

  • Disk의 file1을 수정함
  • 수정된 내용이 Memory에 들어가있음
  • Memory 안의 Buffer Cache를 File 대신 사용
  • Replacement Algorithm LRU

디바이스 드라이버

  • 하드웨어를 접근하는 채널
  • 모든 디바이스는 file을 통해 접근
  • open(), close(), read(), write()

디바이스 드라이버의 종류

  • 문자 디바이스 드라이버
    • 일반적인 장치에 대한 디바이스 드라이버
  • 블록 디바이스 드라이버
    • 파일 시스템 접근을 위한 디바이스 드라이버

디바이스 드라이버를 작성한다는 것

  • 디바이스의 초기화 코드 작성
  • 디바이스의 인터럽트 처리 부분 작성 (Interrupt handler)
  • 디바이스 접근을 위한 다양한 시스템콜의 내용 작성

디바이스 접근 예

Int fd;  // file descriptor

fd = open("/dev/ttyS0", O_RDWR);  // device node/terminal, mode
write(fd, "Hello", 5);  // 전송할 device, 전송할 내용
close(fd);
  • open()을 통해 획득한 fd를 통해 다양한 시스템콜을 호출하여 디바이스 제어
  • 필요한 작업을 끝낸 후에는 close() 호출 → Memory에 할당된 resource 지우기

가상화 기술, 리눅스 컨테이너, Docker

가상화

  • [L1] Infrastructure (하드웨어)
  • [L2] Hypervisor : 하드웨어를 가상의 하드웨어처럼 보여주는 SW Layer
  • [L3] Guest OS를 위에 올릴 수 있음

Docker

  • [L1] Infrastructure (하드웨어)
  • [L2] Host OS (Linux) → 그대로 유지, Share
  • [L3] Docker → Linux를 쪼개서 각각 서로 다른 App set들이 돌아가게 하는 것
  • 각 set들은 자신이 독점하는 것처럼 느껴지게 한다 (각각 서로 다른 computer처럼)
  • Container → 각각의 Docker instance(가상화된 machine)에 resource를 할당
  • 가상화된 machine들을 관리해주는 기술이다

AI 반도체

NVIDIA A100이 가장 많이 쓰임

왜 쓰는가? GPU 말고 AI specific 반도체가 필요한 이유

  • AI의 과다한 연산 비용
  • 대량, 병렬 메모리 접근 + 연산을 통합 필요
  • 성능 향상 + 비용 최적화 필요
  • 국내 시장: Rebellions, Furiosa AI 등
profile
밀린 TIL 업로드 조금씩 정리중...

0개의 댓글