컴퓨터 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드웨어를 연결하는 소프트웨어 계층
협의(좁은 의미)의 운영체제(커널)
: 운영체제의 핵심 부분으로 항상 메모리에 상주하는 부분
넓은 의미의 운영체제
: 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
예) Windows - 여러가지 부가 프로그램도 함께 설치되는데 이는 항상 메모리에 상주하는 커널이 아니다.
1) 컴퓨터 시스템의 자원을 효율적으로 관리
2) 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
1) 동시작업 여부
단일 작업(Single tasking)
: 한 번에 하나의 작업만 처리
ex) MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전에 다른 명령을 수행시킬 수 없다.
다중 작업(Multi tasking)
: 동시에 두 개 이상의 작업 처리
ex) UNIX, MS Windows 등에서는 한 명령의 수행이 끝나기 전에 다른 명령이나 프로그램을 수행할 수 있다.
2) 사용자의 수
단일 사용자(single user)
ex) MS-DOS, MS Windows
다중 사용자(multi user)
ex) UNIX, NT server -> 사용자 간의 형평성 관리, 보안 기능 등이 추가 되어야 한다.
3) 처리 방식
일괄 처리(batch processing)
: 작업 요청의 일정량을 모아서 한꺼번에 처리
: 작업이 완전 종료될 때까지 기다려야 함
시분할(time sharing)
: 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
: 일괄 처리 시스템에 비해 짧은 응답 시간을 가짐
: interactive한 방식
-> 키보드를 두드렸는데, 바로 결과를 나타나는데 사용자가 늘어나면 1초 후에 결과가 나타날 수 있다. 사람이 느끼기에 빠르게 해주면서 동시에 주어진 자원을 최대한 활용하는거기 때문에 정확한 시간을 정해주는 것이 아니다.
실시간(Realtime OS)
: 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 실시간 시스템을 위한 OS -> 데드라인이 정해져 있다.
ex) 특수한 목적을 가진 시스템 - 원자로/공장 제어, 미사일 제어, 반도체 장비 등
: 실시간 시스템의 개념 확장
-> Hard realtime system(경성 실시간 시스템)
-> Soft realtime system(연성 실시간 시스템)
1) Multitasking : 여러 프로그램이 동시에 실행 가능한 것
2) Multiprogramming : Multitasking과 유사. 여러 프로그램이 메모리에 올라가 있음을 강조 -> 메모리 측면을 강조
3) Time sharing : 시간을 쪼개서 쓰는 방법(CPU의 시간을 분할하여 나누어 쓴다는 의미를 강조) -> CPU를 강조함.
4) Multiprocess
1) 유닉스 (UNIX)
2) DOS(Disk OPerating System)
3) MS Windows
4) 소형 device를 위한 OS
1) CPU 스케줄링 : 어떤 프로그램한테 CPU를 할당할 것인지에 대한 이슈. 아주 짧은 시간 간격으로 CPU를 줬다 뺏었다 하는 것이 CPU 스케줄링
-> 먼저 온 사람을 먼저 처리해주는 것이 가장 공정하고 합리적인 방법이라고 생각하는 경향이 있는데, 그렇게 처리하는 것이 효율적이지 않을 수도 있다.
-> 시간 차이를 완충해주면서 주어진 자원의 특성을 최대한 활용하는 스케줄링 방법이 필요하다.
2) 메모리 관리 : 한정된 메모리를 분배하는 이슈. 적어도 CPU가 원활하게 움직일 수 있도록 메모리를 분배한다. 디스크에서 새로운 것들이 올라오면 메모리에서 어떤 걸 쫓아내어야 하나? 미래에 사용하지 않을것들 -> 미래를 예측해야 한다. 메모리에 최근에 많이 사용됐으면 쫓아내지 않는다. 과거를 통해서 미래를 예측.
3) 디스크에서의 파일 관리 : 디스크에 특성에 맞게 스케줄링이 필요. 디스크에 들어온 요청들을 스케줄링. 헤드에 가까운 위치에 들어왔다면 먼저 처리. 엘리베이터 스케줄링과 유사
4) 입출력 관리 : 입출력 장치는 상대적으로 느리다. 장치들이 느리기 때문에 디스크, 메모리, CPU와 어떻게 주고 받을 것인가. 입출력 장치가 CPU에게 인터럽트를 걸어서 다음 작업을 하기 전에 알아차려서 처리해준다.
5) 프로세스 관리