2021-08-09
컴퓨터 하드웨어안에 있는 CPU, CPU안에 있는 메모리, HDD, SSD등의 보조기억장치 등 여러가지가 존재하고, 프로그램은 실행이 가능한 완성된 코드들의 모음
으로 공부했다. 이런 프로그램을 실행한다 라는 의미는 CPU가 일을 한다는 의미이다.
즉, 보조기억장치에서 '실행에 필요한 데이터'가 메모리에 올라가고 CPU가 메모리 위에서 작업을 수행하는 과정이 프로그램을 실행한다
가 되는 것이다.
이런 프로그램을 실행할 때 우리는 CPU, 메모리, 보조기억장치와 함께 사용하는데 우리는 왜 이런 단어들이 익숙하지 않을까? 이런 단어나 과정을 몰라도 프로그램을 사용하는데 전혀 문제가 없기 때문이다. 바로 운영체제
가 이 모든과정을 대신해주기 때문이다.
이번시간에는 운영체제에 대해 알아보자.
운영체제의 정의를 먼저 살펴보자.
운영 체제(조작 체계) 또는 오퍼레이팅 시스템(Operating System, 약칭:OS)은 시스템 하드웨어를 관리할 뿐 아니라 응용 소프트웨어를 실행하기 위하여 하드웨어 추상화 플랫폼과 공통 시스템 서비스를 제공하는 시스템 소프트웨어이다.
-출처: 위키백과
간단히 말하면 하드웨어를 효율적으로 관리하고 사용자나 응용프로그램들에게 서비스를 제공해주는 소프트웨어 라고 이해하면 좋겠다. 컴퓨터 전체를 관리하고 제어하므로 먼저 설치해야하는 기본 소프트웨어다. 하드웨어 위에 설치되어 다른 응용프로그램들을 실행시킬 수 있다. 우분투, Mac OS, 윈도우 등이 흔히 들어본적이 있는 OS의 종류인데 해당 OS가 깔려있다면 컴퓨터 기종에 상관없이 사용할 수 있도록 캡슐화하는 역할을 한다.
조금 더 쉽게 운영체제를 이해해보자.
과거를 저멀리 어셈블리어를 사용할때쯤으로 가보자. 여러사람들이 다양한 프로그램을 짠다고 쳐보자.
A는 A프로그램
B는 B프로그램
C는 C프로그램
.
.
A,B,C 여러사람이 짠것을 컴퓨터에 넣어서 돌리려고 하니, 공통적인 기능이 포함되는 것을 발견한다. 예를 들면, 메모리에 올리는 것이나, 입출력장치에게 명령을 받고 결과를 내는 로직 같은 공통된 기능이 A,B,C가 만든 프로그램에 공통적으로 포함되는 것이다.
위와 같은 공통적인 기능을 수행하는 프로그램을 만들고, 그 프로그램을 가지고 여러프로그램을 짜면 겹치지 않고 효율적으로 프로그램을 만들 수 있을 것이다.
즉, CPU,I/O,메모리 같은 하드웨어적인 부분을 잘 몰라도 쉽게 프로그램을 만들 수 있도록 도와주는 것이 운영체제
인 것이다.
그렇다면, 커널은 무엇일까? 운영체제와 함께 자주 눈에 띄는 단어 중 하나이다. 커널의 정의를 먼저 알아보자.
커널(kernel)은 단어 자체의 의미로는 '핵'이며, 컴퓨터의 운영 체제의 핵심이 되는 컴퓨터 프로그램 중 하나다. 시스템의 모든 것을 완전히 통제하며 운영 체제의 다른 부분 및 응용 프로그램 수행에 필요한 여러 가지 서비스를 제공한다.
커널은 운영체제의 핵심인 것은 알겠는데, 어떤 것인지 정확히 와닿지 않는다. 조금 더 구체적으로 알아보자.
먼저, 컴퓨터의 전원을 키면 이와 동시에 OS가 수행이 된다. 소프트웨어가 컴퓨터 시스템에서 실행되기 위해서는 메모리 위에 그 프로그램이 올라가있어야한다. OS도 마찬가지로 소프트웨어이기 때문에 메모리 위에 올라가야하는데 OS의 규모가 너무 크기 때문에, 메모리공간을 효율적으로 사용할 수 없게 된다.
이를 해결하기 위해, 전원이 켜짐과 동시에 항상 필요한 부분만 메모리에 상주시키고, 필요한 부분은 그때그때 메모리에 올려주게 된다.
이 때, 메모리에 상주하는 OS부분이 Kernel
이며 운영체제의 핵심적인 부분이 여기에 포함된다.
필요한 부분을 그때그때 메모리에 올려주는 부분 즉, Kernel을 제외한 나머지는 Utility
로 분류된다.
그렇다면, 운영체제는 어떻게 구성되어있는지 살펴보자.
운영체제마다 구성은 각기 다르지만, 공통적으로 구성되어있는 것은 크게 두가지로 나눌 수 있다.
1. 제어프로그램(Control Program) :
컴퓨터 안의 정보들과 자원들을 제어, 상태감시, 실행과정을 지시,감시하는 프로그램을 말한다.2. 처리프로그램(Process Program) :
제어프로그램의 지시와 감독을 받아서 실제로 데이터처리를 실행하고 결과를 보여주는 처리프로그램을 말한다.
제어프로그램은 각종 처리프로그램 실행, 데이터제어, 데이터관리, 작업관리, 테스트관리기능을 담당한다.
감시프로그램 : 가장 중요함. 시스템 전체 동작상태를 감독,지원. 제어프로그램의 중추역할. (시스템의 모든동작상태를 관리하고 감독하는 제어프로그램:Supervisor)
작업관리프로그램(Job Management) : 작업이 수행되도록 준비하는 프로그램. 끝난 작업을 처리하고 다른작업으로 이행할 수 있도록 준비와 처리(시스템스케쥴링 및 자원할당)를 수행
데이터관리프로그램(Data Management) : 입출력데이터를 관리. 주기억장치와 보조기억장치 사이의 데이터전송, 입출력 데이터와 프로그램의 논리적연결, 파일조작 및 처리 등을 담당(데이터의 유지보수기능제공)
통신관리프로그램(Communication Management) : CPU와 연결된 각 주변장치 간 신호교환을 통제, 외부통신회선과 연결된 통신망의 통신을 제어.
제어프로그램의 감시하에 컴퓨터의 특정문제 해결을 위해서 필요한 여러기능을 처리할 수 있도록 해준다.
언어번역프로그램 : 원시프로그램을 컴퓨터가 알 수 있는 기계어로 번역 (종류 : 컴파일러, 어셈블러, 인터프리터 등)
서비스프로그램 : 사용빈도가 높은 프로그램을 미리 개발해놓는 프로그램 (종류 : 로더, 디버깅 프로그램, 라이브러리 등)
문제처리프로그램 : 컴퓨터 사용자가 필요한 업무에 맞도록 개발한 프로그램 (종류 : 급여관리, 인사관리, 회계관리 등)
위에서 OS는 하드웨어를 잘 몰라도 프로그램을 쉽게 만들 수 있도록 도와주는 소프트웨어이다.컴퓨터를 어떻게 사용하고 관리하느냐에 따라서 효율적으로 사용할 수 도, 비효율적으로 사용하게 될 수 도 있다. 그렇다면 하드웨어를 잘 관리하는 것이 OS의 주기능이라고 봐도 무방하겠다. 컴퓨터 시스템을 크게 5가지로 나누어 볼 수 있는데, OS는 시스템과 소프트웨어 사이의 작업을 관리해주는 역할을 하기 때문에 OS의 기능도 크게 5가지로 나누어서 볼 수 있겠다.
1. 자원관리 기능
컴퓨터 시스템을 구성하는 CPU,기억장치,프로그램,자료 같은 자원들을 관리.
2. 프로세스관리 기능
Process, Thread 스케줄링, Process의 생성,제거,시작,정지,재수행,동기화 및 통신관리. 주기억장치 관리를 위해서 주기억장치 관리자와 협력
3. 기억장치관리 기능
메모리상채 추적 및 기억, 메모리할당 및 회수, 가상기억장치 및 페이징 장치관리, 장치관리자와 협력
4. 입출력장치관리 기능
입출력장치의 스케줄관리, 주변장치 스케줄링 및 관리
5. 파일관리 기능
파일의 생성,삭제,변경 유지들의 관리. 정보위치, 사용여부, 상태 등을 추적관리
운영체제의 목적은 4가지 단어로 볼 수 있겠다.
이름 | 내용 |
---|---|
처리능력(Throughput) | 시스템의 생산성을 나타내는 단위. 일정시간동안 처리하는 일의 양 |
응답시간(Turnaround Time) | 작업의뢰 후 시스템에서 결과가 얻어질때까지의 시간 |
신뢰도(Reliability) | 주어진 문제를 얼마나 정확하게 처리하는지에 대한 정도 |
사용가능도(Availability) | 시스템을 얼마나 빠르게 사용할 수 있는지에 대한 정도 |
한 문장으로 표현하자면, OS의 목적은 처리능력의 향상, 응답시간최소화, 신뢰도향상, 사용가능도 향상 이다.