[OS] Lecture 2. OS Overview - kibitzing/EnGrow GitHub Wiki

https://www.youtube.com/watch?v=nxl_cUd55Ag&ab_channel=HPCLab.KOREATECH


진구

2-1 커널의 정의? 핵심 부분, 메모리 상주, 빈번하게 사용됨, 시스템 관리

2-2 언제 OS를 도입해야 한다고 생각해야 할까? 운영체제 역사

  • 배치 시스템 (모아서 처리)

  • 시분할 시스템 (지금?)

    • 이때 까지만 해도 중앙 집권
  • Personal Computing

    • 나 혼자 쓸래
    • 프로세서 많아짐, 프로세서 관리 필요
  • Distributed Processing (network로 붙임, loosely coupled)

    • node, ML 모델 학습에서도 노드라는 말을 많이 쓰는데 여기서 왔구나.
  • Real time Systems

    • 이 안에 못하면 버림 ㄷ ㄷ..
    • hard real-time (hart stop?)

2-3 커널 <> 유틸리티 (= 운영체제 - 커널, e.g. UI?) <> 사용자 응용 프로그램 단일구조 <> 계층구조 마이크로 커널 (필수 기능만)

운영체제 = 관리

원래 2-1만 들으려했는데..ㅋㅋ 다 들으셔서 저도 다 들었어요. ㅎㅎㅎㅎ


세영

Lecture 2 - Operating Systems Overview

[1/3]

운영체제의 역할

  • User Interface
    • CUI, GUI, EUCI (End-User에게 특화된 UI를 제공하는 것, MP3 플레이어 등)
  • Resource Management
    • HW Resources (프로세서, 메모리, 입출력 장치 등)
    • SW Resources (파일, 응용프로그램, 시그널 등)
  • Process & Thread Management
  • System Management (Protection)
    • 사용자가 불법적으로 시스템을 사용하려고 시도하면 그것을 보호하는 역할

시스템의 구성

  • 하드웨어 ↔ OS (Kernel ↔ System Call Interface) ↔ Application 순으로 구성됨

  • Kernel

  • System Call Interface

    • 사용자가 커널에 직접 접근하여 마음대로 조작해버리면 많은 문제들이 생김
    • 그래서 이를 제어하기 위해 OS에게 요청을 하는 형식으로 이루어지는데, 이 요청을 System Call이라고 함 (보통 함수로 이루어짐)

[2/3]

운영체제의 구분

동시 사용자 수

  • Single User System: 단 한 명의 사용자만 시스템을 사용할 수 있음 (Windows, android 등)
  • Multi User System: 동시에 여러 사용자들이 사용 가능 (Unix, Linux, Windows Server 등)
    • 시스템 자원에 대한 소유권 관리, 멀티태스킹 기능 등이 필요

동시 실행 프로세스 수

  • Single Tasking System: 한 번에 하나의 프로세스만 실행 가능 (MS-DOS 등)
  • Multi Tasking System: 동시에 여러 프로세스 실행 가능 (Unix, Linux, Windows 등)
    • 프로세스 동시 실행, 동기화 관리 기능 등이 필요

