OS(Operating System)라고 하는 운영체제는 일반 컴퓨터나 노트북의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어이다. 운영체제는 사용자에게 편리한 인터페이스를 제공하고 컴퓨터의 자원을 효율적으로 관리하는 소프트웨어이다.
1. 개인용 컴퓨터: 윈도우, Mac OS
2. 대형 컴퓨터: 유닉스(Unix), 리눅스(Linux)
3. 모바일: 애플의 iOS, 구글의 안드로이드(Android)
💡 운영체제는 각자의 응용프로그램이 활동할 수 있는 환경을 제공하고, 응용프로그램이 필요로 하는 컴퓨터 자원을 나누어주며, 응용 프로그램으로부터 컴퓨터 자원을 보호하는 강력한 '통치자' 역할을 한다.
자원 관리
자원을 응용 프로그램에게 나누어 준다. 자원을 요청한 프로그램이 여러 개라면 적당한 순서로 자원을 배분하고 적절한 시점에 자원을 회수하여 다른 응용 프로그램에게 나누어준다.
자원 보호
악의적인 사용자나 미숙한 사용자로부터 자원을 보호한다.
하드웨어 인터페이스 제공
CPU, 메모리, 키보드, 마우스와 같은 다양한 하드웨어를 일관된 방법으로 사용할 수 있도록 지원하기 때문에 어떤 회사에서 만든 하드웨어인지 신경 쓸 필요가 없다. 운영체제는 하드웨어 인터페이스가 자동으로 설치되게 함으로써 하드웨어 종류에 상관없이 사용할 수 있게 해준다.
사용자 인터페이스 제공
사용자가 운영체제를 편리하게 사용하도록 지원하기 위한 것이다.
효율성
효율성은 운영체제의 역할 중 '자원 관리'와 연관되는 것으로, 같은 자원을 관리하더라도 효율적으로 관리해야 한다는 의미이다. 일반적으로 운영체제의 크기를 최소화하고 운영체제가 사용하는 코드를 최적화해야 한다.
안정성
안정성은 운영체제의 역할 중 '자원 보호'와 연관된다. 운영체제가 안정적이려면 사용자와 응용 프로그램의 안전 문제와 하드웨어적인 보안 문제를 처리할 수 있어야 하며, 시스템에 문제가 발생했을 때 이전으로 복구하는 결함 포용(fault tolerant) 기능을 수행해야 한다.
확장성
확장성은 운영체제의 역할 중 '하드웨어 인터페이스 제공'과 연관되는 것이다. 운영체제는 하드웨어의 종류에 상관없이 꽂으면 바로 실행할 수 있는 플러그 앤드 플레이(plug & play) 기능을 제공해야 한다.
편리성
편리성은 운영체제의 역할 중 '사용자 인터페이스 제공'과 연관되는 것이다. 응용프로그램과 사용자에게 다양한 편리성을 제공하면서도 자원의 낭비 요소를 막아야한다.
커널의 역할: 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리, 프로세스 간 통신 관리
: 초창기 운영체제의 구조
🔻 장점
🔻 단점
: 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간 통신
🔻 장점
: 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공한다. 운영체제의 많은 부분이 사용자 영역에 구현되어 있다. 대표적인 운영체제 마하(Mach)는 애플의 PC 운영체제인 OS X와 모바일 운영체제 iOS의 커널로 사용된다.
🔻 장점
운영체제 위에 가상머신을 만들고 그 위에서 응용프로그램이 작동하게 하여 서로 다른 운영체제간 호환성을 높힐 수 있다.