Os 1 Introduction To Operating Systems
요약
- 1) 목적
- 1.1 편리한 환경 제공
- 동시 사용자/프로그램이 독자적으로 잡을 수행한다는 일루젼 제공
- 하드웨어 다루기 대행
- 1.2 자원관리자
- CPU 스케쥴링, 메모리 공간 분배
- 1.1 편리한 환경 제공
- 2) 분류
- 2.1동시작업 가능여부, 사용자의 수
- 2.2처리 방식
- 2.2.1 Batch
- 2.2.2 Time Sharing
- Interactive
- 2.2.3 Real time
- 데드라인이 있는 실시간 시스템을 위한 OS
- Soft Real time: 스트리밍
- 2.3 Terminology
- 멀티태스킹, 멀티프로그래밍, 타임 쉐어링, 멀티 프로세스
- 같은 말. 여러 작업을 짧은 시간 분할해 실행
- 여러 프로그램이 메모리에 올라가 있음을 의미
- 멀티태스킹, 멀티프로그래밍, 타임 쉐어링, 멀티 프로세스
- 3) 역할
- CPU 스케쥴링
- 디스크가 메모리보다 100만배 느리다. 스케쥴링 절실..!
- 메모리 관리
- 예: 미래를 예측해 다시 올라오지 않을 것 같은 잡은 Disk로 방출
- 파일 관리
- 헤드가 움직이면서 읽고 쓴다.
- 엘레베이터 스케쥴링
- 입츨력, 프로세스 관리
- 보호 시스템, 네트워킹, 커맨드라인
- CPU 스케쥴링
운영체제의 목적
- 1) 컴퓨터 시스템을 사용할 편리한 환경 제공
- 동시 사용자/프로그램이 독자적으로 수행하는 것 같은 환상을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
- 2) 컴퓨터 시스템 자원을 효율적으로 관리 –> 자원관리자
- 형평성 있는 자원 분배
- 프로세서, 기억장치, 입출력 장치 등을 효율적으로 관리
- CPU 스케쥴링: 실행 중인 프로그램들에게 짧은 시간씩 CPU 번갈아 할당
- 메모리 공간 분배: 실행 프로그램들에 메모리 공간 분배
- 할당할 때 정책의 문제: 알고리즘
운영체제란?
컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
- 협의의 운영체제 –> 커널: 전공자 입장에서의 운영체제
- 운영체제의 핵심 부분으로 메모리에 상주하는 부분
- 광의의 운영체제
- 커널뿐만 아니라 각종 주변 시스템 유틸리티까지 포함한 개념
운영체제의 분류
동시작업 가능여부
단일 작업(single tasking)
- 예: MS-DOS: 한 명령 수행이 끝나기 전에 다른 명령을 수행할 수 없음
다중 작업(multi tasking)
- 예: UNIX, MS Windows: 한 명령 수행 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있음
사용자의 수
- single user: MS-DOS, MS Windows
- multi user: UNIX, NT server
처리 방식
- 1) 일괄처리(batch processing)
- 작업 요청을 모아서 한꺼번에 처리
- 예: 초기 펀치카드 처리 시스템
- 예: 동사무소 신청서가 일정 분량 쌓이면 결과를 알려주는 옛날 시스템
- 2) 시분할(time sharing)
- 대표적인 예: PC
- 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할
- 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐 예) UNIX
- Interactive한 방식
- 3) 실시간(Real time OS)
- 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- 예: 원자로/공장 제어, 반도체 장비
- 예: 반도체 공장 정전사태가 심각한 이유: 파이프라인으로 공정마다 데드라인이 설정돼 있어서 하나 망가지면 도미노처럼 모두 망가지므로 정전이 났을 때까지 망기진 제품은 모두 버리고 파이프라인 처음부터 다시 시작해야 함.
- 실시간 시스템의 개념 확장
- Hard real time system
- Soft real time system
- 반도체 공정처럼 엄격하지는 않지만 동영상 스트리밍처럼 초당 24프레임의 데드라인을 못 맞춰줄 수도 있는 시스템
Terminology
- Multitasking
- 여러 가지 작업을 동시에 수행? 엄밀히 말하면 CPU에서는 매순간 하나의 작업을 수행, 짧은 시간으로 분할하므로 동시에 실행되는 것처럼 보일 뿐이다.
- Multi programming
- Time sharing
-
Multi process
- 구분
- 위의 용어들은 유사한 개념, 컴퓨터에서 여러 작업을 동시에 수행하는 것을 뜻한다.
- Multi programming은 여러 프로그램이 메모리에 올라가 있음을 강조
- Time Sharing은 CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조
- Multi processor
- 하나의 컴퓨터에 CPU(Processor)가 여러 개임을 의미
운영체제의 예
- UNIX
- 대형 컴퓨터용 운영체제
- 여러 사용자 사용 가능: 멀티 태스킹으로 출발
- C언어로 작성
- 높은 이식성
- 하나의 컴퓨터에서 다른 컴퓨터에도 이식할 수 있다는 의미: C언어를 쓰므로
- 최소한의 커널 구조
- 복잡한 시스템에 맞게 확장 용이
- 소스 코드 공개
- 프로그램 개발에 용이
- 다양한 버전
- System V, FreeBSD(버클리), SunOS, Solaris
- Linux(안드로이드 커널은 Linux로 씀)
- DOS(Disk Operating System)
- 단일 사용자용 운영체제
- IBM-PC를 위해 개발
- 메모리 관리 능력의 한계(주기억장치: 640KB)
- MS Windows
- MS사의 다중 작업용 GUI 기반 운영체제
운영체제의 구조
- CPU 스케줄링
- 디스크가 메모리에 비해 60~100만배 느린 천문학적인 속도 차이가 나므로 이를 완충하기 위해 스케줄링
- 메모리 관리
- 메모리가 꽉 차면 미래를 예측(예: 과거에 도둑질했으면 나중에 또 할 가능성이 높다고 가정)해서 CPU에서 다시 사용할 가능성이 낮은 잡은 Disk로 방출
- 파일 관리
- 헤드가 움직이면서 읽고 쓰므로 헤드의 이동이 줄어드는 방식
- 예: 엘리베이터 스케쥴링: 1층, 5층, 100층 눌렀을 때 1층과 100층을 먼저 누르고 50층이 나중에 누르더라도 50층을 들렸다가는 스케쥴링
- 입출력 관리
- I/O Device가 워낙 느려서 인터럽트 등을 통해 CPU가 최대한 방해받지 않도록 관리
- 프로세스 관리
- ETC
- 보호 시스템
- 네트워킹
- 커맨드라인 인터프리터