작업 수행 방식

  • 순차 처리
    • 태초의 컴퓨터, 사용자가 천공 카드로 명령어 작성해서 꽂는 것
    • 다른 유형의 명령어를 실행할 때마다 기계 설정을 바꿔줘야 해서 너무 오래걸림
  • 일괄 처리, Batch System (시스템 지향적)
    • 중앙 관리소에 카드를 제출하고, 같은 유형의 카드가 쌓이면 일괄적(Batch)으로 처리
    • 장점: 많은 사용자가 자원 공유, 처리 효율 향상
    • 단점: 같은 유형의 작업들이 쌓이기를 기다려야 함, 많은 작업으로 인해 긴 응답시간
  • 시분할 시스템, Time-sharing System (사용자 지향적)
    • A (1s) → B (1s) → C(1s) → A(1s) …
    • 요즘 쓰는 시스템들은 이 방식을 채택
    • 여러 사용자가 동시에 자원을 사용하므로 OS가 파일 시스템 및 가상 메모리를 관리하기 시작함
    • 장점: 응답시간 단축, 생산성 향상
    • 단점: 통신 비용 증가, 보안 문제, 동시 사용자 수가 늘어나면 부하가 커져서 체감 속도 저하
  • Personal Computing
    • 개인이 시스템을 독점, CPU 활용률은 고려 대상이 아니게 됨 (CPU 100%를 꽉 채울 필요 없음)
    • OS가 단순하지만 다양한 기능을 지원
    • 장점: 빠른 응답시간
    • 단점: 성능이 낮음 (혼자 쓰니까 비싸서)
  • 병렬 처리 시스템, Parallel Processing System
    • 물리적으로 CPU를 여러 개 사용하여 진짜로 동시에 두 프로세스 이상을 지원
    • 시스템 버스를 통해 메모리 등의 자원을 공유 → 프로세서간 관계 및 역할 관리 필요
    • 성능 향상, 신뢰성(CPU 하나 고장나도 정상 작동) 향상
  • 분산 처리 시스템, Distributed Processing System (Cluster System, P2P 등)
    • 하나의 컴퓨터에 너무 많은 CPU를 꽂을 수는 없기 때문에 네트워크를 통해 여러 컴퓨터(Node)를 연결해서 사용하는 시스템
    • 각 노드들은 각각의 OS가 있고, 전체를 관리하는 분산운영체제를 통해 관리
    • 장점: 높은 성능, 고신뢰정, 확장성
    • 단점: 구축 및 관리 고난이도
  • 실시간 시스템, Real-time System
    • 제한 시간 내에 응답을 내는 것이 자원 활용보다 중요
    • Hard real-time task: 원자력 발전소 제어, 무기 제어 등 제어에 실패할 경우 치명적인 영향
    • Soft real-time task: 동영상 재생 등, 가끔 끊겨도 치명적이진 않음
    • Non real-time task

[3/3]

운영체제의 구조

  • 커널: OS의 핵심, 빈번하게 사용되는 기능이므로 메모리에 상주
  • 유틸리티: UI등의 서비스 프로그램, 가끔씩만 사용되므로 메모리 비상주

단일 구조

  • 하나의 거대한 커널에 모든 기능을 넣어 놓은 구조
  • 장점: 모듈 간 직접 통신을 하므로 효율적으로 관리 가능
  • 단점: 버그 발생, 유지 보수등이 어려움, 모듈의 문제(악성 코드 등)가 전체 시스템에 영향

계층 구조

  • 계층 별로 모듈을 따로 만들어놓고, 계층을 따라서 통신하는 구조
  • 장점: 모듈화되어 있으므로 검증 및 수정 용의, 설계 및 구현 단순
  • 단점: 여러 계층을 거쳐야 하므로 성능 저하

마이크로 커널 구조

  • 커널 영역에 필수 기능만 담고, 나머지는 사용자 영역에서 수행하는 구조

운영체제의 기능

운영체제는 다양한 자원들을 관리

프로세스 관리

  • 생성, 삭제, 상태 관리
  • 자원 할당, 교착상태 해결, 프로세스 간 통신 및 동기화
  • PCB(Process Control Block)를 통해 프로세스의 정보 관리

프로세서 관리

  • 프로세스 처리 순서 결정 (프로세스 스케줄링)
  • 프로세스가 어느 프로세서로 가야할 지 할당해 줌

메모리(주기억장치, RAM) 관리

  • 멀티 태스킹 관리
    • 프로세스에 대한 메모리 할당 및 회수
    • 메모리 여유 공간 관리, 프로세스의 비할당 메모리 영역 접근 보호

파일 관리

  • 파일 및 디렉토리 생성, 삭제
  • 파일 접근 및 조작 등

입출력(I/O) 관리

  • 프로세스는 입출력을 할 때 무조건 OS를 거쳐야 함

기타

  • 디스크, 네트워크, 보안, 시스템 콜 등 다양한 기능을 지원