ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [OS] 운영체제(Operating System)의 개요 및 역할
    Computer Science/Operating System 2021. 1. 25. 22:48

    현존하는 모든 컴퓨터, MPU에는 운영체제가 존재한다.

    보편적으로 우리는 Mac OS, Window, Linux 등의 다양한 상용 운영체제를 알고 있고, 가지고 있다.

     

    컴퓨터 과학에서 운영체제에 대해서 정의하면, 

    운영 체제(Operating System): 컴퓨터의 하드웨어를 관리하고 응용 소프트웨어를 실행하기 위해 존재하는 시스템 소프트웨어. 

    좁은 의미에서는 보안, 추상화, 자원 관리의 역할을 맡고 있는 시스템 소프트웨어인 커널만을 가리키는 단어이지만, 넓은 의미에서는 커널을 포함한 주변 시스템 유틸리티를 전부 포함한다.

    위와 같이 컴퓨터 하드웨어와 응용 SW 사이에 위치해서 자원의 형평성 있는 분배를 통한 효율적 관리, 사용자에게 시스템을 편리하게 이용 가능한 환경을 제공하는 역할을 한다.

     

    이러한 운영체제는 여러 조건에 의해 분류된다. 가장 대표적인 조건 세 가지는 동시 작업 가능 여부, 사용자의 수, 처리 방식이다.

    첫 번째 조건은 운영체제가 여러 작업을 동시에 처리할 수 있느냐이지만, 현대 운영체제는 대부분 다중 작업을 지원하기에 큰 분류 의미는 없다.

    두 번째 조건은 운영체제에 접근 가능한 사용자를 단일/다중으로 분류한다.

    세 번째 조건은, 가장 많이 사용되는 조건으로 작업들의 처리 방식을 나타낸다.

    이 조건으로 인해 운영체제는 크게 세 가지로 분류된다.

    1️⃣ 일괄 처리(batch processing): 작업 요청을 모아서 한꺼번에 처리하는 방식. 하지만 작업 요청을 모으는 동안 CPU가 할 일이 없기 때문에 자원이 낭비된다.

    2️⃣ 시분할 방식(time sharing): 여러 작업을 일정 시간 단위로 분할해서 처리하는 방식. 모든 운영체제에서 가장 많이 사용하는 작업 방식이다. 작업의 우선순위와 처리 순서는 이후 CPU 스케줄링에서 후술한다.

    3️⃣ 실시간(Realtime): 항공 관제, 반도체 공정 같이 각 작업의 시간 제한을 엄수해야 하는 시스템에서 사용하는 처리 방식이다. 정해진 시간 내에 결과를 보장해야 한다.

     

    운영체제가 관리하는 작업은 크게 네 가지로 분류할 수 있다.

    1️⃣ 어떤 프로세스에게 CPU 제어권을 줄 지(CPU 스케줄링)

    2️⃣ 한정된 메모리를 어떻게 관리할 지(메모리 관리)

    3️⃣ 디스크에 파일을 어떻게 보관(파일 관리)

    4️⃣ 여러 다른 입출력 장치와 컴퓨터 간의 상호작용을 관리(입출력 관리)

     

    컴퓨터의 구조를 나타내는 그림이다. CPU는 메모리와만 작업을 하고, 메모리는 OS 및 user program의 데이터들을 저장하고 있다. user process간에는 인터럽트를 통해 cpu의 제어권을 넘겨받는다.

    각각의 용어에 대해 간략하게 설명하자면

     

    - mode bit: CPU의 접근 권한을 표시하는 register bit이다. 0은 커널 모드, 1은 사용자 모드가 실행중임을 나타낸다. 이 mode bit이 1일 때 CPU의 접근을 제한하기 위해 사용한다.

    - timer: 특정 프로세스가 CPU를 너무 오랫동안 점유하는 것을 막기 위한 타이머이다. 타이머를 이용하여 작업을 시간 단위로 측정하고, 정해진 bound가 지나면 OS에게 제어권이 넘어가도록 인터럽트를 발생시킨다. 위에서 언급한 시분할 시스템을 구현하기 위해 사용된다.

    - I/O Device Controller: 외부의 I/O 장치를 관리하기 위한 해당 기기 자체의 일종의 CPU이다. register, local buffer를 보유하고 있다.

    - DMA Controller: I/O Device의 특성상, 입출력이 비정기적으로 자주 발생할 수 있다. CPU가 인터럽트를 자주 당하게 되면 원래 하던 작업을 제대로 완수하지 못 하기 때문에, 이것을 방지하기 위한 보조 장치이다. CPU의 중재 없이 Device Controller가 Buffer storage의 내용을 메모리에 직접 전송하는 것을 돕는다.

     

    사용자 프로그램(User program)은 I/O Device와 직접 상호작용 할 수 없다. CPU와 비교했을 때, 권한 수준이나 메모리 접근 능력이 다르기 때문이다.

    따라서 CPU를 통해서 I/O Device에 접근해야 하는데, 이것을 위해 시스템콜(System Call)이라는 커널 인터페이스가 이용된다. 사용자 프로그램은 시스템콜을 호출해서 I/O 작업을 할 수 있다.

     

    인터럽트는 I/O 작업 등이 발생했을 때, 발생한 시점의 register 및 program counter를 저장한 뒤 CPU의 제어권을 ISR(인터럽트를 처리하는 커널 함수)에 넘기는 기능을 의미한다.

    I/O Device는 이처럼 입출력이 발생할 때 마다 인터럽트를 발생시킨다. 하지만 키보드 입력 및 마우스 이동 등의 입출력 조작은 굉장히 빈번히 일어나고, 그 발생 시기를 CPU가 알 수 없기 때문에 I/O 요청 후 제어권의 변경 유무에 따라 입출력 방식이 나뉜다.

    동기식 입출력(Synchronous I/O): I/O 요청 후 입출력 작업이 완료되어야 제어가 User Program으로 넘어간다. 이 때, I/O작업의 속도가 비교적 느리고 언제 끝날 지 모르기 때문에 그 때 까지 CPU가 낭비된다는 단점이 존재한다.

    비동기식 입출력(Asynchronous I/O): I/O가 시작된 후 제어권이 즉시 User에게 넘어가는 입출력 방식이다.

     

    시스템콜과 인터럽트는 CPU의 제어권이 특정 프로세스에서 다른 프로세스로 이동한다는 공통점이 있지만, CPU의 제어권을 변경시키는 주체가 SW인지 HW인지에 따라 나뉜다.

     

    컴퓨터 저장 장치의 계층 구조를 나타낸다.

    +프로그램 실행 루틴

    +커널 주소 공간

    +사용자 프로그램 함수

    +프로그램 실행 루틴

     

    운영체제의 정의 및 개요에 대해 알아보았다.

Designed by Tistory.