OS가 하는 주된 역할들
→ 정리된 것들이다. = 모든 OS들은 방법은 달라도 모두 밑의 기능들을 가지고 있다.
실행 중인 프로그램
컴파일 → 이진코드로 하드디스크에 저장이 되어 있다.
이 프로그램을 실행시키면 메모리에 올라가서 실행이 되게 된다.
실행하고 있는 프로그램을 OS가 Process라는 형태로 관리한다.
⇒ OS가 하는 일 중에 가장 중요한 일이 우리의 프로그램을 정확하고 효율적으로 실행시키는 것이다.
메모리는 모든 프로그램을 실행할만큼 크지 않다.
→ 메모리를 여러개로 잘라서 프로그램 여러개를 동시에 집어 넣어야 한다.
메모리 크기가 아무리 커도 그것보다 더 큰 프로그램이 존재할 수 있다.
항상 프로그램의 일부만 갖다가 메모리에 넣고 실행을 하다가 다른 부분이 필요하면 그때 그때 메모리에 가져온다.
프로그램은 자신에게 할당된 메모리 영역만 access해야 한다.
프로그램은 자신에게 할당된 자원만 access해야 한다.
다른 사람의 메모리 영역이나 다른 사람의 자원을 마음대로 가져다가 쓰면 안된다.
당연히 이 시스템 안에는 이 시스템을 사용해도 좋은 User들외에 다른 User들은 들어 올 수 없다.
CPU가 하나이든 여러개이든 시스템에서 동시에 여러개의 프로그램을 실행시키면, 당연히 이 프로그램을 실행시키는 순서가 존재한다.
각각의 프로그램을 얼만큼 실행할지도 정해 놓아야 한다.
이를 OS가 관리하는 것을Scheduling
이라고 한다.
정리가 되어 가는 중인 시스템들이다.
옛날엔 OS가 작았기 때문에 OS = Memory
였지만,
요즘은 OS가 크기 때문에 OS 전체가 Memory에 들어올 수 없다.
⇒ 프로그램 Module
화
항상 메모리에 있어야 하는 부분을 굉장히 작게 최소화 시켜서
Microkernel
이라고 부른다.
나머지 부분들은 OS 작업별로 다 나누어서 여러개의 프로세스로 구현한 것이Microkernel Architecture
이다.
OS가 계속 바뀔 때, Module
화가 되어 있기 때문에 Update
하고 Debuging
하기가 쉽다.
OS를 실행하는데 걸리는 시간이 길어진다.
→ kernel
을 제외한 별도의 program
에 access
를 해야하는데 이 때마다 OS
가 Switching(save&restore) 작업을 해야한다.
동시에 실행가능한 함수들
프로그램을 작성할 때 A함수, B함수, C함수가 존재할 때, 이 세 함수가 동시에 실행할 수 있는 경우가 존재한다.
순차적 실행 X → 동시 실행 O ⇒ 실행 속도 증가
SMP Machine은 여러개의 CPU를 사용한다.
여러 CPU에서 동시에 OS를 실행시킬 수 있다.
여러 CPU에서 동시에 OS를 실행하면 당연히 충돌하는 경우가 존재한다.
예를 들면, 내가 메모리 1000~2000번지를 A프로그램에 할당하려는데, 다른 프로그램B에도 1000~2000번지를 할당하려고 하면 같은 공간에 두 개의 프로그램이 할당되려는 상황이 발생할 수 있다.
⇒ 이런 상황이 발생하면 안되기 때문에 Symmetric
하게 돌아가는 OS들은 당연히 제어가 필요하다. → concurrency control
동시에 접근이 가능한 자원에 대해서 순차적으로 접근하도록 Control이 되어야 한다.
SMP 머신은 컴퓨터 하단 안에 CPU 여러개(10개, 100개, ...)가 들어 있다.
→ 비쌈
각각의 CPU하나와 OS를 가진 독립적인 컴퓨터들을 네트워크에 연결하여,
하나의 컴퓨터 처럼 사용하는 것을 Distributed Operation System이라고 한다.
각각의 OS에 Layer를 하나 더 씌운다.
⇒ 두 단계 OS를 가지게 한다.
module화된 Program들을 사용할 수 있어서 update에 용이하다.
Microkernel 사용 O
Microkernel 사용 X, 전부가 OS
→ 엄청 오래된 기능들
→ 별도의 프로세스로 나누어 사용을 안함
⇒ 속도가 매우 빠르다.
Microkernel 사용 O