운영체제 | 인프런 운영체제 공룡책 강의 Chapter1-2. Intro & O/S Structures

docu·2025년 2월 24일
0

01. 운영체제가 뭐길래?

  • OS (Operating System, 운영체제) : 컴퓨터(하드웨어) 시스템을 운영하는 소프트웨어

  • 컴퓨터 : 정보를 처리하는 기계

  • 정보 : 불확실한 상황을 측정해서 그것을 수치적으로 표현한 것

  • 정보의 최소 단위 : bit (binary digit)

    • 8 bit (2^8) : 1 Byte
    • 1024 bit (2^1024) : 1 MB
  • 정보의 처리 : 정보의 상태 변환 ( 0에서 1로, 1에서 0으로)

    • 부울 대수(Boolean Algebra): NOT, AND, OR (트랜지스터로 논리 게이트를 만들 수 있음)

    • 논리게이트 : NOT, AND, OR, XOR, NAND, NOR

    • 논리 회로 : IC, LSI, VLSI, ULSI, SoC, ... (게이트들을 회로에 배치할 수 있음)

      • 무어의 법칙 : 집적도가 1년 6개월에 2배씩 늘어남
      • 황의 법칙 : 메모리가 1년에 두배씩 늘어남
      • 메모리의 용량과 칩의 집적도가 기하급수적으로 늘어났음
      • 이제는 더이상 집적하기 힘들어서 양자 컴퓨터에 대한 연구
  • 정보의 저장: 플립-플롭

  • 정보의 전송 : 데이터 버스, RF (Radio Frequency, 무선)

  • 컴퓨터의 할아버지 (앨런튜링, Turing Machine)

    • 튜링 머신, 유니버설 튜링 머신, 헤드, 테이프
    • 응용 프로그램, 운영체제, CPU, 메모리
  • 컴퓨터의 아버지 (폰노이만, Instruction Set Architecture)

    • 내장형 프로그램 방식(stored-program) 처음 도입
    • 프로그램을 RAM에 저장할 수 있음
    • 메모리에 있는 명령어를 fetch해와서 CPU에서 execute 하는 방식
    • 명령어 집합으로 컴퓨터를 운영하는 방식
    • 프로그램: 컴퓨터 하드웨어에게 어떤 특정 task를 실행시키는 명령어들의 집합
  • 운영체제

    • 컴퓨터 시스템을 운영하는 소프트웨어
    • 운영체제는 컴퓨터에서 항상 실행 중인 프로그램
    • 기본적으로 하드웨어 전체를 컨트롤하는 운영체제가 탑재가 돼있음
    • 시스템 서비스를 애플리케이션 프로그램에게 제공해줌
    • 운영체제가 해야할 일은 프로세스를 관리하고 리소스(파일, 프린터, input, output), 유저 인터페이스(마우스, 키보드) 등 관리해줘야함
    • H/W device <- OS (window, linux, mac os) -> App

