Notice
Recent Posts
Recent Comments
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Archives
Today
Total
관리 메뉴

채록채록

[OS] Computer, Operating System, Architecture, Bootstraping, CPU, I/O operation, 본문

Developing

[OS] Computer, Operating System, Architecture, Bootstraping, CPU, I/O operation,

김책은 2025. 7. 23. 22:51

Computer

Abstract concept

  1. Server Computer, Personal Computer, Embedded Computer
  2. 최소 cpu, memory 하드웨어 위에 소프트웨어가 동작하는 모든 것

Computer system organization

  1. computer hardware 위 operating system : 하드웨어 자원의 전권을 가진 resource allocator, 그 위에 os가 제공하는 여러 system and application prograFms
  2. cpu, memory, i/o device가 i/o device controller와 bus로 연결되어 있다.
    1. bus 네트워크 인터페이스(Topology) : 한번에 한쌍만 통신
    2. cpu의 명령에 의해 모든 것이 수행된다.
    3. 심플할수록 효율이 좋다.
    4. 신호가 합쳐지면 데이터가 깨진다.

Operating System

  1. hardware resource manage하는 system software
  2. Abstraction
  3. Sharing
    1. Time multiplexing : cpu의 빠른 switching
      1. 기본적으로 cpu는 한번의 하나의 process만 사용 가능
      2. instruction을 엄청 빠르게 수행해서 프로그램 동시에 띄우는 것처럼 보인다
    2. Space multiplexing : memory 나눠서 쓰기, 공유할 때의 관리
  4. Protection : 한 프로그램의 자원 독점 방지
  5. Fairness : 자원공유하는 여러 프로그램에 어떻게 효율적/공정하게 할당할 것인가
  6. Performance

Computer System operation

  1. Von Neumann Architecture
    1. 단일 메모리 : 하나의 물리적 장치에 data section(무엇을 연산)&code section(어떤걸 연산) + 하나의 회선(순차적 처리)
      • : 최적화 가능, 설계 자체가 simple
      • : 절차 복잡, bottle neck 발생
  2. Harvard Architecture
    1. data section&code section 분리해서 cpu에 연결
      • : 병렬처리 가능
      • : 별도의 bus, i/o device 하드웨어 설계 불편 = 하드웨어 logic cost 증가
    2. 임베디드에서 변형해서 XIP Architecture로 쓰긴한

Bootstraping in Linux

부팅할 때 커널코드가 돌아가서 준비가 되는 과정

  1. cpu가 스스로 자기 상태를 check
  2. excute an instruction at a fixed location(0xffffff0) by PC : BIOS 코드 시작지점이 담겨있다.
    1. BIOS = Basic Input Output System
    2. UEFI = Unified Extensible Firmware Interface
    3. 기본 setting 제공하는 인터페이스, PC용 펌웨어, 하드웨어와 운영체제 연결
  3. 필수적인 하드웨어 스스로 PowerOnSelfTest : POST 수행
  4. boot device를 찾고 fetches Boot Loader in boot device : LILO / GRUB
    1. MBR (Master Boot Record) in BIOS
      1. 설치되어있는 OS 정보 저장 + 그에 따른 OS의 시동을 위한 실행 코드인 boot loader를 저장
    2. ESP(Efi System Partition) in UEFI
    3. 여기까지가 BIOS의 코드
  5. LILO/GRUB가 compressed kernel load
  6. compressed kernel decompresses itself
  7. 로그인 (console, gui 등..)

