pintOS 강의 - 권영진 교수님

c4fiber·2023년 12월 25일
0

SW사관학교 정글7기

목록 보기
41/49

읽기전에


SW사관학교 정글 pintOS과정에서 권영진 교수님이 강의해주신 내용을 필기한 기록입니다.
당시 ppt에 바로 필기하지 못해 키워드, 흐름 중심으로 기록하였습니다.

pintOS 수업을 중단한 이유


핀토스 수업내용을 바꾸는 이유:
32비트 -> 64비트로 변경하는 등(pintos-kaist) 큰 노력을 기울였으나 왜?

  • chat gpt의 등장으로 인해 집단지성이 생겼다.
  • 코드 가독을 해준다.
  • 프로그램을 하나하나 이해하는게 맞나? 아닌거 같다.
  • 코드를 같이 짜면서 생산성을 올리는게 목표였다.
  • .ext binary 로딩하는 과정을 공부해두면 좋다.
  • 프로그램 헤더 -> 모르겠다? 구글링을 해서 백그라운드를 채운다. + 챗gpt 활용

이제 어떻게 하느냐?

  • 답을 다준다
  • 이 input status를 입력하면 어떤 결과가 나오나? 오류가 생기나? 써봐라
  • -> 코드를 이해할 수 있게 된다. (quiz 활용)
  • 성능 competition -> 최적화 해보세요. (optimization problem)
  • os prepatch

copilot + chatgpt 확실하게 활용하라


숙제 3배 -> 같이 써라.
chatgpt
내 코드를 던져봤을때 얘가 잘 이해하는지?
이렇게 질문하세요! -> 답이아니라 질문하는 조건

그림판


지식: 두가지로 크게 나뉜다

  • 정의: OS knowledge
    - 대충 넘긴다. chatgpt에게 물어봐!
    - 산출물만 보고있다. -> three easy pieces
  • Design knowledge: 만드는 과정 (Top down, 요구사항에 의해 만들어졌다.) 중요함!!!
    - 왜 이렇게 만들었는지 추측, 원인 -> 이유를 알아야 한다.

process: 너무 무겁고 느리네? -> thread: light weight

OS의 탄생 이유: 하드웨어의 복잡한 기능들을 감춰준다.

  • 어떻게 감추는지 모른다. 냅다 쓰는거다 (Abstraction 개념 적용)
  • 인터페이스 아래에 동작원리를 이해한다.

What's going on

    1. 메모리 vs 캐시(SRAM)
    1. page fault
    • copy on write, demand paging

유저: 왜케 느려! -> 미리 한번해 -> 메모리에 미리 적재시켜 -> 사용자 체감 상승

Abstraction

CS의 가장 중요한 개념

  • 어떻게 abstract 할 것인가?
  • top down- 목적이 있고, 맞춰서 발전한다.

내가 필요한 정보를 모아서 struct로 만들어 packing 한다.

OS의 인터페이스가 이쁘다! common set

john ouster out google

  • composition: -> divide and conquer
  • layers of Abstraction -> 거의 맞다 (리누스 토발즈)
  • problem decomposition
  • problem을 쪼개서

CPU, Memory, Disk -> Process
process는 computer를 추상화 한것이다.

its own view of Machine

address space vs virtual memory

  • per 프로세스가 사용하고 있는 주소 : Own address space
  • own virtual CPU: scheduling
  • own files

disk에 있는 바이너리를 메모리로 올리는게 load

  • 숙제: 언제 어디서, 어떻게 하는지 찾아봐라.
  • heap, stack은 운영체제가 만들어준다.
  • 어떤건 from disk, 어떤건 from os
    - anonymous memory: stack, heap

Abstraction of address space


logical view: 실제하지 않는다. -> physical view
virtual addr vs physical addr

  • mapping, association
  • mapping function ex) 100(virtual) -> 1000(physical)

how to map virtual to physical: abstraction 방법(mapping)

  • segmentation
  • paging
  • segmented paging

허용: translation to physical address
불가: exception (kernel code)

NULL 주소 접근 -> page fault 발생 (hardware) -> OS가 signal(SIGSEGV)을 보낸다. -> 프로세스가 segmentation fault를 출력하고 종료

가상 주소를 써도 통짜로 줬다 -> 많이 남는다 -> demand paging
어떻게? page fault -> 하드웨어(물리)) 신호 -> OS에게 권한이 간다. -> page fault handler

Demand paging

  • 어플리케이션이 할당되지 않은 물리 메모리에 접근했을 때 -> app은 멈추고 커널로 권한이 넘어간다.
  • page fault handler 수행 ->

process는 protection unit 이다.

file-backed and anonymous

  • file -> memory에 매핑, page fault 발생 시 디스크에서 파일을 읽어와 적재
    - DMA: without CPU
    - 다 썼다 알려주기: interrupt
  • 매핑 후 zero로 초기화

semantic : 의미의, 의미론의

design term: david wheeler

  • level of indirection
    - ex) pointer
    - 주소에서 값으로 매핑한다. 포인터가 같은 공간을 가리킬 수 있다.
    - Y = Ax , y 와 x는 서로 다른 레벨
    - file이 disk를 추상화 한다.
    - file offset
    - virtual memory 주소 / file: offset
    - physical memory 주소 / file block 주소
    - FAT: table / ntfs: index
    - 1. 속도 차이
    - 2. 휘발, 비휘발: crash consistancy
    - 이런것들을 해주는 소프트웨어 : file system
    AI: 귀납적으로? 연역적으로? 빅데이터 추상화

볼수있는 틀이 생긴다.

Abstraction of storage


Indexing 기법

  • indirect inode
  • file allocation table
  • extent tree
  • b tree
  • radix tree: 실무에서 짱좋다!

file의 메타데이타: inode

internal nodes in the index: 메모리, 스토리지 양쪽 다 있다.

명시적으로 저장을 할 때 allocation이 된다.
storage 내용을 dram에 캐싱한다.
내가 vi 에디터로 쓰면 캐시에 쓰는 것이다.

OS에서 배우는 걸 왜 필요해?
ex) 웹 서버: user를 connection으로 abstraction
현실에 대응되는 entity를 abstraction 한다.

OS는 abstraction의 결정체

profile
amazing idiot

0개의 댓글