이 포스팅은 숙명여자대학교 김주균 교수님의 운영체제 강의를 바탕으로 작성되었습니다. 자세한 내용은 OS? Oh Yes! 누워서 보는 운영체제 이야기를 참고하세요. (누워서 볼 만한 책은 아닙니다 하지만 쉽게 쓰여진 책은 맞음)
운영체제란?
운영체제는 이러한 프로그램의 집단이다.
- 컴퓨터에 여러 응용 프로그램을 설치하게 해주고
- 여러 장치를 효율적으로 작동하도록 하며 (Resource Management)
- 사용자가 컴퓨터를 손쉽게 이용할 수 있도록 한다 (User Interface)
운영체제의 구성 요소
User Interface
- Shell : 사용자나 응용 프로그램이 OS와의 의사소통(정보 교환, 요청 창구)에 필요한 요소
Resource Management
- 장치 관리 : 키보드, 모니터, 프린터, 하드 디스크 등을 제어한다
- 파일 관리 : 사용자 또는 프로그래머가 파일이나 디렉터리를 관리하는 일
- 메모리 관리 : Main Memory 관리를 담당한다. 실행될 프로그램을 위해 주기억장치의 일정 부분을 할당하거나 주기억 장치 안에 있는 프로그램들의 경계를 지정하여 서로 침범하지 못하게 한다.
- 처리기 관리 : CPU의 처리 능력을 각 작업에 효과적으로 배분한다.
각 관리들은 밀접한 연관을 가지고 실행된다. 예를 들어 프로그램 파일을 실행한다고 해보자. 파일 관리자에 의해 해당 파일이 불려지고, 장치 관리로부터 디스크에서 읽혀지고, 메모리 관리로부터 메인 메모리로 옮겨지고, 처리기에 의해 실행된다.
운영체제의 위치
- 운영체제의 위치 : 하드웨어와 응용 소프트웨어 사이
- 참고로 운영체제와 시스템 프로그램(하드웨어에 의존적이고 시스템을 정상적으로 작동시키기 위해 필요한 프로그램 ex. 컴파일러, 편집기, 명령어 해석기 등)은 기능적으로 명확히 구분할 수 없는 경우가 많다. 이들을 묶어서 시스템 소프트웨어라고 부른다.
운영체제 구성의 분류
운영체제는 사용자 인터페이스와 많은 관리 프로그램들이 운영체제를 이룬다. 크게 Kernel과 Utility Program으로 나눈다.
Utility Program
- 사용자 인터페이스의 대부분이 유틸리티에 속한다.
- 메인 메모리에 적재된 커널과 달리 디스크에서 불려 메인 메모리에서 실행된다.
- 예를 들어 MS-DOS의 PRINT.EXE, FORMAT.EXE, BACKUP.EXE
Kernel
- 운영체제의 기능 중 사용자와 실행 프로그램을 위해 매우 빈번하게 사용되는 부분
- 컴퓨터가 처음 부팅할 때 주기억 장치에 적재되어, 시스템 운영이 종료될 때까지 주기억 장치에 남아있는다.
- 빈번히 빨리 실행돼야할 프로그램을 디스크에 둘 경우, 매번 입출력이 발생하므로 성능이 떨어진다.
- 모든 운영체제 기능을 주기억 장치에 올리지 않는 것은 메모리의 용량 때문이다.
- 예를 들어 MS-DOS의 IO.SYS, MSDOS.SYS, COMMAND.COM
⚡참고1 : 커널과 유틸리티의 차이
커널과 유틸리티를 명확하게 구분하는 기준은 없다. 다만 대부분의 설계자들이 중요하다고 동의하는 수준의 프로그램들이 커널로 정의된다. 그래서 많은 OS의 커널에 속하는 프로그램들이 대부분 비슷하다.
⚡참고2 : 펌웨어
커널 중에서도 더 빠른 실행이 요구되거나 높은 수준의 보호가 필요한 프로그램을은 마이크로 프로그래밍하여 ROM이나 PLA와 같은 칩의 형태로 만든다. 펌웨어는 하드웨어의 내부 공간에 프로그램을 싣어 놓은 것을 말한다.
듀얼 모드
모든 프로그램은 User, Kernel Mode 중 하나의 모드에서 실행된다.
- User Mode
- Kernel Mode
커널 모드를 권한을 가지는 프로그램이다. OS가 깔린 영역에서 무언가를 변경하거나, 읽기와 쓰기 같이 디스크나 메모리에 접근한다.
이렇게 모드를 분리하는 이유는 사용자의 오용으로부터 시스템을 보호하기 위함이다. 다중 사용자 환경이라면, 사용자와 사용자, 사용자와 운영체제 영역이 침범하지 못하도록 보호해야 한다.
- System Call (시스템 호출)
시스템 호출은 실행 모드를 User 모드에서 Kernel 모드로 스위칭하기 위해 시스템에 요청을 하는 것을 말한다. 사용자 프로그램을 실행하면 User 모드로 실행되다가, 커널 모드여야 접근할 수 있는 일이 생기면, 프로그램은 시스템 호출을 하여 커널 모드로 스위칭한다. 이후 그 일을 해줄 운영체제 프로그램이 커널 모드에서 실행되고, 다시 사용자 프로그램으로 복귀한다.
운영체제의 역사로 알아보는 프로그램 처리 방식
1세대 운영체제
- 1세대 컴퓨터 : 진공관 컴퓨터 시기
- 운영체제 : 운영체제가 활용될 여지는 없었다. 프로그램을 기계어로 만들 때 스위치나 버튼으로 일일이 조작했기 때문이다. (운영체제는 이를 자동화한 프로그램이다)
- 1세대 운영체제의 등장 : IBM 701
- 1세대 운영체제의 기능 : 일괄처리 시스템(Single-stream Batch Processing Systems)
📌Single-stream Batch Processing Systems
- Single-stream : 다수 개의 프로그램을 읽어 저장해놓되, 한번에 한개씩 프로그램을 실행시키는 방식. 메모리에 입출력이 발생하는 횟수를 줄여 시간을 줄일 수 있다.
- Batch : 작업이 차례대로 한 개씩 처리된다. 작업이 끝날 때까지 사용자의 중간 개입이 허용되지 않는다.
2세대 운영체제
- 2세대 컴퓨터 : 트랜지스터 컴퓨터, 자기 디스크 팩, Assembly 포트란 코볼의 등장
- 2세대 운영체제의 이슈 : 컴퓨터에 장착된 주변기기를 효율적으로 관리하여 컴퓨터의 처리 능력을 높이고, 사용자에게 나은 서비스를 제공
- 2세대 운영체제에서 나온 관리 방식 : Multiprogramming System, Multiprocessing System, Timesharing System, Interactive System, Realtime System
- 배치 시스템의 단점 : 일괄처리는 한 작업이 완료될 때까지 CPU를 다른 작업에 넘기지 않는다. 한개의 작업이 처리되는 동안 실제로 CPU를 사용하는 기간은 매우 짧기 때문에 CPU가 낭비된다. 시스템의 능력을 최대한 발휘할 수 없다. 2세대 운영체제의 관리 방식은 배치 시스템의 한계를 해결하기 위해 CPU 활용을 늘리는 것에 초점을 맞춘다.
📌Multiprogramming System
- CPU가 놀게 되면 바로 다른 작업을 처리할 수 있도록 조치해야 한다. 폰 노이만의 내장 프로그램 개념에 따르면, 어떠한 작업이 실행되려면 Main Mememory에 있어야 한다.
- Multiprogramming System : 다수개의 작업이 같이 주기억 장치에 있도록 한 방식.
📌Multiprocessing System
- 다수 개의 프로세서를 장착하여 동시에 여러 작업을 병렬로 동시에 실행, 처리 속도를 최대한 높이는 방식이다.
- 실행을 위해서는 작업이 Main Memory에 있어야 하므로, Multiprogramming System이 전제 되어야 한다.
📌Timesharing System
- CPU 하나가 후보로 올라오는 여러 작업들 중 하나를 실행하려고 한다.
- 여러 작업이 대기 중일때, 한번에 한 작업만 끝날때까지 실행하면 나머지 작업은 기다린다고 느낀다.
- CPU의 처리 시간을 작업 수에 맞춰 분할하여 번갈아가면서 처리한다.
이렇게 하면 CPU는 실제로는 많은 다른 작업을 했음에도 불구하고, 각 작업은 CPU가 자신의 작업을 계속 처리해주고 있다고 생각하게 된다.
- 다음 작업을 처리할 때, 후보 작업들이 메모리에 올라와 있어야 하므로, Multiprogramming System이 전제 되어야 한다.
📌Interactive System
- Timesharing System으로 사용자에게 바로바로 응답을 처리해줄 수 있게 되었다. 참고로 일괄 처리 방식에서는 입출력 요청이 들어오면 CPU가 놀게 되어서, 사용자가 중간에 개입할 수 없었다.
- 시스템과 사용자가 모니터와 입력 장치를 통해 마치 대화하듯이 일을 처리할 수 있게 되었다.
📌Realtime System
실행될 모든 프로세스들이 정해진 시간 내에 완료되어야 하는 시스템이다.
- Hard Realtime(경성)
작업이 마감 시한 내에 완료되지 않으면 시스템이 중지되는 등 치명적인 결과를 초래한다. 마감 시한을 넘긴 후 완료되는 일은 아무런 가치가 없다. 일반적으로 실시간이라는 말은 경성을 일컫는다.
- Soft Realtime(연성)
작업이 마감 시한 내에 완료되지 않으면 데이터 손실 등의 피해가 발생한다. 마감시한을 넘긴다면 완료의 가치가 점점 떨어지지만, 경성과 달리 시스템은 계속해서 운영할 수 있다.