CPU

  1. 주 목적 : 수학연산
  2. 특성 분류 기준 : Instruction Set Architecture (ISA) = 구조
    1. CISC : 많이 쓰는 명령어 연산 조합을 하나의 instruction으로 만들어 cpu 설계하자.
        • : 성능 up
        • : cpu 설계 회로 복잡도 증가 → 공정, clock, hardware 등의 한계 도달
    2. RISC : 예전처럼 그냥 기본적인 instruction들의 단순한 cpu 설계를 하는 대신 다른 성능을 높이자.
  3. Pipelining
    1. cpu의 처리 과정을 크게 4개로 나누면 Fetch, Decode, Excute, Write Back
    2. 각각 과정이 dependecy X = 여러개의 명령을 동시수행 가능하다
    3. Depth Max = 4 but 성능이 4대만큼 나오지 않는다
      1. 명령별 execution time이 다를 수 있다. → 지연발생
      2. 1번 명령 writeback 결과 data를 2번이 fetch해야 하는 경우 → dependency 발생
      3. 실행하고 결과를 필요로 하는 경우(ex 조건문) → 분기 발생
  4. Instruction-Level Parallelism
    1. 아예 여러 명령어를 동시에 실행시켜버리는 기술
    2. Superscalar(하드웨어적으로 cpu에서 판단하여 해결) VS VLIW(소프트웨어적으로 compiler에서 코드를 분석해서 해결)
    3. simultaneous multithreding : 가상코어 여러개
    4. multi-core : 실제로 코어가 여러개
  5. Symmetric multiprocessing architecture
    1. 한 system 내에 여러개의 cpu, 공유 memory
      1. parallel computing
      2. N 프로세서의 속도향상 but 비율이 N은 아니다. (오버헤드, 병목현상, 공유자원에 대한 경합 등)
    2. NUMA(Non-Uniform Memory Access) multiprocessing architecture
      1. 각 cpu에 로컬 버스를 통해 자체 물리적 로컬 메모리 제공
      2. 모든 cpu가 공유시스템 연결로 연결되어 하나의 물리주소 공간 공유 = 하나의 computer, 하나의 system
      3. 다른 cpu로 접근할 순 있는데 지연시간 발생하긴 함
  6. Clustered system architecture
    1. 완전분리 computer(독자적 시스템 / 노드) 를 고속의 network으로 interconnect + 저장장치 공유 = 하나의 system처럼 동작
    2. 시스템에 중복 기능을 추가해서 avaliability 증가
      1. Parallel : 각각의 computer들이 한 system 안에서 분배해서 결과를 뽑아낸다.
      2. Distributed system : 일할 거를 분배해서 문제 일부 해결 후 최종 결론을 낸다.

I/O operation

Communicates with register in I/O controller

  1. Interrupt-driven I/O cycle
    1. CPU에서 수행하던 processA에서 I/O 요청이 발생해 cpu에서 명령체계가 만들어진다
    2. cpu register안 data가 BUS를 타고 controller register로 이동
    3. cpu가 processB(다른일) 수행할 동안 I/O controller가 입출력 명령을 처리하고 interrupt signal 생성
    4. cpu가 interrupt를 받고 processB는 memory에 저장해두고 interrupt handler를 실행
    5. interrupt handler가 interrupt 및 데이터 처리
      1. OS코드가 수행되는 부분(OS 영역)
    6. processA 이어서 처리
  2. Synchronous/Blocking
    1. 기다렸다가 동기화한다.
    2. requesting process가 kernel에게 I/O요청 → kernel이 I/O 명령을 대신 내려줘서 hardware data가 transfer되어 I/O가 끝나는 시점까지 기다렸다가 process 다시 실행
    3. ex : cin 입력들어올때까지 기다렸다가 다음 코드 수행
  3. Asynchronous/Non-blocking
    1. 안기다리고 그냥 복귀하고 I/O가 끝나면 그거는 그거대로 transfer
  4. Interrupt 구분
    1. hardware interrupt
      1. asynchronous
    2. Trap
      1. process 중단하고 OS 코드가 올라온다는 의미
        1. OS위에서 동작하는 프로그램은 I/O 하드웨어 권한이 없으므로 OS코드에 의존한다.
      2. ex : system calls : OS 기능 요청할 수 있도록 OS에서 제공하는 인터페이스
    3. Fault(Exception)
      1. cpu에서 수행할 수 없는 연산(= compiler 결과)에 대해 스스로 interrupt 발생
      2. ex : divide-by-zero, protection fault, pointer 메모리
  5. DMA transfer (Direct Memory Access)
    1. controller→cpu→memory 를 거치는 switching이 많이 발생하는 것은 비효율적이다.
      1. 디스크와 같은 많은 데이터를 입출력하는 장치 등…
      2. I/O가 cpu로부터 DMA를 사용하도록 허락받는다
    2. DMA가 cpu 대신 bus를 사용하여 memory 작업 처리 수행 및 보고를 받는다
    3. cpu 오버헤드를 줄인다
    4. 느린 I/O device에 큰 용량의 작업이 요구될 때 사용

