운영체제 개요
포스트
취소

운영체제 개요

반효경 교수님의 KOCW 강의 + 공룡책을 참고하여 포스팅 해보았습니다.
90% 이상이 강의 내용인데 운영체제 강의로 너무 좋네요.
하단 링크를 통해 강의 들으실 수 있습니다.
KOCW 공개 강의: 반효경, 운영체제와 정보기술의 원리
이 테마 줄 간 간격이 좀 맘에 안드는데..뭐 일단 개인 기록 용도로 정리 시작합니다.



운영체제(Operationg System) 란

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

  • 좁은 의미의 운영체제(커널)
    메모리에 상주하는 부분으로 운영체제의 핵심 부분

  • 넓은 의미의 운영체제
    커널 뿐만 아니라 각종 주변 시스템 유틸리티를 포함한 개념


운영체제의 분류

  • 동시 작업 가능 여부
    단일 작업(single tasking) : 한번에 하나의 작업만 처리 ex. MS-DOS 프롬프트
    다중 작업(multi tasking) : 동시에 두 개 이상의 작업 처리

  • 사용자의 수
    단일 사용자(single user) : MS-DOS, MS Windows
    다중 사용자(multi user) : UNIX, NT server // 한 대의 컴퓨터의 여러 사용자가 터미널 형태로 접속

  • 처리 방식

    • 일괄 처리(batch processing)
      • 작업 요청의 일정량을 모아서 한꺼번에 처리
      • 작업이 완전 종료될 때까지 기다려야함
    • 시분할(time sharing)
      • 현재 사용되는 범용적인 방식. interactive 하다.
      • 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    • 실시간(realtime os)
      • 주어진 작업의 데드라인이 보장되어야 하는 시스템
      • Hard realtime system(ex. 원자로/공장 제어, 미사일 제어), Soft realtime system(ex. 동영상 스트리밍)


Note

  • Multitasking, Multiprogramming, Time sharing, Multiprocess
    위 단어들은 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻합니다.
    Multiprogramming은 여러 프로그램이 메모리에 올라가 있음을 강조한 것
    Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조한 것

  • Multiprocessor
    하나의 컴퓨터에 CPU(processor)가 여러 개 붙어 있음을 의미



운영체제의 목적

  • 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
    • 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
      비슷한 개념으로 한 대의 서버에 여러 사용자가 동시 접속해서 사용하지만 혼자 쓰는 것 같은 착각을 준다.
    • 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
  • 컴퓨터 시스템의 자원을 효율적을 관리
    • CPU, 메모리, I/O 장치 등의 효율적 관리
      • 효율성 : 주어진 자원으로 최대한 성능을 내도록
      • 형평성 : 특정 사용자나 프로그램의 지나친 불이익이 발생하지 않도록 실행 중인 프로그램들에 메모리 공간을 적절히 분배
    • 사용자 및 운영체제 자신의 보호

    [Note]

    1. 실행 중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당.
      → CPU 1GHz: 초 당 CPU의 클락 빈도가 10억(2^30)개씩 처리한다.
      워낙 빠르기 때문에 현재 쓰는 프로그램이 혼자 CPU를 쓴다는 착각을 받는다.

    2. 메모리는 CPU의 작업 공간. CPU가 실행되려면 메모리에 올려놔야하는데 어떤 프로그램한테 메모리 용량을 얼마나 할당해야 느리지 않게 CPU를 실행할 수 있는가를 고민한다.



컴퓨터 시스템의 구조

  • 컴퓨터 내부
    CPU, 메모리

  • 입출력 디바이스
    디스크(input/output), 마우스/키보드(input), 모니터(output), 프린터(output)

    Note

    1. 부팅이 된다 = 운영체제가 메모리에 올라가서 컴퓨터가 꺼지기 전까지 실행이 된다.

    2. 커널 : 메모리에 상주하는 운영체제의 핵심적인 부분.

    3. 매 클럭마다 CPU가 메모리의 부분(운영체제, 프로그램)에서 기계어를 읽어서 연산을 하여 실행합니다

    4. 디스크의 특정 파일을 읽어서 실행되야 하는 프로그램이면 CPU가 I/O컨트롤러에게 요청 →
      요청된 파일을 읽어서 I/O컨트롤러의 작은 메모리 공간에 올려놓음 → CPU가 메모리에 올라온걸 가져다 연산



