반응형

스터디를 모집해서 인프런에서 주니온님이 무료로 강의를 올려주신 운영체제 공룡책 강의를 함께 듣고 있다.
주 1회 한 섹션씩 강의를 듣고 요약 정리, 그 후 제비뽑기해서 2명~4명이 돌아가며 발표 및 궁금한거 혹은 흥미로웠던 내용을 공유하는 방식으로 진행중이다.
블로그에는 주로 강의를 요약한 내용만 정리한다.

커리큘럼


1-2 운영체제의 개념과 구조

운영체제가 뭐길래?

1.1 What Operating Systems Do

  • 4개의 컴포넌트
    • 하드웨어
    • 오퍼레이팅 시스템
    • 어플리케이션 프로그램
    • 유저

1.2 Computer-System Organization

  • 현대 컴퓨터의 구성
    • 책에서는 모던 컴터 시스템 구성을 CPU, Disk Controller, USB Contoller, Graphics dapter 등으로 구성되어 있다 했지만 이건 이제 클래식해진거지
    • 요즘 모던하다는건 신경망 컴터, 네트워크, 양자 컴터임 (폰노이만 아키텍처를 다루지 않는 새로운 컴터 시스템)
  • Bootstrap : 컴퓨터 실행 시 OS 를 부팅해주는 프로그램
  • Interrupts : 인터럽트 방법으로 I/O 디바이스의 발생한 것들을 CPU 에게~ ㅇㅇ! 얘네 둘이 소통하는 방식 
  • 폰 노이만 아키텍처가 아닌 것 : 메모리에서 명령어 패치해서 가져오고, 명령어를 IR(instruction register)에 저장해. 그리고 실행해서 결과를 메모리에 저장햇
  • 용량과 접근속도(액세스타임)에 따라서 다양한 저장 공간이 있음
    • registers (제일빠름, 비쌈)
    • cache
    • main mamory (RAM)
    • solid-state disk (SSD)
    • hard disk (HDD, 마그네틱장을 이용한 ㅇㅇ!)
    • optical disk
    • magnetic tapes
  • I/O Structure

1.3 Computer System Architecture

    • 컴퓨터 시스템 컴포넌트의 정의
      • CPU
      • Processor
      • Core
      • Multicore
      • Multiprocessor
    • SMP(Sysmmetric multiprocessing)
      • 근데여기서 Asymmetric도 있는데 잘 안쓰니까 넘어간다고함

  • Multi-core design

1.4 Operating System Operations

  • Multiprogramming : 동시에 여러 프로그램이 병렬로 수행되는 것
  • Multitasking(= multiprocessing)
    • 논리적으로 멀티프로그래밍을 확장한 것
    • 시분할. 시간 아까우니까 시간을 나눠서 CPU를 사용하자= concurrency
    • CPU Scheduling : CPU 효율을 제일 높게 만드는 선택 방법이 뭐냐~ 보통 RR 마니씀~
  • 운영체제의 두가지 오퍼레이션 모드 : 유저모드와 커널모드

1.7 Virtualization

H/W 위에 VMM(버츄얼 머신 매니저, WSL, VMware, XEN)를 띄워서 여러 OS를 뛰움

1.10 Computing Environments

  • traditional computing
  • mobile computing
  • client-server computing (web)
  • peer-to-peer computing (더 나아가 blcok chain)
  • cloud computing (aws, azure, gcp)
  • Real-Time Embedded System (화상탐사, 라즈베리파이)

2.1 Operating System Services

어떤 컴퓨터 프로그램이 실행될 수 있도록 환경을 제공해주는게 OS

  • User Interface
  • Program execution - 보통 이거 공부하다가 한 학기 다 간다고 함 (그리고 메모리 관리)
  • I/O operation
  • File-system manipluation
  • Communications
  • Error detection
  • Resource allocation
  • Logging
  • Protection and Securty

2.2 User and Operating-System Interface

2.3 System Calls

  • System call (응용프로그램은 어떻게 OS와 통신하냐) : OS 가 프로그램들에게 제공하는 인터페이스 = OS의 API


  • 제일 중요한건 Process, Thread 란 개념
    • 한개만 할땐 괜찮아! 멀티 프로세싱 시 문제 발생!
    • 그로 인해 발생하는 동기화(synchronizattion) 문제 → deadlock 문제 발생
    • 이것들을 처리하기 위해 메모리를 어떻게 관리할까?
    • 더 잘하기 위해 가상 메모리를 어떻게 관리할거냐?
    • 또 멀티프로세싱 때 Cpu scheduling을 어떻게 할지 배울거임
  • 프로세스를 제어하는 대표적인 API를 공부할거다 (fork, exit, wait) 그리고 그 외 몇 개의 시스템콜을 배운다함. 근데 우리는 운영체제의 개념에 집중해서 배울거라서 시스템 프로그래밍에 대해서는 잘 다루지 않을거라 하심.
    • fork, shm_oepn(커뮤니케이션) 같은 거~ 배울거얀~
반응형