운영체제 개요 - 반효경 교수님

김소희·2023년 7월 31일
1

전공지식을 채우기 위해 이화여대에서 무료로 제공하는 운영체제 강의를 수강하기로 했다.
본 강의에서는 운영체제의 개념, 역할, 운영체제를 구성하는 각 요소와 내부적인 동작원리, 알고리즘의 핵심적인 부분을 다룰 예정이다.
운영체제가 어떻게 하드웨어 자원을 관리하여 사용자들을 편리하게 해주는지를 생각하며 강의를 들었다.

강의목차

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

1. 운영체제 개요

운영체제(Operating System, OS)란
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층으로 모든 컴퓨터 시스템의 필수적인 부분이다.

  • 컴퓨터를 부팅하고 난 이후 메모리에 상주하는 운영체제 부분을 커널이라고 한다.

운영체제의 목적
만약 운영체제가 없다면 컴퓨터를 다루기 무척 어려울 것이다. 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행하므로 사용자는 컴퓨터 시스템을 편리하게 사용할 수 있다.
또한 운영체제는 컴퓨터 시스템의 자원(프로세서, 기억장치, 입출력 장치)을 효율적으로 관리하는 역할도 하는데 주어진 자원으로 최대한의 성능을 낼 수 있게끔 효율성만 생각하다가 소외나 차별받는 프로그램이 생기지 않게끔 형평성있게 고려해야 한다.

  • ex) 실행중인 프로그램들에게 짧은 시간씩 CPU를 번갈아 할당하지만(알고리즘에 따라) 사용자는 사용중인 1개의 프로그램만을 사용하고 있다는 환상을 제공한다.
  • ex) 실행중인 프로그램들에게 메모리 공간을 적절히 분배(알고리즘에 따라)

운영체제의 분류

동시 작업 가능 여부나 사용자의 수나 처리방식에 따라 분류할 수 있다

  • 단일 작업(single tasking)
    한 번에 하나의 작업만 수행
    ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음, 과거의 엘리베이터나 전화기에서 사용
  • 다중 작업(multi tasking)
    동시에 두 개 이상의 작업 처리
    ex) UNIX, MS Windows 등에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행할 수 있음, 현대의 스마트폰 운영체제
  • 단일 사용자(single user)
    ex) MS-DOS, MS Windows
  • 다중 사용자(multi user)
    ex) UNIX, NT server 보안관리나 사용자간의 형평성을 추가로 고려
  • 일괄 처리(batch processing)
    작업 요청의 일정량 모아서 한꺼번에 처리
    작업이 완전히 종료될 때까지 기다려야 함
    ex) 초기 Punch Card 처리 시스템
  • 시분할(time charing) 일반적인 범용 컴퓨터
    여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
    일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
    interactive한 방식(사용자는 입력에 따라 바로바로 응답한다고 느낌)
  • 실시간(Realtime OS) 특수 목적 시스템
    정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
    ex) 원자로/공장 제어, 미사일 제어, 반도체 장비, 로보트 제어 등에 사용

