운영체제 - Introduction to Operating Systems

송은석·2022년 6월 19일
1

KOCW 사이트를 이용하여 듣게 된 반효경 교수님의 운영체제 강의 내용을 간단히 정리하여 포스팅합니다.

*OT 포스팅과 중복되는 내용이 있습니다.

운영체제란?

  • 협의의 운영체제(커널)
    • 운영체제의 핵심 부분으로 메모리에 상주하는 부분
  • 광의의 운영체제
    - 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념(windows 설치 시 file copy도 되는 등 여러 유틸이 가능한 것과 유사)
    - 메모리에 상주하지 않는 별도의 프로그램들이지만 운영체제의 범주에 포함시킴.


    but 전공자 입장에서는 커널만을 이야기함.

운영체제의 목적

  • 컴퓨터 시스템의 자원을 효율적으로 관리(가장 중요한 역할)

    • 프로세서, 기억 장치, 입출력 장치 등의 효율적 관리(하드웨어 자원)

      • 사용자 간 형평성 있는 자원 분배. (형평성)→ 특정 사용자나 프로그램 불이익x
      • 주어진 자원으로 최대한의 성능을 내도록. (효율성)
    • 프로세스, 파일, 메시지 등을 관리(소프트웨어 자원)

    • 사용자 및 운영체제 자신의 보호

    • 사용자가 컴퓨터 시스템을 편리하게 사용하도록 함.
      - 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
      - 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
      *abstract machine - 사용자가 자신만 컴퓨터를 사용한다고 생각하는 추상적 개념


운영 체제의 분류

  • 동시 작업 가능 여부
    • 단일 작업(single tasking)
      • 한번에 하나의 작업만 처리 ex) MS-DOS 한 명령의 수행 마치기 전 다른 명령 수행X
    • 다중 작업(multi tasking)
      - 동시에 두 개 이상의 작업 처리 ex) UNIX, MS WINDOWS 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음.

    • 사용자의 수
      • 여러 사용자의 계정을 만들어 접근할 수 있는가
      • 단일 사용자(single user) - ex) MS-DOS, MS Windows
      • 다중 사용자(multi user) - ex) UNIX, NT server

    • 처리 방식
      • 일괄 처리(batch processing)
        • 작업 요청의 일정량 한꺼번에 처리. 작업이 완전 종료될 때까지 기다려야 함.
        • ex) 초기 punch card 처리 시스템. interactive 하지 않음.
      • 시 분할(time sharing)
        • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용.
        • 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐. ex) unix
        • 각 사용자는 interactive한 방식으로 컴을 사용 가능(input 있을 때 거의 즉시 output 발생하는 것처럼 느낌.)
        • 목적은 사람 느끼기에 빠르게 하면서 자원을 최대한 효율적으로 나누는 것. 그래서 정확한 시간을 지키는 시스템은 아님. 사람에 특화된 시스템. 범용 컴퓨터 장비.
      • 실시간(Realtime OS)
        • 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS ex) 미사일 제어, 원자로/ 공장 제어, 반도체 장비 등
        • 실시간 시스템의 개념 확장
          • Hard realtime system(경성 실시간 시스템)
          • Soft realtime system(연성 실시간 시스템) —ott, youtube 같은. 심각x 비교적 유연

*실시간성을 필요로 하는 어플리케이션 늘어나면서, 이런 실시간성을 지키기 위해 범용 운영체제가 어떻게 해야하는지에 대한 연구가 필요해졌다. 지금은 다중 작업, 다중 사용자, 시분할 방식으로 거의 운영이 되고 있다.

관련 용어

  • Multitasking - 여러 프로그램이 함께 돌아가는 것
  • Multiprogamming - 여러 프로그램이 메모리에 올라가는 있음을 강조.
  • Time sharing - cpu가 시간을 분할하여 나누어 쓴다는 의미를 강조.
  • Multiprocess - 여러 프로그램이 동시 실행. 같은 말.
  • Multiprocessor - 하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미. 위 내용을 다 지원함 물론. 병렬 프로그래밍이 가능한 고성능 컴퓨팅이라고 한다. 이 수업에서는 cpu 하나를 기준으로 설명하실 예정.

운영 체제의 예

  • 유닉스 - 대형 컴퓨터 위해 만듦
    • C언어 만들어서 코드의 대부분을 작성. (전에는 어셈블리로 만들었다고 함.) 고급 언어이나 기계와도 가까운, 하드웨어도 잘 다루는 C언어
    • 소스 코드 공개
    • 높은 이식성 → 다른 컴퓨터에 가도 잘 실행됨. C언어로 작성되었으므로.
    • 최소한의 커널 구조
    • 복잡한 시스템에 맞게 확장성 높음.
    • 프로그램 개발에 용이
    • 여러 버전 → SYSTEM V, FreeBSD, SunOS, Solaris, Linux(대형 보다는 여러 환경에서 활용 가능. 안드로이드도 커널은 리눅스 커널임.) 등
  • MS - 개인 컴퓨터 위주,
    • DOS → 처음에는 단일 사용자, 단일 작업 지원. 메모리 640KB 지원의 한계.
    • MS Windows
      - 다중 작업용 gui 기반 운영 체제

운영 체제의 구조

  • CPU, cpu 스케줄링 ⇒ 누구에게 cpu를 줄 것인가?

    • 굉장히 빠름. 순서대로 작업 실행x
    • 순서대로 한다면 굉장히 비효율적. 하나의 프로그램이 계속 cpu 사용 x.
    • cpu를 짧게 사용할 프로세스에 먼저 주는 게 낫다. 전체적으로 기다리는 시간이 적어짐.( 안주면 계속 여러 대의 프로그램이 대기하므로 전체적인 성능이 안 좋아짐. 대기하는 프로그램들이 적어져야 함.)
  • memory, 메모리 관리 ⇒ 한정된 메모리를 어떻게 쪼개어 쓰지? 메모리 분배 이슈

    • cpu에서 원활하게 실행되려면 필요한 메모리 용량이 있음. 그래서 그 만큼은 받아두어야.. 워킹셋 모델 관련됨. 일부 프로그램만 어느 정도 공간을 주고, 나머지는 안 둠. 경우에 따라서는 diskio를 해야 할 수도. 무조건 1/n이 아니라, 그 때 그 때 필요한 프로세스에 몰아줌.
    • 그러면 어떤 걸 쫓아내야 하는가? cpu에서 머지 않아 다시 사용할 가능성이 높은 것을 메모리에 두고, 그렇지 않은 것을 쫓아낸다. 기준은? 어떠한 데이터가 메모리에 올라온 이후로 메모리가 사용이 많이 되었으면 미래에도 많이 사용될 가능성이 높을 것으로 판단한다. 사용 횟수 적으면 쫓아낸다. 과거를 통해서 미래를 예측한다.
  • DISK, 파일 관리 ⇒ 디스크에 파일을 어떻게 보관하지?

    • 조각조각 나누어 관리? 연속적으로 관리?
    • 스케줄링이 필요하다. disk에 들어온 요청을 먼저 들어온 순서대로? no. 헤드가 움직이며 찾으므로 헤드와 가까우면 먼저 처리하는 식으로 해서 이동을 줄이는 방법으로 처리하게 된다.(HDD 기준) ex) 엘리베이터 시스템과 유사함.
  • I/O device ⇒ 각기 다른 입출력 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?

    • 기본적으로 interrupt에 의해 관리됨.
    • cpu에 보고해야 하는 일 있으면 cpu에 interrupt를 걸어 요청함.

참고

강의 | 운영체제(2014, 이화여대), 반효경
profile
Done is better than perfect🔥

0개의 댓글