운영체제의 기능

  • CPU 스케줄링 : 어떤 프로그램에게 얼마나 CPU 사용권을 줄 것이냐.
    • 운영체제가 CPU를 가지고 있는 상태에서 운영체제의 ‘CPU를 프로그램A에게 넘긴다’라는
      기계어가 실행되면 프로그램A에게 CPU가 넘어갑니다.
  • 메모리 관리 : 한정된 메모리를 어떻게 쪼개어 쓸 것인가

  • 디스크 스케줄링 : 디스크에 들어온 요청을 어떤 순서로 처리할 것인가
    • I/O 컨트롤러인 디스크도 여러 프로그램에서 요청이 올 수 있습니다.
      자원의 효율성을 추구하므로 우선순위에 따라 처리합니다.
  • 인터럽트, 캐싱 : 빠른 CPU와 느린 I/O 장치간 속도 차이를 어떻게 극복할까
    • 캐싱 : 똑같은 데이터를 또 읽어달라고 하면 디스크까지 갈 필요없이 메모리에 잠시 저장해 놨던 것을 읽음.
    • 인터럽트 : 느린 장치(ex. 디스크)들이 CPU가 시킨 일이 끝났을 때 인터럽트를 걸어서 처리 사실을 알려줌.

Note
프로그램A가 디스크의 파일 리딩이 필요하다 → CPU가 디스크에게 시킴 → 디스크 파일 리딩 완료 → 인터럽트
→ CPU가 운영체제에게 자동적으로 넘어옴 → 프로그램A의 우선 순위에 따라 실행하던지 함

cf) CPU가 기계어 실행을 하고나면 인터럽트를 체크합니다.



프로세스의 상태

  • CPU큐
    • 프로그램이 큐에 줄 서 있고 CPU 스케쥴링에 따라 CPU가 프로그램을 실행한다.
  • 디스크 입출력 큐
    • 디스크 입출력이 필요하면 CPU 큐에 있는 프로그램을 디스크 입출력 큐에 넣어 우선순위에 따라 처리
      디스크 입출력이 끝났으면 디스크 입출력 큐에 있는 프로그램을 빼서 CPU 큐에 넣어줍니다.
  • 키보드 입력 큐
    • 사람이 키보드를 두드리면 인터럽트를 통해 CPU에게 키보드 입력이 들어왔다는 것을 알려줍니다.
      인터럽트가 들어왔으므로 CPU를 갖게된 운영체제는 키보드 입력으로 들어온 데이터를 메모리로 카피



CPU 스케줄링 (FCFS: First-Come-First-Served)

CPU큐에 있는 프로그램들 중 어떤 프로그램에게 CPU 사용권을 줄 것인가를 운영체제가 결정
FCFS는 먼저오는 프로그램을 제일 먼저 스케줄

ProcessCPU 사용 시간
P124
P23
P33
  • 프로세스의 도착 순서 : P1 → P2 → P3
    • 기다린 시간(Waiting time) : P1 = 0; P2 = 24; P3 = 27
    • 평균 기다린 시간 : (0 + 24 + 27) / 3 = 17
      P1이 CPU를 오랫동안 점유하는 바람에 효율적이지 못함
  • 프로세스의 도착 순서 : P2 → P3 → P1
    • 기다린 시간 : P1 = 6, P2 = 0, P3 = 3
    • 평균 기다린 시간 : (6 + 0 + 3 ) / 3 = 3


CPU 스케줄링 (SJF: Shortest-Job-First)

CPU 사용 시간이 가장 짧은 프로세스를 가장 먼저 스케줄
SJF는 평균 대기 시간이 가장 적습니다.(minimum average waiting time을 보장)

ProcessCPU 사용 시간
P124
P24
P32
  • 프로세스의 도착 순서 : P1 → P2 → P3
  • Starvation(기아 현상) 발생 가능 : CPU를 길게 쓰는 프로세스가 무한정 기다릴 수 있습니다.


CPU 스케줄링 (Round Robin)

  • 현대의 컴퓨터에서 쓰는 CPU 스케줄링
  • 각 프로세스는 동일한 CPU 할당 시간을 가집니다
  • 할당된 시간이 끝나면 하드웨어적 지원을 통해 인터럽트가 발생하여 프로세스는 CPU를 빼앗기고
    CPU 큐의 제일 뒤에 줄을 섭니다
  • 대기 시간이 프로세스의 CPU 사용시간에 비례합니다
ProcessCPU 사용 시간
P153
P217
P368
P424

ex. 20초씩 할당 시간을 가진다고 가정했을 때 (도식화 해보세요)

P1 → P2 → P3 → P4 → P1 → P3 → P4 → P1 → P3 → P3 순서로 처리가 됩니다.



