728x90
운영체제란
컴퓨터 시스템의 자원들을 효율적으로 관리하며, (Resource Management)
→ 디스크 자원 관리 및 분배 (Efficiency & Fairness)
사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 소프트웨어(Virtual Machine)
→ 사용자를 위해서만 존재하는 것처럼 느끼게 해주는 환경
Application View
- 프로그램이 돌아갈 환경을 제공, like virtual machine
- 추상적인 view를 제공 → 하드웨어 캡슐화를 통해 컴퓨터 시스템 추상화
- CPUs → Process, Threads
- Memory → Address spaces (virtual memory)
- Storage → Volumes, Directories, Files
- I/O Devices → Files
- Networks → Files
System View
- 다양한 자원 관리
- 최대한 바쁜 상태를 유지
- Sharing, Protection, Fairness, Efficiency, Concurrency
Implementation View
- Highly concurrent, Event-driven 소프트웨어
- Trap : 소프트웨어 interrupt → OS에게 제어권 넘김
- Interrupt : I/O Interrupt 등
- System Call : 프로세스에서 OS에게 요청하는 것
- Process와 OS는 분리 → 필요할때마다 syscall 요청하는 방식 → Protection을 위해
운영체제 간략 역사
Batch Processing Systems
- 아주 적은 메모리 및 디스크 기반의 OS
- Job이란 것이 punched card에 → 현재 process와 비슷
- Job을 card reader에 읽힘으로써 실행
- Off-line processing
- OS는 Job controller 느낌
Multi-programming Systems
- 많은 Job들이 병행적으로 실행 → 병렬 X, 병렬처럼 보이게
- Memory Segmentation for jobs
- IO / CPU overlap 가능 → I/O와 CPU 따로 작업
- job이 I/O를 할 땐 CPU가 필요 없다 → 그때 CPU는 다른 Job을 처리하고 있다.
- card reader가 job들을 적재 → job1을 처리하면서 I/O 필요 요청에 I/O로 보냄 → 동시에 job2 작업 시작 ...
- CPU 효용성 높임
- Job 스케줄링, 메모리 관리, CPU 스케줄링, Protection 등의 특징
- Spooling(Simultaneous Peripheral Operation On-Line)
- 각 device의 I/O 버퍼 사용
- 해당 버퍼에 일단 적재하면 완료 처리가 된 것으로 인식 → 이후 버퍼 처리
Time Sharing Systems
- Multitasking System
- 시간 분할 기법 사용 (Time-slice)
- OS에 의해 정해진 시간동안만 process가 실행될 수 있음
- 해당 시간이 지나면 process는 다른 process에게 넘겨줘야함 (Round-Robin Scheduling)
- 응답성이 좋아 사용자로 하여금 real-time으로 느끼게 해줌
- Multiprogramming System → 응답성이 좋지 않음
- 만약 I/O가 없는 작업이면 한없이 본인의 순서가 될때까지 프로세스가 실행되지 않고 대기하기 때문
- Multiprogramming System → 응답성이 좋지 않음
Multi-processor Systems
- 1개의 메모리를 여러 CPU가 공유
- SMP(Symmetric Multi-processor)라고도 불림
- 메모리 bottleneck → CPU가 로컬 캐시를 갖고 있음
- 뛰어난 performance, Uniform Memory Access
- 신뢰성 → CPU 1개가 잘못 되더라도 전체 시스템은 이상 없음
- 소프트웨어는 구현하기 쉽지만, 하드웨어적인 부분이 어려움
- 소프트웨어는 단일 CPU 시스템이랑 똑같이 작동
- 각 CPU가 로컬 캐시를 가지고 있기에 캐시 일관성이 일어날 수 있음 → 일관성있게 해주는 프로토콜 지원 어려움
Distributed Systems
- Cluster Systems
- 네트워크 기반의 다수의 컴퓨터가 연결 → loosely coupled Multi-processor system
- 하지만 사용자는 1개의 시스템처럼 보임
- 각 노드는 본인의 로컬 메모리를 가지고 있음
- Objectives
- 자원공유
- 병렬 처리
- 신뢰성 : 1개의 컴퓨터가 죽어도 다른 컴퓨터가 처리 가능
- 하드웨어적으로는 쉽지만, 소프트웨어적으로는 어려움 (OS, Middlewares)
728x90