운영체제 강의 - 운영체제 개요

요즘 출근 전 운영체제 강의를 듣고 있다. 컴퓨터공학을 부전공하며 들은 과목이지만, CS 지식은 꾸준히 복습해야 함을 느꼈기 때문이다.

강의는 kocw에서 반효경 교수님, 2014년-1학기 운영체제 강의를 선택했다.
그리운 🌸우리 학교🌸이기도 하고, 명강의로 워낙 유명한 강의다.
마침 작년에 교재가 개편되어 출간되어 구매했다!
오늘은 그동안 들은 내용을 간략하게 정리했다. 말 그대로 TIL을 위한 정리라 부족한 부분도 많다…!

운영체제란?

운영체제란?

컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층.

운영체제의 목적

  • 컴퓨터 시스템의 자원을 효율적이고 형평성 있게 관리
    • HW: 프로세서, 기억장치, 입출력 장치 등
    • SW: 프로세스, 파일, 메시지 등
  • 사용자가 컴퓨터를 편리하게 사용할 수 있도록 지원

운영체제 분류

  • 동시 작업 가능 여부: 단일 작업 / 다중 작업
  • 지원해주는 사용자 수: 단일 사용자 / 다중 사용자(여러 사용자가 동시에 접속할 수 있는지)
  • 처리 방식
    • 일괄 처리(batch processing)
    • 시분할(time sharing): 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 실시간(real time): 정해진 시간 안에 어떤 일이 반드시 종료됨을 보장. 경성 실시간 시스템과 연성 실시간 시스템.

💡 시분할은 정해진 시간 안에 종료됨을 보장하지 않음. 실시간은 보장함. 실시간은 정확한 시간이 중요요한 특수한 상황에서만 사용. 하지만 점점 스마트폰은 실시간을 보장하는 필요성(네비게이션, 블랙박스 등)이 높아지고 있음.

운영체제의 예

  • 유닉스
    • 대형 컴퓨터(서버)를 위해 만들어진
    • 높은 이식성. 하나의 컴퓨터에서 돌아가는 운영체제를 전혀 다른 기계에 이식할 수 있음.
  • 마이크로 소프트
    • 개인 컴퓨터를 위해 만들어진

운영체제의 구조

각 자원을 관리

  • CPU: 어떤 프로그램에게 CPU를 줄까? CPU 스케쥴링. 일상 생활처럼 먼저 온 프로그램을 먼저 처리하면 작업들이 CPU를 안 놓게 되고, 성능 좋은 CPU도 못 쓰게 되니 시간을 잘 분배
  • memory: 한정된 메모리를 어떻게 쪼개 쓸까? 최근에 또 사용할 가능성이 많은 데이터는 뭘까? 오랫동안 안 쓴 데이터는 언제 내쫓을까?
  • disk: 디스크에 파일을 어떻게 보관할까? 마치 엘리베이터. 엘리베이터는 지금 몇 층에 있는데, 눌려 있는 층이 중구난방인 경우 어디를 먼저 가서 한꺼번에 처리하는 게 효율적일까?
  • io device: 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받지? io 디바이스는 대부분 느린데 CPU랑 어떻게 소통하지?
  • 프로세스 관리
  • 그외: 보호 시스템, 네트워킹, 명령어 해석기 …

System Structure & Program Execution

컴퓨터 내부 구조

Computer

  • CPU
  • Memory
    • CPU의 작업 공간
    • CPU에서 일(기계어를 실행)을 하려면, 매순간(매 clock cycle) 마다 메모리에서 기계어(instruction)를 하나씩 읽어서 실행
    • OS도 메모리 위에 올라가 있는 프로그램 중 하나. timer를 기반으로 다른 프로그램에게 CPU를 넘겨주는 역할도 함

I/O Device

  • Disk: input / output 두 가지 역할 동시에
  • Input device: 키보드, 마우스, …
  • Output device: 프린터, …
  • 공통: device controller
    • Device 마다 각 디바이스를 관리하는 작은 CPU, Device controller가 붙어 있음
    • Device controller도 자기만의 작업 공간이 필요, 그것이 Local buffer
    • CPU는 일을 수행하다가 Disk에 데이터를 요청해야 하면 직접 요청하는 게 아니라 Device controller 통해서 요청

Mode bit

지금 CPU가 사용자 프로그램(사용자 모드, 1)을 수행 중인지, OS(모니터 모드, 0)를 사용 중인지 구분하는 bit.
Mode bit이 0일 때는 모든 instruction, 즉 io device 접근하는 instruction을 포함한 모든 set에 접근할 수 있고. 1은 제한된 instruction만 접근 가능. → 보호 장치를 위해!

Timer

특정 프로그램이 CPU를 독점하는 걸 방지하기 위해서. 시간이 다 되면 CPU에게 인터럽트.

참고자료

본문 속 링크 참조