1. introduction

해피데빙·2022년 6월 9일
0

운영체제

목록 보기
1/2

선수 과목 : c프로그래밍, 자료구조의 기본적인 사항은 알고 있어야 한다
교재: (너무 이론에 치중)

목차

운영체제 개요
컴퓨터 시스템의 구조
프로세스 관리
CPU 스케줄링
병행 제어
데드락
메모리 관리
가상 메모리
파일 시스템
입출력 시스템
디스크 관리

운영체제란?

  • 컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 sw와 hw를 연결하는 sw 계층
    -> 컴퓨터 세계를 통치하는 왕(자원 배분, 프로그램 관리, 하드웨어 관리 등)
    cf.컴퓨터뿐만 아니라 다른 기계에서도 사용한다
  • 운영체제란?
    좁은 의미(협의)의 운영체제 : 커널 (핵심 부분, 메모리에 상주하는 부분)
    넓은 의미(광의)의 운영체제 : 커널뿐 아니라 (메모리에 상주하지 않지만) 각종 주변 시스템 유틸리티를 포함한 개념

운영체제의 목적

  1. 컴퓨터 시스템의 자원을 효율적으로 관리한다 (중요)
    • 프로세서, 기억장치, 입출력 장치 등의 효율적 관리
      - 사용자 간의 형평성 있는 자원 분배
      - 주어진 자원으로 최대한의 성능을 내도록
    • 사용자 및 운영체제 자신의 보호
    • 프로세스, 파일, 메시지 등을 관리 (소프트웨어 자원)
  2. 컴퓨터 시스템을 편리하게 사용할 수 있게 한다
    • 하나의 컴퓨터를 동시에 실행하고 있어도 각각 따로 하나씩 사용하고 있는 것 같은 인상 제공( 여러 프로그램을 동시에 실행하는 것 )
      ex. CPU라는 자원을 짧은 시간동안 각 프로그램에 할당,
      ex. 실행중인 프로그램들을 메모리 공간에 적절히 분배

운영체제의 목표

컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공

  • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공 (여러 프로그램을 돌려도 하나만 돌아가는 것 같은)

  • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행

  • 컴퓨터 시스템의 자원을 효율적으로 관리(중요) : 자원 관리자

  • 프로세서, 기억장치, 입출력 장치 등의 효율적 과닐

    짧은 시간의 CPU를 번갈아 할당
    실행 중인 프로그램들에 메모리 공간을 적절히 분배
    ex. 100개의 프로그램을 실행했을 때 1/100씩 메모리를 주는 것이 맞나?
    -> 아니다. 자원을 효율적으로 나눠주기 위해서 프로그램마다 필요한 만큼의 양을 주어야 한다

운영체제의 분류

1) 동시작업 가능 여부

  • 단일 작업
    : 한번에 하나의 작업만 처리
    ex. MS-DOS 프롬프트 상에서는 한 명령(프로그램)의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
    -> 설계하기는 쉽지만 사용하기 어려움

  • 다중 작업
    : 동시에 두개 이상의 작업 처리
    ex. UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
    -> 현재 대부분이 다중 작업

    2)사용자의 수 : 한 컴퓨터를 여러명이 동시에 접속할 수 있는지 여부

  • 단일 사용자 : MS-DOS

  • 다중 사용자 : UNIX, NT server
    (계정을 여러개 만들어서 동시 접속 가능)
    cf. 보안, 자원 분배 형평성 고려 필요
    3)처리 방식

  • 일괄 처리 (batch processing)

    • 작업을 일정량 모아서 한꺼번에 처리하는 것 ex. React에서 state를 업데이트할 때 16ms를 기준으로 일괄처리
    • 작업이 완전 종료될 때까지 기다려야 한다
      ex. OMR같은 원리(모든 답을 다 쓴 다음에 채점)
  • 시분할 (time sharing)
    - 현대의 컴퓨터 방식
    - 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    -> 시간을 분배해서 돌아가면서 프로그램을 실행시키는 방식
    - 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    - interactive한 방식 : 키보드를 입력하면 바로 결과가 나오는 방식

  • 실시간(Realtime OS)
    - 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS (데드라인이 정해져 있는)
    ex. 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
    -> 파이프라인 시스템을 사용하는데 중간에 하나가 데드라인을 못 지키면 다 지연되니까
    - 실시간 시스템의 개념 확장
    - Hard realtime system : 데드라인을 못 지켰을 때 치명적인 ex. 미사일, 공장
    - Soft realtime system : 그 정도는 아닌

정리
현대 컴퓨터 : 다중작업/ 다중사용자/ 시분할 방식

용어 구분
컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻하는 용어들

-multitasking : 일반적인 용어.
하나의 프로그램이 끝나기 전에 다른 프로그램이 실행되는 것
(CPU에서는 하나만, 분배를 해서 빠르게 바뀌니까)