메모리 관리

KakaoTalk_Photo_2021-12-14-17-05-18.jpeg

디스크(파일 시스템)에 있는 실행 파일이 실행되면 프로세스가 바로 물리적 메모리에 올라가는 것이 아니라 가상 메모리에 올라갑니다.

가상 메모리의 프로세스가 사용할 부분만 물리적인 메모리에 올라가게 됩니다. 메모리 낭비X

물리적 메모리가 다 찬 경우, 필요한 부분을 메모리에 올려놓기 위해 메모리 내 프로세스(페이지)가 쫓겨나게 되는데

이는 메모리의 연장 공간인 디스크(스왑영역)으로 가게 됩니다.

(참고) 컴퓨터가 꺼지면 스왑영역, 메모리에 있는 내용은 전부 날라가게 됩니다.


메모리 관리 : LRU vs LFU

메모리가 다 찬 경우, 어떤 페이지를 메모리에서 삭제할 것인가.

ex. CPU가 요청한 페이지 순서 : 1,1,1,1, 2,2, 3,3, 2, 4,5, …

Q. 메모리의 크기가 4인 경우, 5번 페이지를 올리려면 어떤 페이지를 삭제해야할까?

  • LRU(가장 오래 전에 참조한 페이지를 삭제) : 페이지 1
  • LFU(참조 횟수가 가장 적은 페이지를 삭제) : 페이지 4



디스크 스케줄링

디스크 큐(→ 2, 99, 3, 100, 1) → 디스크 헤드 이동(트랙 1번~100번)

헤드의 이동(Seek Time)을 최소한으로 하는 것이 효율적이다.

https://user-images.githubusercontent.com/37871541/78574512-0d656400-7865-11ea-9b48-ccb8e23b1d65.png

  • 디스크 접근 시간의 구성 요소
    • 탐색 시간(Seek time) : 디스크 헤드가 트랙으로 움직이는 시간
    • 회전 지연(Rotational latency) : 헤드가 원하는 섹터에 도달하기까지 걸리는 시간
    • 전송시간(Transfer time) : 실제 데이터 전송 시간


디스크 스케줄링

  • FCFS(First-Come-First-Served)
    큐에 먼저 들어온 순서대로 처리한다. 헤드의 이동이 길어지기 때문에 비효율적이다.
  • SSTF(Shortest Seek Time First)
    Seek Time이 짧은 순서대로 처리한다. 헤드에서 먼 순서의 starvation 문제가 있다.

    ex. head starts at 53.
    queue = 98, 183, 37, 122, 14, 124, 65, 67

    Solution > 헤드에서 가장 가까운 65번부터 시작하여 67, 37, 14, 98…의 순서로 처리한다.

  • SCAN
    • 현재 디스크 스케줄링의 근간이 되는 방법.
    • 헤드가 디스크의 한쪽 끝에서 다른 쪽 끝으로 이동하며 가는 길목에 있는 모든 요청을 처리한다.
      다른 쪽 끝에 도달하면 역방향으로 이동하며 오는 길목에 있는 요청을 처리하며 다시 반대쪽 끝으로 이동한다. 지그재그



저장장치 계층 구조와 캐싱(caching)

저장장치 계층 구조
CPU Registers
Cache Memory
Main Memory
Magnetic Disk
Optical Disk
Magnetic Tape
  • 빠른 CPU와 느린 I/O 장치 간의 속도 차를 완충하려고 계층 구성을 합니다.
  • 위로 올라갈 수록 빠르고 비쌉니다. 용량 또한 적습니다.
  • 위의 세개는 Primary이고 CPU가 실행이 가능합니다. 또한 전원을 끄면 날아가는 휘발성 입니다.
  • 아래 세개의 Secondary들은 CPU가 직접 접근을 못하고 접근을 하려면 Primary에 올려놔야 접근이 가능합니다. 또한 비휘발성 입니다.

cf) 자주 사용되는 것일 수록 상단에 저장되면 아래까지 내려오지 않아도 됩니다.


플래시 메모리

  • 반도체 장치. 대부분 NAND형(스토리지)
  • USB, 디지털 카메라의 SD카드, 모바일 장치 뿐만 아니라 대용량 시스템에서 SSD로 하드디스크 대체 시도


운영체제의 종류

  • 공개 소프트웨어
    • Linux, Android(제일 밑단에 리눅스 커널이 들어있음)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
인기 태그
바로가기

-

컴퓨터 시스템의 구조

인기 태그