운영체제란?
운영체제란 컴퓨터 시스템의 하드웨어 자원을 관리하고 효율적으로 사용할 수 있도록 하는 소프트웨어를 말한다. 좁은 의미에서는 운영체제의 커널을 의미하며 넓은 의미에서는 시스템을 관리하는 시스템 유틸리티들을 포함한 개념을 말한다. 운영체제는 A 프로세스의 메모리가 B프로세스의 메모리 영역을 침범하지 않도록 관리하고 파일시스템, 네트워크,프로세스들을 관리한다.
-> 이는 모두 시스템 자원을 효율적으로 사용하여 최대의 성능을 내도록하고 사용자가 편리하게 사용할 수 있는 환경을 제공해 준다.
운영체제의 분류
운영체제는 동시 작업 가능 여부, 사용자의 수,처리 방식에 따라 이를 분류할 수 있다.
1. 동시 작업 가능여부
단일 작업(Single-Tasking)
- 한번에 하나의 작업만 처리할 수 있다. 예) MS-DOS는 하나의 작업을 끝낼 때 까지 다른 작업을 수행할 수 없다.
다중 작업(Multi-Tasking)
- 비슷한 개념으로 Multi Programming, Multi Proccessing 등이 있다.
- 동시에 두개 이상의 작업을 처리한다. 예) UNIX, WINDOWS는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있다.
2. 사용자의 수
- 단일 사용자(Single User)
- 운영 체제에 오로지 단 하나의 사용자로만 사용할 수 있다. 예) MS DOS
- 다중 사용자(Multi User)
- 운영 체제에 여러명의 사용자가 있을 수 있다. -> 리눅스를 보면 root 사용자 이외에도 여러 권한을 가진 다수의 사용자가 컴퓨터에 접속할 수 있다.
3. 처리 방식
- 일괄 처리(batch)
- 작업의 요청을 한꺼번에 모아서 처리한다. -> 은행의 정산시스템 같은 경우 월별로 모아서 한꺼번에 처리하는 것이 더욱 효율적이다.
- 일괄 처리를 하게 되면 시스템의 응답성은 떨어지지만 일괄처리를 하는 중에는 CPU의 사용량이 극대화된다.
- 시분할(Time Sharing)
- 여러 프로세스들은 동시에 수행되면서 일정한 시간(time slice)을 할당받아 수행된다. -> 이로 인해 프로세스는 모두 동시에 실행되는 것 처럼 느껴진다.
- 실시간(RealTime OS)
- 정해진 시간 안에 어떤 일이 반드시 종료되어야 하는 것을 보장하는 OS이다.
운영체제가 하는일
1. 메모리관리
- 프로세스가 실행되기 위해서는 메모리 상에 올라와 있어야 하는데 어떠한 프로세스가 메모리에 올라오고 이 프로세스의 페이지의 어느 부분이 메모리에 올라와야 하는지 등을 관리한다.
2. 프로세스 관리
- 프로세스의 생성/삭제에 대한 부분을 관리하고 어떠한 프로세스가 cpu를 할당받아 실행될지를 결정한다.
- 프로세스간의 동기화 문제를 해결해준다.
- 교착상태를 방지하는 기법을 제공해준다.
3. 장치 관리
- 특정 하드웨어 장치를 쉽게 사용/제거 할 수 있게 해주고 장치간의 입출력을 제어해준다.
4. 파일 관리
- 파일의 생성/쓰기/읽기에 관여한다.
- 파일의 물리적 저장 위치를 결정한다.
5. 시스템 보호
- 시스템의 사용자들에게 적절한 권한을 부여하여 권한이 없는 사용자의 접근을 막는다.