- 운영체제가 무엇인지 이해한다.
- 개발자가 운영체제를 알아야 하는 이유를 알아본다.
- 커널이 무엇인지 학습한다.
- 시스템 호출과 이중 모드에 대해 이해한다.
- 운영체제가 제공하는 핵심 서비스의 종류를 학습한다.
실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
자원 (시스템 자원) : 프로그램 실행에 마땅히 필요한 요소들
운영체제도 프로그램이기 때문에 메모리에 적재 되어야 함
운영체제는 특별한 프로그램이기 때문에 컴퓨터 부팅 시 메모리 내 커널 영역이라는 공간에 따로 적재됨➡ 즉, 운영체제는 커널 영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움
운영체제는 실행할 프로그램을 메모리에 적재하고, 더 이상 필요하지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리함
운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당함
운영체제는 응용 프로그램과 하드웨어 사이에서 응용 프로그램에 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리함
운영체제는 관리할 자원별로 기능이 나뉘어 있음. 예를 들어 운영체제의 어느 한 부분에서는 CPU를, 어느 한 부분에서는 메모리를, 어느 한 부분에서는 하드 디스크를 관리함
운영체제가 하드웨어를 조작하고 관리하는 기능들을 제공하기 때문에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요 없이 운영체제의 도움을 받아 간편하게 개발 가능
운영체제는 현재 하드웨어의 상태, 코드가 어떻게 실행되었는지, 하드웨어 상의 문제 정보들을 제공해 줌문제 해결의 실마리를 찾음운영체제를 깊이 이해하면 운영체제가 제공하는 정보를 제대로 이해할 수 있고, 운영체제에 제대로 명령할 수 있게 됨. 결과적으로 하드웨어와 프로그램을 더 깊이 이해할 수 있음오류 메세지자원에 접근하고 조작하는 기능, 프로그램이 올바르고 안전하게 실행되게 하는 기능과 같은 운영체제의
핵심 서비스를 담당하는 부분
운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스
| UI의 종류 | |
|---|---|
| 그래픽 유저 인터페이스 (GUI : Graphical User Interface) | 그래픽을 기반으로 컴퓨터와 상호작용 할 수 있는 인터페이스 |
| 커맨드 라인 인터페이스 (CLI : Command Line Interface) | 명령어를 기반으로 컴퓨터와 상호작용 할 수 있는 인터페이스 |
➡ UI는 운영체제가 제공하는 서비스이지만, 컴퓨터와 상호작용하기 위한 통로일 뿐, 커널에 속하는 기능은 아님
응용 프로그램들이 자원에 접근하려고 할 때, 운영체제를 통해서만 접근하도록하여 자원을 보호함
응용 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근하여 요청한 작업을 수행함
CPU가 명령어를 실행하는 모드를 크게
사용자 모드와커널 모드로 구분하는 방식
사용자 모드 (User mode) : 운영체제 서비스를 제공받을 수 없는 실행 모드로 커널 영역의 코드를 실행할 수 없음커널 모드 (Kernel mode) : 운영체제 서비스를 제공받을 수 있는 실행 모드로 커널 영역의 코드를 실행할 수 있음➡ 사용자 모드로 실행되는 프로그램이 자원에 접근하는 운영체제 서비스를 제공받으려면 운영체제에 요청을 보내 커널모드로 전환되어야 함
운영체제 서비스를 제공받기 위한 요청
➡ 사용자 모드로 실행되는 프로그램은 시스템 호출을 통해 커널 모드로 전환하여 운영체제 서비스를 제공받음
시스템 호출도 일종의 인터럽트임소프트웨어 인터럽트라고 함 소프트웨어 인터럽트 : 인터럽트를 발생시키는 특정 명령어에 의해 발생하는 인터럽트
- 프로세스 관리
- 자원 접근 및 할당
- 파일 시스템 관리
프로세스 : 실행 중인 프로그램➡ 운영체제는 다양한 프로세스를 일목요연하게 관리하고 실행할 수 있어야 함
모든 프로세스는 실행을 위해 자원을 필요로 함
운영체제는 프로세스들이 사용한 자원에 접근하고 조작함으로써 프로세스에 필요한 자원을 할당해 줌
운영체제가 CPU, 메모리, 보조기억장치, 입출력장치를 어떻게 관리하고 어떤 기능을 제공하나?
CPU : 운영체제는 CPU 스케줄링을 통해 프로세스들에 공정하게 CPU를 할당
메모리 : 운영체제는 새로운 프로세스가 적재될 때마다 메모리의 어느 주소에 적재할 지를 결정
입출력장치 : 운영체제는 커널 영역에 있는 인터럽트 서비스 루틴을 제공함으로써 입출력작업을 수행