OS의 목적
- 편리성 2. 효율성 3. 발전성
OS의 역할
- 중재자 프로그래머에게 시스템을 사용하기 위한 편리한 Interface를 제공
- 자원 관리자
OS 발전
Serial Processing
OS 존재 X
사람이 직접 Job 적재
=> Job to Job Transition : 스케쥴링 어떻게 할 것인지 문제 존재
문제점
- 고가의 자원을 비효율적으로 사용
- 셋업시간(컴파일러 세팅 등)의 장기화
- 스케쥴링 문제
Simple batch System
비슷한 일들끼리 묶어서 셋업 시간을 단축
Monitor
최초의 OS, 항상 Memory에 load되어 상주해 있음
JCL
Job Control Language
일들을 관리하기 위한 언어
JCL을 통해 Job to Job Transition 자동화
요구사항
- Memory Protection OS인 Monitor가 점유하고 있는 공간을 침범하는 것을 막아야 함
- System Timer 한 개의 작업이 독점하지 못하도록 System Timer가 필요함
특권 Instructions 오직 Monitor를 통해서만 실행될 수 있는 명령어들이 있어야 함
I/O Instruction들은 특권 Instruction임
- I/O Device Controller
- Interrupt 처리
- Synchronous I/O : 프로그램이 I/O의 결과에 종속되어 기다림
Asynchronous I/O : 프로그램이 I/O에 종속되지 않음
=> Asynchronous I/O는 Interrupt를 이용해 병렬적으로 처리 가능하나 Synchronous I/O는 기다려야 함
문제점
- Card 읽는게 느림
- CPU가 자주 놀았음 (Synchronous한 I/O 때문)
Multiprogrammed Batch System
이전까지는 Uni-Programming이었음
=> 메모리에 하나의 Program만 적재
이제 메모리에 여러개의 Program을 올려서 Idle한 시간을 줄여 CPU 활용을 높이는 것이 목표
Multi Processing으로 CPU관점에서 여러개의 작업이 병행적으로 처리됨
요구사항
Relocation 여러 프로그램이 올라옴에 따라 Boundary가 없어짐
=> 프로그램이 어디서 실행될 지 알 수가 없음
=> Disk에 Swap Area 확보해두고, 다른 프로그램을 메모리에 올릴 때 안쓰는 걸 Swap Area로 넣음
Memory Protection 프로그램들 간 메모리 영역 침범이 생기지 않도록 해야 함
MMU Memory Management Unit
Logical 주소를 Main Memory의 Physical 주소로 Instruction 실행 시에 변환하는 것이 필요함 이를 처리하는 Unit
Time Sharing
인적 자원을 보다 효율적으로 사용하고자 하며, 다수의 상호작용하는 Job들을 다룰 수 있어야 함
Processor 사용 시간을 여러 User들끼리 나눔
같은 Machine을 여러 User들끼리 나누므로 Switching이 빈번하게 일어날 것이며, Job별로 Time Slice가 할당되어야 함
문제점
시스템 시간을 계속 체크하면서, Time Slice를 다 썼는지 확인해야 함
구분 Batch Multi Programming Time Sharing 목적 Processor 사용률 극대화 Response Time 최소화 OS 접근 JCL Terminal의 Command
OS 진화하면서 생긴 변화
- Process CPU를 나눠쓰기 시작함
- Memory Management MMU 등을 이용하면서 메모리 침범을 하지 않는 등
- Information Protection and Security 특권 모드 등
- Schedulig and Resource Management
- System Structure
OS 범주
Kernel
Memory에 항상 상주하고 있는 OS의 일부분 함수들의 집합으로 구성됨
함수들은 근본적인 메커니즘을 제공
(ex : Process 관리, 동기화, CPU 스케쥴링, 메모리 관리 등)
이러한 제공되는 Service들을 System Call이라고 함
Utility
디스크에 있는 OS의 일부분 커널을 제외한 부분 필요에 따라 disk에서 load됨
System Utility
System이 만듦
컴퓨터 프로그램에 필요한 핵심적인 것
User Utility
사용자가 만든 것
Shell
System Utility 중 Special한 Utility
사용자의 명령어를 실행하는 것
사용자와 커널을 이어줌