반응형
1. 운영체제의 정의
컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어
- 운영체제는 컴퓨터의 전원이 켜짐과 동시에 실행되며 동시에 메모리에 올라간다.
- 항상 필요한 부분만을 전원이 켜짐과 동시에 메모리에 올려놓고 그렇지 않은 부분은 필요할 때 메모리로 올려서 사용한다.
- 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 부르며 이를 좁은 의미의 운영체제라고도 부른다.
2. 운영체제의 기능
1. 컴퓨터 시트템 내의 자원(resource)을 효율적으로 관리하는 것 - 하드웨어를 위한 역할
2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공하는 것 - 사용자를 위한 역할
- 편리한 환경 제공이란 운영체제가 여러 사용자 및 프로그램들에게 각각 독자적으로 컴퓨터를 사용하는 것과 같은 '환상'을 제공하는 것을 말한다.
- 하드웨어를 직접 다루는 복잡한 부분은 운영체제가 하고, 각 사용자 및 프로그램은 자세한 내용을 알지 못해도 프로그램을 실행할 수 있도록 해주는 기능을 말한다.
- 운영체제의 핵심 기능은 컴퓨터 시스템 내의 자원을 효율적으로 관리하는 것이다.
- 자원에는 CPU, 메모리, 하드디스크 등 하드웨어 자원과 소프트웨어 자원을 뜻한다.
- 운영체제는 사용자 및 프로그램들 간에 자원이 형평성 있게 분배되도록 해야한다.
- 즉, 효율성(가장 큰 목표이지만)과 형평성을 모두 고려해야 한다.
- 또한, 사용자와 운영체제 자신에 대한 보안 및 보호 기능 역시 수행해야 한다.
3. 운영체제의 분류
동시 작접 지원 여부
1. 단일작업(single tasking)용 운영체제
- 한 번에 하나의 프로그램만 실행시킬 수 있는 운영체제
- ex) 도스 환경
2. 다중작업(multi tasking)용 운영체제
- 하나의 프로그램이 끝나기 전에 다른 프로그램을 실행시키는 것이 가능한 운영체제
- 대부분의 운영체제가 이에 해당
- 운영체제가 다중작업을 처리할 때에는 여러 프로그램이 CPU와 메모리를 공유하게 된다.
- CPU가 하나밖에 없어 매 순간 하나의 프로그램만 CPU에서 실행될 수 있더라도 빠른 처리 속도로 인해 여러 프로그램이 동시에 실행되는 것처럼 보인다.
- 이와 같이 CPU의 작업시간을 여러 프로그램들이 조금씩 나누어 쓰는 시스템을 시분할 시스템(time sharing system)이라고 부른다.
- 메모리의 경우는 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라가 있을 수 있다.
- 메모리 공간을 분할해 여러 프로그램들을 동시에 메모리에 올려놓고 처리하는 시스템을 다중 프로그래밍 시스템(multi-programming system)이라고 부른다.
- 사용자의 관점에서 각 프로그램에 대한 키보드 입력의 결과를 곧바로 화면에 보여주기 때문에 이러한 시스템을 대화형 시스템(interactive system)이라고도 부른다.
- 다중처리기 시스템(multi-processor system)은 하나의 컴퓨터 안에 CPU가 여러 개 설치된 경우를 뜻한다.
다중 사용자에 대한 동시 지원 여부
1. 단일 사용자용 운영체제
- 한 번에 한 명의 사용자만이 사용 가능한 운영체제
- DOS, MS 윈도우 등이 이에 해당
2. 다중 사용자용 운영체제
- 여러 사용자가 동시에 접속해 사용할 수 있게 하는 운영체제
- 이메일 서버나 웹서버 등 서버라고 불리는 컴퓨터가 이에 해당
작업을 처리하는 방식
1. 일괄처리(batch processing) 방식
- 요청된 작업을 일정량씩 모아서 한꺼번에 처리하는 방식
- 모든 작업이 완전히 종료된 후에 결과를 얻을 수 있다.
- 사용자 입장에서는 응답시간이 길다는 단점이 있다.
2. 시분할 방식
- 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식
- 현대의 범용 컴퓨터는 대부분 시분할 방식을 사용한다.
- 사용자들은 일괄처리 방식에 비해 짧은 응답시간을 갖게 된다.
- 사용자의 요청에 대한 결과를 곧바로 얻을 수 있는 시스템을 대화형 시스템이라고 하는데 이는 시분할 방식의 대표적인 특징이다.
3. 실시간(real time) 운영체제
- 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용된다.
- 일정 시간 안에 작업이 완료되지 못할 경우에는 동작 자체가 되지 않거나 큰 위험을 초래할 가능성이 있는 시스템에서 사용된다.
4. 운영체제의 자원 관리 기능
하드웨어 자원
- CPU는 통상적으로 컴퓨터 한 대에 하나가 장착되기 때문에 여러 프로세스들이 CPU를 효율적으로 나누어 사용할 수 있도록 관리 되어야 한다.
- 메모리 역시 시스템 내에 한정된 용량만 존재하기 때문에 서로 다른 다수의 프로세스들이 나누어 쓸 수 있도록 해야 한다.
- 입출력 장치 역시 운영체제의 관리가 필요하다.
- 전원이 나가도 기억해야 하는 부분은 보조기억장치에 파일 형태로 저장된다. 이때 이러한 파일들이 저장되는 방식 및 접근 권한 등에 대해서도 운영체제가 관리를 해주어야 한다.
CPU를 관리하는 방법
- 매 시점 어떠한 프로세스에 CPU를 할당해 작업을 처리할 것인지 결정하는 CPU 스케줄링이 필요하다.
- CPU 스케줄링의 목표는 CPU를 가장 효율적으로 사용하면서도, 특정 프로세스가 불이익을 당하지 않도록 하는 것이다.
- 대표적으로는 선입선출(FCFS), 라운드 로빈(Round Robin), 우선순위(priority) 기법 등이 있다.
- 선입선출 기법
- CPU를 사용하기 위해 도착한 프로세스들 중 먼저 온 것을 먼저 처리해주는 방식
- CPU를 먼저 얻은 프로세스가 원하는 작업을 완료할 때까지 다른 프로세스들이 CPU를 사용하지 못한다.
- 짧은 시간만 CPU를 사용하면 되는 프로세스들이 나중에 도착했을 경우 장시간 기다려야 하는 비효율적인 결과를 초래할 가능성이 있다.
- 이러한 단점을 보완하고자 고안된 기법이 라운드 로빈 기법이다.
- 라운드 로빈 기법
- CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한한다.
- 긴 작업을 요하는 프로세스가 CPU를 할당받더라도 정해진 시간이 지나면 CPU를 내어놓고 CPU 대기열의 제일 뒤에 가서 줄을 서야 한다.
- 그렇기 때문에 짧은 작업을 가진 프로세스들이 무작정 오래 기다려야 하는 상황을 막을 수 있다.
- 우선순위 스케줄링
- CPU 사용을 위해 대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당한다.
- 상대적으로 더 중요한 프로세스에게 높은 우선순위를 부여하여 CPU를 먼저 획득할 수 있도록 하는 것이 우선순위 스케줄링의 핵심이다.
- 지나치게 오래 기다리는 프로세스가 발생하지 않도록, 기다린 시간이 늘어날수록 우선순위를 점차 높여주는 방식도 활용된다.
메모리 관리
- 프로그램이 CPU에서 실행되려면 해당 부분이 메모리에 올라가 있어야 한다. 이때 한정된 메모리 공간에 여러 프로그램을 수용하려면 메모리에 대한 효율적인 관리 메커니즘이 필요하다.
- 메모리 관리를 위해 메모리의 어느 부분이 어떤 프로그램에 의해 사용되고 있는지를 파악하여 이를 유지하는데, 이러한 정보는 주소(address)를 통해 관리된다.
- 운영체제는 프로그램에 메모리가 필요할 때 할당하고, 더 이상 필요하지 않을 때 회수한다.
- 또한, 운영체제는 각 프로세스가 자신의 메모리 영역에만 접근할 수 있도록 관리해야 한다.(보안)
- 물리적 메모리를 관리하는 방식에는 고정분할 방식, 가변분할 방식, 가상메모리 방식 등이 있다.
- 고정분할(variable partition) 방식
- 물리적 메모리를 몇 개의 분할로 미리 나누어 관리한다.
- 각각의 분할에는 하나의 프로그램이 적재될 수 있다.
- 융통성이 없다는 단점이 있다. 메모리에 동시 적재되는 최대 프로그램의 수가 분할 개수로 한정되기 때문
- 분할의 크기보다 큰 프로그램은 적재가 불가능하다.
- 분할의 크기보다 작은 프로그램이 적재되는 경우 해당 분할 내에 남는 영역이 발생하는데 이를 내부조각(internal fragmentation)이라고 한다.
- 가변분할(variable partition) 방식
- 매 시점 프로그램의 크기에 맞게 메모리를 분할해서 사용하는 방식
- 분할의 크기 때문에 큰 프로그램의 실행이 제한되는 문제는 없으나, 물리적 메모리의 크기보다 더 큰 프로그램의 실행은 여전히 불가능하다.
- 프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역인 외부조각(external fragmentation)이 발생할 수 있다.
- 가상메모리(virtual memory) 기법
- 현대의 범용 컴퓨터에서 가장 널리 사용되는 메모리 관리 기법
- 물리적 메모리보다 더 큰 프로그램이 실행 되는 것을 지원한다.
- 모든 프로그램은 물리적 메모리와는 독립적으로 0번지부터 시작하는 자신만의 가상메모리 주소를 갖는다. 운영체제는 이 가상메모리의 주소를 물리적 메모리 주소로 매핑(mapping)하는 기술을 이용해 주소를 변환시킨 후 프로그램을 물리적 메모리에 올리게 된다.
- 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해두었다가 필요할 때 적재하는 방식을 취한다.
- 이때 사용되는 보조기억장치 영역을 스왑 영역(swap area)이라고 부른다.
- 프로그램을 구성하는 가상메모리 주소 공간은 페이지(page)라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영역에 일부분씩 저장된다.
- 이렇게 동일한 단위로 메모리를 나누는 기법을 페이징(paging) 기법이라고 한다.
주변장치 및 입출력 장치
- 인터럽트(interrupt)라는 메커니즘을 통해 관리가 이루어진다.
- 인터럽트란 CPU의 서비스가 필요한 경우에 서비스를 요청하기 위해 발생시키는 신호를 의미한다.
- CPU는 작업을 수행하다가 인터럽트가 발생하면 하던 일을 멈추고 인터럽트에 의한 요청 서비스를 수행한다.
- 인터럽트 처리를 완료한 후에는 원래 하던 일을 계속 수행한다.
- 이를 위해 운영체제는 인터럽트 처리 직전에 수행 중이던 작업의 상태를 저장해준다.
- 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있기 때문에 운영체제는 인터럽트의 종류마다 서로 다른 인터럽트 처리루틴을 가지고 있다.
- 인터럽트 처리루틴은 인터럽트가 발생했을 때 해야할 작업을 정의한 프로그램 코드로, 운영체제의 커널 내에 존재한다.
- 주변장치들은 각 장치마다 컨트롤러를 갖고 있다.
- 컨트롤러는 해당 장치에 대한 업무를 처리하고, 이를 메인 CPU에 인터럽트를 발생시켜 보고하는 역할을 한다.
Reference
반응형
'CS > OS' 카테고리의 다른 글
[OS] 스핀락, 뮤텍스, 세마포어 (0) | 2021.12.22 |
---|---|
[OS] 공유 자원 접근 문제 (0) | 2021.12.22 |
[OS] 05. 프로세스 관리 (0) | 2021.12.21 |
[OS] 04. 프로그램의 구조와 실행 (0) | 2021.12.20 |
[OS] 03. 컴퓨터 시스템의 동작 원리 (0) | 2021.12.14 |
댓글