실행할 프로그램에 필요한 자원(장치)을 할당하고
프로그램이 올바르게 실행되도록 돕는 프로그램이다.
컴퓨터를 부팅하면 메모리 내 커널영역 이라는 공간에 운영체제가 적재된다.
운영체제는 나머지 영역(사용자 영역)에 프로그램들을 적재하고 삭제한다.
또 CPU와 입출력장치 같은 자원들을 프로그램에 적절히 할당한다.
프로그램이 실행될때 하드웨어의 상태, 실행 상태, 문제 등을 알려주어 문제해결을 도와준다.
자원에 접근/조작하는 역할, 프로그램 실행을 관리하는 역할
운영체제의 핵심 서비스이다.
응용프로그램이 하드웨어 자원에 접근하기 위해서는 운영체제에 도움을 요청해야 한다.
이 역할은 이중모드로써 구현된다.
CPU는 명령을 실행할 때 사용자모드 또는 커널모드로 실행할 수 있다.
사용자 모드
커널모드
일반 프로그램이 운영체제에 보내는 요청, 소프트웨어 인터럽트에 해당한다.
응용프로그램에서 데이터를 저장할 때
1. 데이터를 저장하는 시스템 호출을 발생시켜 커널 모드로 전환
2. 운영체제는 데이터 저장 코드를 실행하여 하드디스크에 접근
3. 다시 사용자 모드로 복귀
실행중인 프로그램을 프로세스 라고 한다.
메모리 안에서 수많은 프로세스가 생성되고 삭제된다
CPU는 한번에 하나의 프로세스만 실행할 수 있으므로, 각 프로세스를 조금씩 번갈아가며 실행한다.
프로세스마다 사용하고자 하는 자원은 다양하므로, 운영체제는 이를 일목요연하게 관리해야 한다.
운영체제가 프로세스에 할당하는 주요 자원
1. CPU 자원 : 어떤 프로세스로부터 CPU를 얼마나 오래 이용하게 할건지 결정 (CPU 스케줄링)
2. 메모리 자원 : 메모리가 적재될 주소 결정 / 메모리 부족 해결
3. 입출력 장치 : 입출력장치가 CPU에 인터럽트 요청을 보내면,
CPU는 커널 영역에 있는 인터럽트 서비스 루틴을 실행한다.
운영체제는 보조기억장치의 파일 열기/생성/삭제 및 디렉토리 관리를 지원한다.