2. 컴퓨터시스템의 구조

  • CPU는 아주 빠른 일꾼으로 CPU안의 레지스터의 프로그램 카운터가 가리키고 있는 메모리의 Instruction의 지시를 읽어서 순차적으로 실행하는 작업을 한다.
    하나의 지시를 마치면 다음 지시를 수행하기 전에 interrupt가 들어온게 있는지 확인하고, 만약 있다면 작업하던 프로그램 카운터를 저장하고 중단한뒤 CPU제어권을 운영체제에게 넘긴다. 운영체제에 저장되어있는 interrupt 벡터에는 interrupt종류와 처리루틴주소가 저장되어있어서 이를 확인하여 해당 interrupt를 처리하는 커널 함수를 실행시켜 처리한다.

  • CPU안에 있는 registers는 메모리보다 더 빠른 저장공간으로 CPU가 요청을 처리하는데 필요한 데이터를 일시적으로 저장하는 기억장치이다.

  • CPU안에 있는 mode bit은 지금 CPU에서 작업중인 데이터가 운영체제가 사용하는 것인지 사용자 프로그램에서 사용하는 것인지 구분하고 사용자 프로그램의 잘못된 수행으로 다른 프로그램이나 운영체제에 피해가 가지 않도록 하기 위한 보호 장치 역할을 한다. mode bit가 0이면 운영체제가 사용중이므로 모든 작업을 실행 할 수 있지만 mode bit이 1이면(CPU가 사용자 프로그램을 실행하는 중이면) 제한된(한정된) Instruction만 실행할 수 있으며 작업을 주고 받을 때 마다 mode bit을 세팅한다.

  • 사용자 프로그램이 I/O divice작업이 필요한 경우 직접 사용할 수 없기 때문에 운영체제에게 요청을 해야한다. 그러면 프로그램 카운터가 메모리의 사용자 프로그램 주소에서 운영체제 주소영역으로 점프를 해야하는데 mode bit이 1일때는 점프를 못하기 때문에 시스템 콜을 통해 요청을 하게된다.

  • 시스템콜의 동작원리 : 사용자 프로그램이 의도적으로 interrupt line을 세팅하여 필요한 I/O divice작업을 수행한다. 이와같은 소프트웨어 interrupt는 Trap라고 부른다.

  • Trap은 2종류가 있는데 프로그램이 오류를 범한 경우인 Exception과 프로그램이 커널 함수를 호출하는 경우인 System Call이 있다.

  • Timer는 특정 프로그램이 CPU를 독점하는 것을 막는 역할로 만약 메모리에 무한루프 프로그램을 올리면 CPU는 다른 작업을 할 수 없지만 timer가 지정된 시간이 만료되면 CPU에게 다음 Instruction를 실행하거나 Interrupt line을 체크하게 만들어서 벗어나게끔 한다. 현재시간을 계산하기 위해서도 사용된다.

  • CPU에 붙어있는 Interrupt line 은 CPU는 메모리에서Instruction 작업만 하기 때문에 키보드 입력이나 화면출력과 같은 I/O divice 와의 작업을 명령을 한다.

  • 메모리는 CPU의 작업공간으로 CPU가 매 클럭 사이클마다 메모리의 기계어를 읽어서(Instruction) 작업한다. 메모리 컨트롤러를 통해 메인 메모리에는 CPU만 접근할 수 있도록 한다.

  • 하드디스크는 메모리에 있는 정보를 읽는 Input device의 역할도 하고 처리결과를 디스크의 파일에 저장하는 Output device 역할도 한다.

  • Divice controller는 각각의 I/O device를 전담하는 작은 CPU 역할을 하고 이들의 작업 공간이 local buffer이다. I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알린다.

  • 사용자 프로그램이 키보드 입력이나 디스크에서 정보를 읽어와야하는 등 I/O작업이 필요로하면 운영체제에게 작업권한이 있기 때문에 CPU에 Interrupt 요청하는 방식으로 보안적으로 설계되어 있다.

  • DMA Controller는 I/O divice가 여러개인만큼 너무 잦은 interrupt를 하여 CPU의 작업을 너무 많이 방해하지 않도록 중간중간 들어오는 I/O divice가 보낸 정보를 메모리에 복사해놓고 CPU에 한번만 interrupt를 하는 역할을 하여 CPU를 효율적으로 사용할 수 있도록 하는데 그 과정에서 CPU와 DMA Controller가 동시에 메모리에 접근하여 오류가 발생하지 않도록 Memory controller가 조율한다.

동기식 입출력과 비동기식 입출력

동기식 입출력 (syncronous I/O)

  • I/O요청 후 입출력 작업이 완료된 후에야 제어가 사용자 프로그램에 넘어감
    방법1 : I/O가 끝날 때 까지 CPU를 낭비시키고 매시점 하나의 I/O만 일어날 수 있음
    방법2 : I/O가 완료될 때까지 해당 프로그램에게서 CPU를 빼앗고 처리를 기다리는 동안 다른 프로그램에게 CPU를 줬다가 I/O가 완료되면 인터럭트를 걸어서 알리고 CPU를 다시 줌으로서 처리

비동기식 입출력 (asyncronous I/O)

  • I/O가 시작된 후 입출력 작업이 끝나기를 기다리지 않고 제어가 사용자 프로그램에 즉시 넘어감

  • 둘 다 I/O완료는 인터럽트로 알려줌


위로 갈수록 빠르고 용량이 적고 비싸다.
D램이나 캐시메모리나 레지스터는 휘발성 매체(연두색)로 컴퓨터 전원을 끄면 사라진다.

<참고자료>
교보문고 책 구입처
이화여대 반효경 교수님 강의

profile
백엔드 자바 개발자 소희의 노트

0개의 댓글