운영체제 2. Introduction & O/S structures

Jaewon·2023년 9월 18일
0

OperatingSystem

목록 보기
2/5

https://www.inflearn.com/course/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B3%B5%EB%A3%A1%EC%B1%85-%EC%A0%84%EA%B3%B5%EA%B0%95%EC%9D%98/dashboard
https://minkwon4.tistory.com/295
https://ryotta-205.tistory.com/89
https://m.blog.naver.com/PostView.naver?blogId=kistiscienceon&logNo=222722915536&navType=by
위 자료를 참고했다.


컴퓨터 시스템의 4요소

  • 하드웨어, OS, 응용프로그램, 유저

커널이란?

  • 운영체제의 핵심 부분으로서, 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 함
    • 인터페이스로써 응용 프로그램 수행에 필요한 여러가지 서비스를 제공하고, 여러가지 하드웨어(CPU, 메모리) 등의 리소스를 관리하는 역할 수행

전통적 컴퓨터 시스템의 구성 요소

  • 하나 혹은 그 이상의 CPU(Central Processing Unit)를 가짐
  • 여러 Device controller들은 공통된 bus를 통해 연결됨

Bootstrap 프로그램이란?

  • 부팅용 프로그램 (ROM에 저장되어있음)
    • 컴퓨터가 power on되자 마자 메모리에 운영체제 프로그램을 로딩하는 역할 수행
    • 그 다음에 OS가 나머지 응용 프로그램들 관리하는 것

Interrupt란?

  • CPU와 I/O device의 소통 방식(?)
  • CPU에서 Instruction을 fetch하고 execute하는 것을 반복하는데, IO가 발생했을 때 (키보드 입력 등) 이를 CPU에 알리는 역할을 함
    • 하드웨어가 언제든지 interrupt를 trigger시킬 수 있음
    • System bus를 통해 CPU에 signal을 보냄
      - 이후에 CPU가 이를 처리하게 되는 것

Von Neumann Architecture란?

  • CPU가 메모리에서 instruction을 fetch하고 execute하는 과정(그런 사이클..)을 가능하게 하는 구조
    • cf) ISA (Instruction Set Architecture)
    • IR(Instruction Register): Instruction을 저장하는 레지스터

Storage System

  • 여러 hierarchy로 구성됨
    • 용량, access time(속도),
  • Access time
    • register < cache < RAM
  • Capacity와 Access time 간 trade off 존재 (비용,,)

I/O Structure

아래 그림에서 thread of execution이란, 실행흐름으로 이해하면 됨

  • Cache memory와 main memory, CPU, device간의 상호작용에 주목
  • 여기서 DMA란, Direct Memory Access의 약자로, device가 바로 메모리에 접근하는 것을 말함
    • 특정한 HW 시스템(Hard-disk, GPU 등)이 CPU와 독립적으로 주 시스템 메모리(RAM)에 Access 할 수 있도록 하는 컴퓨티 시스템의 기능


사실상 지금 커널은 안정화된 상태여서 Device와의 상호작용을 담당하는 게 요즘의 운영체제의 역할

Computer System Components

CPU

  • instruction을 수행하는 하드웨어

Processor

  • 하나 혹은 그 이상의 CPU를 갖는 물리적 칩

Core

  • CPU 의 back computation unit

SMP (Symmetric multiprocessing)

  • 현재의 가장 흔한 multiprocessor system (CPU마다 하는 일이 같음)
  • 여러 CPU가 하나의 메모리에 접근해 task수행

Cf. Asymmetric multiprocessing

  • 각 프로세서는 특정 태스크를 위해 배정됨 -> 예전 시스템에 해당. 요즘은 다 SMP

Multi-core design

  • CPU 자체를 여러 개 하기엔 비용이 많이 드니, CPU 하나 칩 안에 코어를 여러 개 두자
  • 같은 프로세서 칩 안에 여러 개의 코어를 두는 것
  • 그러한 프로세서 칩이 많이 붙어있으면 Multi Processor라고 함

Multi-Programming

  • 한번에 여러 프로그램을 실행하는 것
  • "동시에" 메모리에서 여러 프로세스를 올림
  • CPU의 사용 효율을 높임

Multi-Tasking. Multi-Processing

  • multi programming의 논리적 확장
    • CPU time 나눠 여러 프로세스가 사용
      • 하나의 CPU 실행속도가 매우 빠를 때 여러 job들을 switching하며 수행할 수 있음
      • time sharing. job switching
      • Concurrency
      • Parallelism
    • CPU Scheduling 필요
      • RAM에 여러 프로세스가 존재하는 데 CPU가 특정 프로세스를 끝냈을 때, 어떤 프로세스를 CPU에 스케쥴링해줄 것인가
      • 어떻게 스케쥴링했을 때 CPU 효율이 가장 좋아질 것인가

Operation mode (User mode, Kernel mode)

  • System Crash 방지, 즉 다른 프로그램에 방해되지 않도록 방어하는 역할도 운영체제가 해야 함
  • 그림에서 볼 수 있다시피, User mode(User Process)에서는 System call을 OS에 호출하고, 그 System call을 Kernel모드에서 처리 후 그 결과를 User process에 반환해줌
    • 즉, 커널 모드에서만 할 수 있는 게 있다는 것
    • User process는 직접적으로 하드웨어 제어를 하지 못함

Virtualization

  • single computer가 있을 때, 즉 하드웨어의 제한이 있음에도 불구하고 여러 개의 OS를 돌릴 수 있게 하는 것
    • VMM은 Virtual Machine Monitor
    • VMM 종류
      - VMware, XEN, WSL ...

Variety of Computing Environments

  • Traditional Computing

  • Mobile Computing

  • Client-Server Computing

  • Peer-to-Peer Computing

    • 파일 공유 등에 쓰임
    • Block Chain 기술이 P2P Computing의 산물이라 볼 수 있음
  • Cloud Computing. Edge computing

    • 실제 컴퓨팅 자원들은 클라우드(서버)에 존재
    • AWS, Azure, GCP 등..
    • cf. SAAS (Software as a service)
  • Real-Time Embedding Systems (RTOS)

요즘 운영체제의 이슈는 위 Environment들을 어떻게 잘 반영할 것인가가 핵심

운영체제의 역할

즉, 운영체제의 역할은 프로그램의 실행 환경을 제공하는 것

  • User interface
  • Program execution
  • I/O operation
  • File-system manipulation
  • Communications
  • Error detection
  • Resource allocation
  • Logging
  • Protection and security등..

process, thread, multiprocessing, synchronization, deadlock, CPU scheduling, virtual memory 등등에 대해 배우게 될 것

View of Operating System services

OS에 User가 interface하기 위한 방법

CLI

  • command line interface / command interpreter
    • shell로 잘 알려짐
      • sh, bash, csh, tcsh, zsh ...

GUI

  • graphical user interface
    • Windows, Aqua for MacOS, KDE/GNOME for Linux ...

Touch-Screen Interface

  • Android UI, iPhone UI ...

Application이 하드웨어에 interface하기 위한 방법

System Call

  • OS에 의해 제공됨 (Read, Write 등..)

API (Application Programming Interface)

  • 운영체제와 응용프로그램 사이의 통신에 사용되는 언어나 메시지 형식
    • 즉, OS에 의한 API가 System Call이라 이해하면 됨
  • 요즘은 의미 확장됨. 라이브러리 등..

참고) printf 함수의 처리 방식

Windows와 UNIX system call 예시

profile
v ^_^ v

0개의 댓글