채록채록
[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:51Computer
Abstract concept
- Server Computer, Personal Computer, Embedded Computer
- 최소 cpu, memory 하드웨어 위에 소프트웨어가 동작하는 모든 것
Computer system organization
- computer hardware 위 operating system : 하드웨어 자원의 전권을 가진 resource allocator, 그 위에 os가 제공하는 여러 system and application prograFms
- cpu, memory, i/o device가 i/o device controller와 bus로 연결되어 있다.
- bus 네트워크 인터페이스(Topology) : 한번에 한쌍만 통신
- cpu의 명령에 의해 모든 것이 수행된다.
- 심플할수록 효율이 좋다.
- 신호가 합쳐지면 데이터가 깨진다.
Operating System
- hardware resource manage하는 system software
- Abstraction
- Sharing
- Time multiplexing : cpu의 빠른 switching
- 기본적으로 cpu는 한번의 하나의 process만 사용 가능
- instruction을 엄청 빠르게 수행해서 프로그램 동시에 띄우는 것처럼 보인다
- Space multiplexing : memory 나눠서 쓰기, 공유할 때의 관리
- Time multiplexing : cpu의 빠른 switching
- Protection : 한 프로그램의 자원 독점 방지
- Fairness : 자원공유하는 여러 프로그램에 어떻게 효율적/공정하게 할당할 것인가
- Performance
Computer System operation
- Von Neumann Architecture
- 단일 메모리 : 하나의 물리적 장치에 data section(무엇을 연산)&code section(어떤걸 연산) + 하나의 회선(순차적 처리)
-
- : 최적화 가능, 설계 자체가 simple
-
- : 절차 복잡, bottle neck 발생
- Harvard Architecture
- data section&code section 분리해서 cpu에 연결
-
- : 병렬처리 가능
-
- : 별도의 bus, i/o device 하드웨어 설계 불편 = 하드웨어 logic cost 증가
- 임베디드에서 변형해서 XIP Architecture로 쓰긴한
Bootstraping in Linux
부팅할 때 커널코드가 돌아가서 준비가 되는 과정
- cpu가 스스로 자기 상태를 check
- excute an instruction at a fixed location(0xffffff0) by PC : BIOS 코드 시작지점이 담겨있다.
- BIOS = Basic Input Output System
- UEFI = Unified Extensible Firmware Interface
- 기본 setting 제공하는 인터페이스, PC용 펌웨어, 하드웨어와 운영체제 연결
- 필수적인 하드웨어 스스로 PowerOnSelfTest : POST 수행
- boot device를 찾고 fetches Boot Loader in boot device : LILO / GRUB
- MBR (Master Boot Record) in BIOS
- 설치되어있는 OS 정보 저장 + 그에 따른 OS의 시동을 위한 실행 코드인 boot loader를 저장
- ESP(Efi System Partition) in UEFI
- 여기까지가 BIOS의 코드
- MBR (Master Boot Record) in BIOS
- LILO/GRUB가 compressed kernel load
- compressed kernel decompresses itself
- 로그인 (console, gui 등..)
CPU
- 주 목적 : 수학연산
- 특성 분류 기준 : Instruction Set Architecture (ISA) = 구조
- CISC : 많이 쓰는 명령어 연산 조합을 하나의 instruction으로 만들어 cpu 설계하자.
-
- : 성능 up
-
- : cpu 설계 회로 복잡도 증가 → 공정, clock, hardware 등의 한계 도달
-
- RISC : 예전처럼 그냥 기본적인 instruction들의 단순한 cpu 설계를 하는 대신 다른 성능을 높이자.
- CISC : 많이 쓰는 명령어 연산 조합을 하나의 instruction으로 만들어 cpu 설계하자.
- Pipelining
- cpu의 처리 과정을 크게 4개로 나누면 Fetch, Decode, Excute, Write Back
- 각각 과정이 dependecy X = 여러개의 명령을 동시수행 가능하다
- Depth Max = 4 but 성능이 4대만큼 나오지 않는다
- 명령별 execution time이 다를 수 있다. → 지연발생
- 1번 명령 writeback 결과 data를 2번이 fetch해야 하는 경우 → dependency 발생
- 실행하고 결과를 필요로 하는 경우(ex 조건문) → 분기 발생
- Instruction-Level Parallelism
- 아예 여러 명령어를 동시에 실행시켜버리는 기술
- Superscalar(하드웨어적으로 cpu에서 판단하여 해결) VS VLIW(소프트웨어적으로 compiler에서 코드를 분석해서 해결)
- simultaneous multithreding : 가상코어 여러개
- multi-core : 실제로 코어가 여러개
- Symmetric multiprocessing architecture
- 한 system 내에 여러개의 cpu, 공유 memory
- parallel computing
- N 프로세서의 속도향상 but 비율이 N은 아니다. (오버헤드, 병목현상, 공유자원에 대한 경합 등)
- NUMA(Non-Uniform Memory Access) multiprocessing architecture
- 각 cpu에 로컬 버스를 통해 자체 물리적 로컬 메모리 제공
- 모든 cpu가 공유시스템 연결로 연결되어 하나의 물리주소 공간 공유 = 하나의 computer, 하나의 system
- 다른 cpu로 접근할 순 있는데 지연시간 발생하긴 함
- 한 system 내에 여러개의 cpu, 공유 memory
- Clustered system architecture
- 완전분리 computer(독자적 시스템 / 노드) 를 고속의 network으로 interconnect + 저장장치 공유 = 하나의 system처럼 동작
- 시스템에 중복 기능을 추가해서 avaliability 증가
- Parallel : 각각의 computer들이 한 system 안에서 분배해서 결과를 뽑아낸다.
- Distributed system : 일할 거를 분배해서 문제 일부 해결 후 최종 결론을 낸다.
I/O operation
Communicates with register in I/O controller
- Interrupt-driven I/O cycle
- CPU에서 수행하던 processA에서 I/O 요청이 발생해 cpu에서 명령체계가 만들어진다
- cpu register안 data가 BUS를 타고 controller register로 이동
- cpu가 processB(다른일) 수행할 동안 I/O controller가 입출력 명령을 처리하고 interrupt signal 생성
- cpu가 interrupt를 받고 processB는 memory에 저장해두고 interrupt handler를 실행
- interrupt handler가 interrupt 및 데이터 처리
- OS코드가 수행되는 부분(OS 영역)
- processA 이어서 처리
- Synchronous/Blocking
- 기다렸다가 동기화한다.
- requesting process가 kernel에게 I/O요청 → kernel이 I/O 명령을 대신 내려줘서 hardware data가 transfer되어 I/O가 끝나는 시점까지 기다렸다가 process 다시 실행
- ex : cin 입력들어올때까지 기다렸다가 다음 코드 수행
- Asynchronous/Non-blocking
- 안기다리고 그냥 복귀하고 I/O가 끝나면 그거는 그거대로 transfer
- Interrupt 구분
- hardware interrupt
- asynchronous
- Trap
- process 중단하고 OS 코드가 올라온다는 의미
- OS위에서 동작하는 프로그램은 I/O 하드웨어 권한이 없으므로 OS코드에 의존한다.
- ex : system calls : OS 기능 요청할 수 있도록 OS에서 제공하는 인터페이스
- process 중단하고 OS 코드가 올라온다는 의미
- Fault(Exception)
- cpu에서 수행할 수 없는 연산(= compiler 결과)에 대해 스스로 interrupt 발생
- ex : divide-by-zero, protection fault, pointer 메모리
- hardware interrupt
- DMA transfer (Direct Memory Access)
- controller→cpu→memory 를 거치는 switching이 많이 발생하는 것은 비효율적이다.
- 디스크와 같은 많은 데이터를 입출력하는 장치 등…
- I/O가 cpu로부터 DMA를 사용하도록 허락받는다
- DMA가 cpu 대신 bus를 사용하여 memory 작업 처리 수행 및 보고를 받는다
- cpu 오버헤드를 줄인다
- 느린 I/O device에 큰 용량의 작업이 요구될 때 사용
- controller→cpu→memory 를 거치는 switching이 많이 발생하는 것은 비효율적이다.
Storage hierarchy
- ROM : Read Only Memory
- 굽는다 = 한번만 쓸 수 있다
- 비휘발성
- 옛날에 BIOS 정보 (os 가동 전 컴퓨터의 각 구성요소를 점검하기 위한 기본 정보, 모니터, 키보드, 디스크 드라이브 등이 서로 어떻게 정보를 전달하고, 이요할 것인지를 제어하는 기본 입출력 시스템) 저장
- RAM : Random Access Memory
- memory 어느 영역에 있어도 access 가능
- 휘발성
- SRAM
- 비싸다.
- cpu, register, cache
- 빠르다.
- 전원공급이 이루어지고 있다는 전제하에 비휘발성
- DRAM
- 싸다.
- refresh를 주기적으로 해주어야 하고 refresh 중에는 access가 불가능하다.
- 상대적으로 느리다. (SSD보단 빠르다)
- 전원공급이 되어도 일정시간이 지나면 데이터가 뭉개진다 = 신호가 약해진다.
- system 내의 병목현상은 대부분 storage에서 발생한다.
- 캐싱 정책
- 전제 : 최근 사용된 것은 가까운 미래에 또 사용될 가능성이 높다.
- 자주 사용하는 것을 더 빠른 메모리에 지우지 않고 저장한다 → 최근에 사용된게 마지막에 없어지게끔 한다.
- Write-through : cpu 연산결과를 memory에 저장할 때 data 바뀌자마자 disk의 data도 바뀌게끔 한다
- consistency 크다.
-
- : I/O bottle neck으로 인해 cpu utility 저하 (컴퓨터 성능 저하)
- write-back : cpu 유휴상태일 때 바뀐 data들을 한꺼번에 반영한다.
- cpu local cahe & memory coherency Memory & disk coherency
- Physical hard disk structure(HDD) 에서 data를 읽는 절차
- cpu가 n번 platter의 dataA를 읽으라고 controller에게 명령
- arm seek : 원하는 data가 기록된 track으로 이동한다.
- HDD의 bottle neck이 발생할 수 있다.
- 최대한 같은 track에 데이터를 연속적으로 저장할 수 있도록 설계한다.
- 한 track에 다 쓰면 각 platter에 똑같은 위치의 track들의 모임인 cylinder에다 data를 이어서 쓴다.
- sector : disk에 저장되는 데이터 최소단위 (512bytes)
- arm은 움직이지 않고 head만 올리고 내리고 하면 된다.
- head를 내려서 데이터를 읽는다.
- 읽은 data를 controller가 bus를 타고 memory에 던진다.
- Compact Flash card internals (SSD)에서 dataB를 dataC로 덮어씌우는 과정
- Block 하나당 Data clear 시켜버리는 횟수가 정해져있다 = blcok 수명 = 전체수명
- 웨어레벨링 알고리즘
- dataB disabled
- 남는자리에 dataC 쓴다
- 접근 순서를 다시 정의한다.
- Dual Mode operation
- user mode : 개발자가 만든 program이 cpu를 점유하고 돌아가는 상태
- kernel mode : os가 cpu를 사용할 수 있는 권한을 받아서 os가 동작하는 상태
- Hardware protection
- cpu protection
- timer : 한 program이 cpu를 계속 점유/사용하는 것을 방지하도록 cpu 자신에게 interrupt를 건다.
- os에 구현되어있다
- memory protection
- protection fault
- i/o protection
- dual mode operation
- user의 program이 i/o device를 직접 controll하지 못하게 방어한다. = i/o instruction을 사용하지 못하게 한다.
- cpu protection