Storage hierarchy

  1. ROM : Read Only Memory
    1. 굽는다 = 한번만 쓸 수 있다
    2. 비휘발성
    3. 옛날에 BIOS 정보 (os 가동 전 컴퓨터의 각 구성요소를 점검하기 위한 기본 정보, 모니터, 키보드, 디스크 드라이브 등이 서로 어떻게 정보를 전달하고, 이요할 것인지를 제어하는 기본 입출력 시스템) 저장
  2. RAM : Random Access Memory
    1. memory 어느 영역에 있어도 access 가능
    2. 휘발성
    3. SRAM
      1. 비싸다.
      2. cpu, register, cache
      3. 빠르다.
      4. 전원공급이 이루어지고 있다는 전제하에 비휘발성
    4. DRAM
      1. 싸다.
      2. refresh를 주기적으로 해주어야 하고 refresh 중에는 access가 불가능하다.
      3. 상대적으로 느리다. (SSD보단 빠르다)
      4. 전원공급이 되어도 일정시간이 지나면 데이터가 뭉개진다 = 신호가 약해진다.
  3. system 내의 병목현상은 대부분 storage에서 발생한다.
  4. 캐싱 정책
    1. 전제 : 최근 사용된 것은 가까운 미래에 또 사용될 가능성이 높다.
    2. 자주 사용하는 것을 더 빠른 메모리에 지우지 않고 저장한다 → 최근에 사용된게 마지막에 없어지게끔 한다.
    3. Write-through : cpu 연산결과를 memory에 저장할 때 data 바뀌자마자 disk의 data도 바뀌게끔 한다
      1. consistency 크다.
        • : I/O bottle neck으로 인해 cpu utility 저하 (컴퓨터 성능 저하)
    4. write-back : cpu 유휴상태일 때 바뀐 data들을 한꺼번에 반영한다.
    5. cpu local cahe & memory coherency Memory & disk coherency
  5. Physical hard disk structure(HDD) 에서 data를 읽는 절차
    1. cpu가 n번 platter의 dataA를 읽으라고 controller에게 명령
    2. arm seek : 원하는 data가 기록된 track으로 이동한다.
      1. HDD의 bottle neck이 발생할 수 있다.
      2. 최대한 같은 track에 데이터를 연속적으로 저장할 수 있도록 설계한다.
      3. 한 track에 다 쓰면 각 platter에 똑같은 위치의 track들의 모임인 cylinder에다 data를 이어서 쓴다.
        1. sector : disk에 저장되는 데이터 최소단위 (512bytes)
      4. arm은 움직이지 않고 head만 올리고 내리고 하면 된다.
    3. head를 내려서 데이터를 읽는다.
    4. 읽은 data를 controller가 bus를 타고 memory에 던진다.
  6. Compact Flash card internals (SSD)에서 dataB를 dataC로 덮어씌우는 과정
    1. Block 하나당 Data clear 시켜버리는 횟수가 정해져있다 = blcok 수명 = 전체수명
    2. 웨어레벨링 알고리즘
      1. dataB disabled
      2. 남는자리에 dataC 쓴다
      3. 접근 순서를 다시 정의한다.
    system call
    1. Dual Mode operation
      1. user mode : 개발자가 만든 program이 cpu를 점유하고 돌아가는 상태
      2. kernel mode : os가 cpu를 사용할 수 있는 권한을 받아서 os가 동작하는 상태
    2. Hardware protection
      1. cpu protection
        1. timer : 한 program이 cpu를 계속 점유/사용하는 것을 방지하도록 cpu 자신에게 interrupt를 건다.
        2. os에 구현되어있다
      2. memory protection
        1. protection fault
      3. i/o protection
        1. dual mode operation
        2. user의 program이 i/o device를 직접 controll하지 못하게 방어한다. = i/o instruction을 사용하지 못하게 한다.