-multiprogramming : 메모리에 여러 프로그래밍이 동시에 올라가는 것
[메모리 측면을 강조]

  • time sharing : 시분할. CPU를 강조한 개념. 시간을 쪼개서 이 프로그램을 실행, 다른 프로그램을 실행
  • multiprocess : 프로세스는 실행중인 프로그램을 의미한다. 여러 프로그램이 동시에
  • multiprocessor : 컴퓨터에 CPU가 여러개 붙어 있음(다중 처리기)
    -> 운영체제에 가장 일반적인 것은 cpu가 한개인 컴퓨터 시스템.

운영체제의 예

유닉스 계열 운영체제

  • 대형 컴퓨터용
  • 유닉스를 만들기 위해 아예 프로그래밍 언어를 만들었다 : C언어
    -> 기계어와 상당히 가까운 언어 그러므로 기계를 직접 프로그래밍하기에 좋음
  • 높은 이식성 : 하나의 컴퓨터에서 돌아가는 유닉스를 다른 컴퓨터에 이식하기에 좋음
  • 최소한의 커널 구조 : 커널의 크기가 아주 작다. 최소한의 기능만 포함해서 메모리 최소화. 그러므로 확장성이 좋다
  • 복잡한 시스템에 맞게 확장 용이
  • 소스코드가 공개되어 있다 : 누구든 가져가서 공부하고 수정하기에 좋다
  • 다양한 버전 : Linux 등 ex. 안드로이드도 리눅스 기반

윈도우 계열 운영체제

1)DOS (Disk Operating System)

  • MS사에서 1981년 IBM-PC를 위해 개발

  • 개인 컴퓨터용(PC)

  • 단일 사용자용 운영체제, 메모리 관리 능력의 한계

  • 메모리를 640kb만큼만 제공 : 너무 빠른 발전 속도로 인해 너무 부족해짐

  • 단일 작업을 위해

  • 소스코드가 오픈되어 있지 않다

    2)MS Windows

  • MS사의 다중 작업용 GUI 기반 운영체제

  • Plug and Play, 네트워크 환경 강화

  • DOS용 응용 프로그램과 호환성 제고

  • 불안정성

  • 풍부한 지원 소프트웨어

    3)Handheld device를 위한 OS

  • PalmOS, PocketPC, TinyOS

운영체제의 구조

컴퓨터의 자원들

자원들을 관리하는 것이 운영체제의 기능

CPU: 사람의 두뇌 역할을 하는 것 (Central Processing Unit / 중앙처리장치)
컴퓨터의 중앙에서 모든 데이터를 처리하도록 각 부품들에게 명령을 내리는 장치
명령을 해석, 연산하고 결과 출력

ex. 먼저 온 것을 먼저 처리
: 만약 가장 먼저 온 것이 오래 걸리면 전체적으로 지연됨
그러므로 짧게 사용할 프로그램에게 CPU를 줬다가 다른 프로그램에 주는 등 다양한 방법으로 CPU를 준다
또는 CPU를 각각 짧은 시간동안 줬다 뺏었다하는 방식으로

메모리 : 한정된 메모리를 분배하는 방식.
메모리에 너무 많은 프로그램을 올려놓으면 프로그램 하나당 너무 적은 메모리를 가지고 있어서 CPU에서 사용을 하기에 부족함. 그러므로 다양한 방법으로 해결
메모리가 꽉 차면 CPU에서 머지않아 사용하지 않을 것들을 디스크로 쫓아낸다
과거를 통해 미래를 예측하는 등의 방법으로

디스크 : 파일을 어떻게 보관, 관리할지
디스크에서 스케줄링이 필요. 먼저 들어온 순서대로 처리를 할 수도 있고 효율을 위해 디스크의 헤드의 이동을 최소화하기 위해 사용하는 다양한 방법
ex. 엘리베이터 - 100층 , 2층, 99층 이 순서로 버튼을 눌렀다고 순서대로 한다면 비효율적. 그러므로 1층부터 100층까지 순서를 정하면 더 효율적으로 할 수 있다 .

I/O device : 각기 다른 입출력장치와 컴퓨터 간에 어떻게 정보를 주고 받게 할지
-방법 : interrupt (I/O가 CPU에게 요청을 하는 것)

프로세스 관리 : 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
그외 : 보호 시스템, 네트워킹, 명령어 해석기

운영체제의 수강 태도
본 과목은 OS 사용자 고나점이 아니라 개발자 관점에서
인간의 신체가 노의 통제를 받듯 컴퓨터 하드웨어는 운영체제의 통제를 받는다
본인을 운영체제라고 생각하고 자원을 어떠헥 효율적으로 분배할지를 생각하면 이해하기 좋다

profile
노션 : https://garrulous-gander-3f2.notion.site/c488d337791c4c4cb6d93cb9fcc26f17

0개의 댓글