운영체제 (Operating System)
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층이다. 컴퓨터 하드웨어와 사용자 및 다른 소프트웨어를 연결시켜주는 하드웨어로부터 최전방의 소프트웨어가 운영체제.
협의의 운영체제 (커널)
광의의 운영체제
- 커널을 포함하여 각종 주변 시스템 유틸리티를 포함한 개념
좁은 의미로 운영체제를 이야기할 때는 커널을 말하고 넓은 의미로는 광의의 운영체제를 말한다.
파일을 복사하는 것과 같은 것은 메모리에 상주하는 커널이 아닌 별도의 프로그램이지만 운영체제에 포함된다.
운영체제의 목적?
1. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
- 운영체제는 동시 사용자/프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공한다.
- 예를 들면 실행중인 프로그램들에게 짧은 시간 동안 CPU를 번갈아가며 할당해준다.
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행한다.
2. 컴퓨터 시스템의 자원을 효율적으로 관리
-
프로세서, 기억장치, 입출력 장치 등의 하드웨어 자원을 효율적으로 관리한다. 이는 사용자간의 형평성 있는 자원 분배 및 주어진 자원(CPU, 메모리 등 물리적으로 한정된 자원, 스펙)으로 최대한의 성능을 내기 위함
-
사용자 및 운영체제 자신의 보호한다.
-
프로세스, 파일, 메시지 등(소프트웨어 자원)을 관리한다.
운영체제의 분류
1. 동시 작업의 여부
단일 작업(single tasking)
- 한번에 하나의 작업만 처리한다.
ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없음
다중 작업(multi tasking)
- 동시에 두 개 이상의 작업 처리
ex) UNIX, MS windows 등 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
2. 사용자의 수
단일 사용자 (single user)
다중 사용자 (multi user)
3. 처리 방식
일괄 처리 (batch processing)
- 작업 요청을 일정량 모아서 한번에 처리한다.
- 작업이 완전 종료될 때까지 기다려야 한다.
ex) 초기 Punch Card 처리 시스템
시분할 (time sharing)
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용한다.
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가진다.
ex) UNIX
- interactive한 방식 (사용자의 인터랙션이 즉각적으로 응답하는 환경)
실시간(Realtime OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS (특수 목적 시스템 : special purpose system)
_ex) 원자로 / 공장 제어, 미사일 제어, 반도체 장비, 로보트 제어
- 데드라인이 존재한다.
실시간 시스템의 개념 확장
- Hard realtime system (경성 실시간 시스템) 데드라인이 지켜지지 않았을 때 치명적인 결과를 초래하는 시스템
- Soft realtime system (연성 실시간 시스템) 영상 출력과 같이 실시간처리가 보장되어야 하지만 치명적이지 않은 결과를 초래하는 시스템.
우리가 컴퓨터로 보는 영상은 작업량이 많을 때 끊기기 때문에 데드라인을 지키는 실시간 방식이 아닌 시분할 방식 아래에서 작동함.
비슷한 듯 미묘하게 다른 용어의 차이
아래 용어들은 모두 여러 작업이 동시에 실행되는 것을 의미하지만 강조하는 바가 다르다.
_ Multi Tasking
제일 일반적으로 사용되는 용어지만 사실 cpu 상에서는 하나의 작업을 아주 빠른속도로 할당하여 작업한다.
Multi Programming
메모리에 여러 프로그램이 동시에 올라가 있음을 강조한다.
Time Sharing
여러 프로그램이 cpu의 시간을 분할하여 나누어 사용함을 강조한다.
Multi Processor
다중 처리기라고 부르기도 하며 하나의 컴퓨터에 여러 개의 cpu 가 존재함을 의미한다.
운영체제의 예
UNIX
대형 컴퓨터를 위해 만들어진 운영 체제이다. 멀티태스킹과 여러 사용자를 수용할 수 있게끔 만들어졌다.
- 대부분 C언어로 작성되어 있다.
과거엔 *어셈블리어로 만들었기 때문에 코드가 복잡하고 어려웠다. 그래서 UNIX 운영체제를 만들기 위한 프로그래밍 언어를 만들었고 그 언어가 바로 C언어 이다.
*어셈블리어 : 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어
- 소스 코드가 공개 상태로 학술적으로 사용에 용이하다.
- 높은 이식성 (portable) : 기계어 집합이 전혀 다른 컴퓨터에 이식하기 수월하다.
- 최소한의 커널 구조 : 여러 기능이 커널에 모두 들어가 있으면 운영체제 자체가 차지하는 메모리가 많아 핵심적인 부분만 커널에 들어가 있다.
- 복잡한 시스템에 맞게 확장 용이하다.
- 다양한 버전 - System V, FreeBSD, SunOS, Solaris, Linux
초기 UNIX 운영체제는 여러 사용자들이 서버에 접속해서 사용할 수 있도록 서버에 설치되는 (서버를 위한) 운영체제였지만
Linux
의 경우서버뿐만아니라 개인용 PC에서도 설치하여 사용할 수 있도록 만들어졌다.
DOS(Disk Operating System)
- MS사에서 1981년 *IBM-PC를 위해 개발되었다.
- 단일 사용자를 위한 운영체제이다
- 메모리 관리 능력의 한계가 있다. (주 기억 장치 : 640KB)
MS Windows
- MS사의 다중 작업용 GUI 기반 운영 체제
- Plug and Play 네트워크 환경 강화
- DOS용 응용 프로그램과 호환성 제공
- 불안정성
- 풍부한 지원 소프트웨어
Handheld device를 위한 OS
- PalmOS, Pocket PC (WinCE), Tiny OS
운영체제의 구조
- CPU : CPU 스케쥴링
- memory : 한정된 메모리를 효율적으로 사용
- Disk : 효율적인 파일 관리
- I/O device : 각기 다른 입출력 장치와 컴퓨터 간의 정보 교신
- process : 프로세스의 생성과 삭제, 자원할당 및 반환, 프로세스 간 협력
- 그 외 : 보호 시스템, 네트워킹, 명령어해석기 (command line interpreter)
반효경 교수님의 강의를 통해 학습한 내용을 정리한 글입니다.