Operating System의 목적
HW와 Users 간의 interface 역할을 해, Convenient, Efficient, Effective, Secure, Protective를 보장하는 것.
Convenient : User가 HW의 기능을 손쉽게 사용할 수 있도록 한다.
Efficient : 여러 경합되는 작업을 효율적으로 처리할 수 있도록 한다.
Effective : 무의미한 작업이나 자원을 배제해 자원을 효과적으로 사용할 수 있다.
Secure : memory에 침범을 방어한다.
Protective : 사용자 간의 보안 또는 OS와 사용자 간의 보안 유지를 할 수 있도록 한다.
Operating System의 전략
위의 목적을 달성하기 위한 Operating System의 전략은 한 단어로 추상화(Abstraction)라고 이해할 수 있다.
⇒ 또는 Cheating이라고 표현!
OS의 추상화는 다음과 같은 특징을 가졌다.
- Solid : 매우 견고하고 치밀하게 설계되어 있다.
- Sustainable : 지속가능한 로직을 따른다.
- Falut-tolerant : 결점이 발생한 경우에 이를 사용자에게 표현하지 않는다.
- Unpunishable
실제적으로 추상화가 이루어지는 부분은 다음과 같다.
OS의 기본 3요소 : process, memory, file
process management : multitask
하나의 cpu에서 여러 process를 동시에 실행할 수 있도록 해준다.
여러개의 process를 빠른 속도로 번갈아 가며 처리해 사용자가 동시에 처리되는 것처럼 보이도록 한다.
memory management : Virtual Memory
폰 노이만 구조에 의해 CPU가 실행하는 명령어는 모두 memory에 탑재되어야 한다.
폰 노이만 구조 : cpu / memory / bus의 구성요소로 이루어져 memory의 명령어를 bus를 통해 cpu가 얻어 해당 명령어를 실행하는 구조로 이루어져 있으며, 현재 모든 컴퓨터의 기본 구조
하지만 process management를 통해 여러 process를 multitasking하려면 결국 해당 process를 전부 memory에 탑재해야 한다는 의미이다.
또한 메모리가 부족하면 더 이상 process를 실행할 수 없게 되기 때문에 위의 OS 목적을 달성하기가 어려워지게 된다.
이러한 단점을 해결하고자, computer system(32bit/64bit)에서 할당할 수 있는 모든 memory를 각 process마다 할당해준다.
이 때 할당된 memory 주소는 virtual memory가 할당되어 있으며 cpu는 multitasking과정 중 필요한 부분의 명령어만 virtual memory에서 실제 memory로 옮겨 처리하게 된다.
이렇게 처리하게 되면 설령 memory가 가득 차더라도 현재 처리하고 있지 않은 process의 memory를 해제한 뒤 다시 memory에 새로운 process 명령어를 할당할 수 있기 때문에 memory가 부족해지는 현상이 발생하지 않게 된다.
⇒ 하지만 메모리가 적은 경우 위와 같은 swapping 현상이 계속 발생해 속도에 영향을 줄 수는 있다.
file and storage management : Fast I/O
입출력장치는 폰노이만 구조에서는 부가 장치로서 cpu, memory에 비해 훨씬 느린 속도를 가지고 있어 주로 병목 현상의 원인이 된다.
이러한 병목 현상을 줄이기 위해 buffer와 caching 방법을 적용
- buffer : 입출력 데이터를 buffer라는 memory 공간에 우선 저장 후 다음 작업을 처리함으로써 입출력 데이터가 실제 disk에 저장되는 시간보다 훨씬 빠르게 다음 작업을 처리할 수 있다.
- ⇒ 하지만 buffer도 memory이므로 buffer에 저장되어 있는 데이터가 disk에 쓰여지기 전에 전원이 나간다면 데이터 무결성에 문제가 생길 수 있다. 이러한 문제점을 해결하기 위한 여러 방법들이 제시되었다.
- caching : disk에서 자주 사용하는 데이터를 미리 cache memory에 저장해 빠르게 memory로 불러온다.
'CS > OS' 카테고리의 다른 글
| [Operating System] Process Synchronization 1 (0) | 2024.07.27 |
|---|---|
| [Operating System] CPU Scheduling (1) | 2024.07.27 |
| [Operating System] Processes And Threads (0) | 2024.07.27 |
| [Operating System] Operating System Overview (0) | 2024.07.27 |
| [Operating System] Computer System Overview (0) | 2024.07.27 |