(운영체제와 정보 기술의 원리)2장. 운영체제
운영체제 개요
운영체제의 정의
운영체제(operating system)란 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다.
- 좁은 의미의 운영체제 : 메모리에 상주하는 운영체제의 부분을 커널이라고 부르며 이를 좁은 의미의 운영체제라고 부른다
- 넓은 의미의 운영체제 : 커널뿐 아니라 시스템을 위한 유틸리티들을 광범위하게 포함하는 시스템
운영체제의 기능
환경을 제공하는 것 : 운영체제가 여러 사용자 및 프로그램들에게 사용하는 것과 같은 환상을 제공하는 것 ex) 사용자는 파일이 디스크에 어떻게 저장되는 지 몰라도 손쉽게 저장하거나 파일의 내용을 확인할 수 있다.
자원을 효율적으로 관리하는 것
이때 자원 이란 CPU, 메모리, 하드디스크 등 하드웨어 자원 뿐 아니라 소프트웨어 자원을 통칭
사용자와 운영체제 자신을 보호하는 것
운영체제의 분류
- 동시 작업을 지원하는지의 여부에 따라
단일작업용 운영체제 : 한번에 하나의 프로그램만 실행시킬 수 있는 운영체제, 주로 초장기 운영체제들이 해당된다.
다중작업용 운영체제 : 동시에 2개 이상의 프로그램을 처리할 수 있는 운영체제
- 시분할 시스템 : CPU의 작업시간을 여러 프로그램이 조금씩 나누어 쓰는 시스템
- 다중프로그래밍 시스템 : 메모리 공간을 분할해서 여러 프로그램을 동시에 메모리에 올려놓고 사용하는 시스템
대화형 시스템 : 각 프로그램에 대해서 키보드 입력의 결과를 곧바로 화면에 보여주는 시스템 cf. 다중처리기 시스템 : 하나의 컴퓨터 안에 CPU가 여러개 설치된 경우
- 다중 사용자에 대한 동시 지원여부에 따라
단일 사용자용 운영체제 : 한번에 한 사용자만이 사용하도록 허용하는 운영체제
다중 사용자용 운영체제 : 여러 사용자가 동시에 접속해서 사용할 수 있게 하는 운영체제 ex) 서버
- 작업을 처리하는 방식에 따라
일괄처리 방식 : 요청된 작업을 일정량씩 모아서 한번에 처리하는 방식 모든 작업이 완전히 종료된 후에 결과를 알 수 있기 때문에 응답시간이 길다 ex) 초창기 컴퓨터의 펀치 카드 처리 시스템
시분할 방식 : 여러 작업을 수행할 때 컴퓨터의 처리 능력을 일정한 시간 단위로 분할해 사용하는 방식 일괄 처리에 비해서 짧은 응답시간이기 때문에 사용자 입장에서 대화형 시스템으로 인식
실시간 운영체제 : 정해진 시간 안에 어떠한 일이 반드시 처리됨을 보장해야 하는 시스템 일정시간 안에 작업이 완료되지 못할 경우에는 동작 자체가 되지 않거나 큰 위험을 초래할 가능성이 있는 시스템에서 사용된다.
경성 실시간 시스템 : 주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 로켓, 원자로 제어 시스템 등
- 연성 실시간 시스템 : 멀티미디어 스트리밍 시스템과 같이 데이터가 정해진 시간 단위로 전달되어야 올바른 기능을 수행할 수 있는 시스템
운영체제의 예
- MS Windows
마이크로소프트에서 개발한 MS-DOS와 윈도우 3.1등을 한층 발전시킨 개인용 컴퓨터를 위한 운영체제로 일반 사용자에게 가장 보편적으로 사용되고 있다.
그래픽 인터페이스와 마우스의 기능을 제공해서 사용자에게 편리하지만 초창기에는 MS-DOS위에서 사용되었기 때문에 여러 한계가 있었기 때문에 -> 윈도우 95부터는 그 자체로 하나의 온전한 운영체제가 되도록 제작함
MS Windows의 다른 큰 특징으로는, 시스템에 새로운 하드웨어를 장착하면 운영체제가 자동으로 하드웨어를 감지하여 그에 맞게 설정된다는 점 -> 플러그 앤 플레이
- 유닉스
벨 연구소에서 프로그램 개발 환경을 위해 설계되어 이식성이 좋고 운영체제 커널의 크기가 작으며 소스 코드가 공개된 것 등의 이유로 학계에서 연구가 많이 이루어져 현재 가장 널리 사용되는 운영체제 중 하나로 자리를 잡았다.
소프트웨어의 이식성이란 해당 소프트웨어를 다른 기종의 기계로 옮기는 것이 얼마나 용이한가를 나타내는 지표로서, 유닉스는 이러한 이식성이 높은 최초의 운영체제
또한 당시 대부분의 운영체제가 어셈블리 언어로 작성되는 것이 일반적이었으나 유닉스는 대부분의 코드가 C 언어로 작성
유닉스의 소스 코드가 공개된 점은 대학이나 연구소에서 연구하는 것에 널리 보탬이 되었으며, 학문적인 입장에서는 현재까지 유닉스가 거의 표준 운영체제로 사용됨
운영체제의 자원 관리 기능
- 하드웨어 자원
CPU 관리: 하나의 CPU에서 여러 프로세스를 실행할 때, 매 시점 어떠한 프로세스에 CPU를 할당할 것인지 결정하는 일이 필요하다. 이러한 일을 CPU 스케줄링이라고 한다.
선입선출 기법 : 먼저 온 것을 먼저 처리해주는 방식 아무리 긴 작업이라도 먼저 들어온다면 먼저 처리해야해서 뒤에 짧은 작업들이 들어와도 기다려야해서 비효율적
라운드 로빈 기법 : CPU를 한 번 할당받아 사용할 수 있는 시간을 일정하게 고정된 시간으로 제한 긴 작업을 요하는 프로세스가 들어와도 일정 시간이 지나면 CPU를 내놓고 대기열로 가야하기 때문에 짧은 프로세스들이 무작정 기다리는 것을 막을 수 있음
우선순위 스케줄링 : 대기 중인 프로세스들에 우선순위를 부여하고 우선순위가 높은 프로세스에 CPU를 먼저 할당
메모리 관리: 메모리 관리를 위해 우녕체제는 메모리의 어떤 부분이 어떤 프로그램에 의해 사용되고 있는지를 파악하여 이를 유지하게 되는데, 이러한 정보는 주소를 통해 관리된다.
고정분할 방식 : 물리적 메모리를 몇 개의 분할로 미리 나누어 관리
- 하나의 분할에는 하나의 프로그램이 적재될 수 있으며 최대 프로그램의 개수는 분할의 개수로 정해져 있음 만약 분할의 크기보다 작은 프로그램이 적재되는 경우 남은 영역이 발생하는 데, 이것을 내부조각이라고 한다.
가변분할 방식 : 매 시점 프로그램의 크기에 맞는 메모리를 분할해서 사용 분할의 크기 때문에 큰 프로그램의 실행이 제한되지는 않지만 물리적 메모리의 크기보다 큰 프로그램은 실행 불가능 프로그램에 할당되지는 않았지만 그 크기가 작아 프로그램을 올리지 못하는 메모리 영역이 발생하는데 이를 외부조각이라고 함
가상메모리 기법 : 모든 프로그램은 자신만의 가상메모리 주소를 갖고 운영체제는 이 주소를 물리적 메모리 주소로 매핑하는 기술을 이용해 주소를 변환시킨 후 프로그램을 물리적 메모리에 올림 프로그램의 전체 크기가 항상 동시에 사용되는 것은 아니기 때문에 현재 사용되고 있는 부분만 메모리에 올리고, 나머지는 하드디스크와 같은 보조기억장치에 저장해 두었다가 필요할 때 적재하는 방식을 취함 → 이때 사용되는 보조기억장치의 영역을 스왑 영역 이라고 부름
- 가상메모리 주소 공간은 페이지라는 동일한 크기의 작은 단위로 나뉘어 물리적 메모리와 스왑 영여게 일부분씩 저장 → 이를 페이징 기법이라고 함
- 주변장치 및 입출력 장치 관리
주변장치 및 입출력 장치는 인터럽트라는 메커니즘을 통해 관리가 이루어진다. 주변장치들은 CPU의 서비스가 필요할 때 신호를 발생시켜 서비스를 요청하는 데 이를 인터럽트라고 한다.
- 인터럽트는 요청하는 장치와 발생 상황에 따라 다양한 종류가 있기 때문에 운영체제는 인터럽트의 종류마다 서로 다른 인터럽트 처리루틴을 가짐 주변 장치는 그 장치에서 일어나는 업무를 관리하는 CPU를 가지고 이를 컨트롤러라고 부름