1. 운영체제가 필요한 이유와 목적
2. 1을 만족하기 위한 구성요소
3. 운영체제의 유형 분류
4. 운영체제의 발전 양상
운영체제가 필요한 이유와 목적
운영체제가 필요한 이유는 운영체제가 없는 상황을 가정해보면 쉽게 알 수 있다.
운영체제가 없는 경우 응용 프로그램을 만드는 사람은 하드웨어를 직접 제어하여 사용하여야 한다. 이때 생기는 문제는 크게 두가지가 있다
- 첫번째로 개발자가 직접 하드웨어를 제어 해야 한다는 점이다. 이런 경우에 직접 하드웨어를 제어하는 것 자체가 어려울 뿐만 아니라 다른 하드웨어에 응용프로그램을 실행시킬 경우 문제가 될 수 있다.
- 두번째로 여러 응용 프로그램이 하드웨어를 공유하는 경우 자원 분할이 어렵다는 점이다.
운영체제는 앞의 두 문제를 해결하기 위해 필요하다고 볼 수 있으며. 제공하는 기능도 앞에 두 문제를 해결하는 기능이라고 볼 수 있다. 운영체제는 하드웨어와 응용 프로그램 사이에 존재하면서
- 개발자가 직접 하드웨어를 제어하지 않도록 인터페이스를 제공하여 알아서 하드웨어를 제어해 준다.
- 여러 응용 프로그램이 하드웨어를 공유하는 경우 자원 분할이 효율적으로 이루어지도록 하드웨어를 할당 해준다.
cpu의 동작 모드
cpu의 동작 모드는
1. 슈퍼바이저 모드(커널 모드)
운영체제의 커널이 동작되는 모드이며 이때 하드웨어를 직접 제어할 수 있는 cpu명령어를 사용 가능하다.
2. 보호모드(사용자 모드)
응용 프로그램이 동작하는 모드이며 이때 하드웨어를 직접 제어할 수 있는 cpu명령어를 사용 불가능하다.
System Call
System call이란 개념은 위에 cpu의 두 가지 동작 모드를 통해 생겨 나는데 간단히 말하면 사용자모드에서 슈퍼바이저 모드로의 순간적인 전환이라고 볼 수 있다. 즉, 사용자 모드 진행중 커널에서 동작하는 cpu명령(코드상에서는 특정 함수임)이 필요한 경우 system call 함수를 호출하면 사용자 모드에서 슈퍼바이저 모드로 변경되어 커널을 동작 시킬 수 있는 것이다.
systemcall시 Software interrupt가 발생하여 작업이 처리된다.
커널의 종류
- 일체형 커널(monolithic kernel)
운영체제의 모든 서비스가 커널안에 있음.
장점은 내부요소들이 효율적으로 상호작용 할 수 있다는 점이며 단점은 한 가지 요소로 인한 오류때문에 시스템 전체에 장애가 발생할 수 있다는 점이다. Unix, Linux등의 운영체제가 이에 해당한다.
- 마이크로 커널(micro kernel)
운영체제의 요소가 대부분 커널 외부에 있음.
커널 내에 메모리 관리, 멀티태스킹, 프로세스간 통신등의 cpu, memory 관리 하는 부분만 남긴다. 장점은 유지보수, 확장등이 쉽지만 단점은 커널 외부로 운영체제 요소들은 ipc를 통해야만 하므로 성능저하가 발생할 수 있다.
자원 관리
- 프로세스 관리
운영체제는 프로세스를 생성, 삭제, cpu할당을 위한 스케쥴 결정, 멀티 프로세싱.
- 메모리 관리
메모리 보호, 요구 유효성, 할당 회수
- 파일 관리
파일 접근 제한, 파일 열기, 닫기시 자원할당(open, close)