02. 운영체제의 개념과 구조

  • 전통적인 컴퓨터 시스템의 구조

    • 한 개 이상의 CPU
    • 여러개의 device controller
      • CPU
      • disk controller (disks, storage)
      • USB controller (mouse, keyboard, printer)
      • graphics adapter (monitor)
    • 공통 버스로 연결됨
  • Bootstrap program

    • 컴퓨터 전원이 켜지자마자 처음으로 동작되어야할 ROM에 저장되어있는 프로그램은 메모리에다가 운영체제를 얹어주는 일을 해야함
    • HDD(하드디스크)에 있는 운영체제(특히 커널)를 메모리에 로딩해주는 역할을 해야함
    • 그러면 나머지 응용 프로그램들을 메모리에 로드했다가 삭제했다가하는 거는 운영체제가 해줌
  • Interrupts

    • 하드웨어가 버스를 통해서 언제라도 interrupter를 트리거 시킬 수 있음
    • 트리거를 시키면 cpu에 시그널을 보내줌
    • 키보드에서 "A"라는 키를 눌렀다는 것을 CPU한테 알려줄때 interrupt라는 방법으로 알려줌
  • 폰노이만 아키텍처 (복습)

    • 컴퓨터에 내릴 수 있는 명령을 명령의 집합으로 정의하고, 이 명령어 집합으로 구성된 컴퓨터 프로그램을 메모리에 로딩하면 메모리에 있는 명령어들을 cpu가 하나씩 fetch를 하고 execute를 함
    • A typical instruction-execution cycle
      • first fetches and instruction from memory
      • and stores that instruction in the instruction register (명령어를 메모리에서 하나씩 가져오는 레지스터 나중에 나옴)
  • Storage System

    • CPU가 있고, memory가 있고 비휘발성 장치인 Storage system이 있음
    • storage system의 계층 구조 (용량에 따른, Access time에 따른)
      • register : cpu 안의 회로에 묶여있어 가장 빠름
      • cache : cpu와 ram 사이의 cache memory. 빠르지만 RAM보다 훨씬 비싸기 때문에 용량을 크게 할 수 없음
      • main memory : 흔히 말하는 RAM
      • solid-state-disk (SSD) : 메모리 형태의 하드 디스크
      • hard disk (HDD) : 마그네틱 카드 자기장을 이용
      • optical disk : HDD로 저장하기에도 양이 많은 것들 저장, 백업용도
      • magnetic tapes : 백업 용도 (은행 등 보존연안 10년 같은)
  • I/O Structure

    • 실행 : Thread of Execution
      • CPU가 thread of execution을 가지고 있는데 캐시를 통해서 RAM에 액세스를 하고 IO device가 interrupt를 걸어주고, 데이터를 주고 받고, IO request를 보내고 이런 복잡한 IO structure를 가지고 있음
      • 유투브 동영상을 보여주는거: 네트워크로부터 데이터를 받는거는 network device가 할일이고, 그 다음에 LCD에 화면 display하는 것은 LCD display가 할일. CPU가 할일은 정지 이런 작업 정도. 이런 경우에는 네트워크 카드가 다이렉트로 LCD에 데이터를 보냄. 이렇게 디바이스끼리 다이렉트로 액세스 하는것 = Direct Memory Access (DMA)
      • 커널이 업데이트 될일은 거의 없음. 현재 운영체제의 90% 이상은 커널에 붙은 디바이스 컨트롤러를 만드는 일.
  • 컴퓨터 시스템 요소의 정의

    • CPU, Processor, Core, Multicore, Multiprocessor
    • 예전에 있었던 cpu 하나에 메모리 하나있는 구조는 더이상 사용하지 않음.
    • 최근 : Symmetric multiprocessing (SMP)
    • 프로세서, cpu가 한 개가 아니라 멀티라는 것
    • 메모리가 한개인데 cpu0, cpu1, cpu2 이런식으로 여러개의 cpu가 각각의 레지스터와 캐시를 갖고 붙어있는 형식
    • Multi-core : 같은 프로세서 칩 하나에 여러 개의 코어가 붙어 있는 것. cpu를 한장만(마더보드가 한개) 꼽지만 그 안에 코어가 여러개 (듀얼-2개, 쿼드-4개, ...)
    • Multiprogramming : 하나의 프로그램이 한 번에 한 개 이상 돌고 있는 것. 메모리에 여러 개의 프로세스가 동시에 올라가 있는 것. CPU 사용 효율을 높일 수 있음.
    • Multitasking(=multiprocessing) : 하나의 CPU가 실행 속도가 빠를때 여러개의 job(processor)을 자주 바꿔줌.
    • CPU Scheduling : RAM에 여러개의 프로세스를 동시에 실행. CPU는 한개. 어떤 프로세스를 다음에 실행시킬 지의 결정.
  • user mode & kernel mode

    • user mode : 프로세스 실행 중에 시스템콜을함
      • 시스템콜 : OS한테 어떤 서비스를 요청함
    • kernel mode: 시스템 콜을 하면 그때 커널 모드로 바껴서 커널 모드에서 시스템콜을 처리하고 난 다음에 다시 user mode로 되돌아감. kernal mode가 아니면 직접적으로 하드웨거 제어가 불가능.
  • Virtualization (가상화)

    • Virtual Machine Monitor (VMM) 을 끼면 한 컴퓨터에서 여러 운영체제를 실행시킬 수 있음. cpu 스케줄링을 하듯이 os vmm 스케줄링 가능.
  • OS 인터페이스

    • cli : sh, bash, tcsh, zsh ...
    • GUI : Windows, Aqua for MacOS, KDE/GNOME for Linux ...
    • touch-screen interface : android UI, iPhone UI ...
  • 실제 응용프로그램이 OS와 상호작용하는 방식

    • 시스템 콜
      • OS가 제공해주는 서비스들을 시스템 콜을 하면됨
      • read, write ...
      • OS의 API 콜이 시스템 콜이라고 이해하면 됨

    인프런 운영체제 공룡책 강의, 주니온

0개의 댓글