💻운영체제를 알아야 하는 이유
🖥운영체제란
- 시스템 자원 / 자원
프로그램 실행에 필요한 요소
모든 프로그램은 실행되기 위해 반드시 자원이 필요하다.
운영체제
- 실행할 프로그램에 필요한 자원 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
-> 프로그램이기 때문에 메모리에 적재되며 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행된다.
운영체제의 메모리 관리
- 운영체제는 메모리 주소가 겹치지 않게 적당한 공간에 프로그램을 적재한다.
- 실행할 프로그램을 메모리에 적재하고, 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리한다.
운영체제의 CPU 관리
-
어떤 프로그램이 CPU를 독점하면 다른 프로그램은 올바르게 실행될 수 없다. 그렇기에 운영체제는 최대한 공정하게 여러 프로그램에 CPU 자원을 할당한다.
-
운영체제는 응용 프로그램과 하드웨어 사이에서 필요한 자원을 할당하고, 응용 프로그램이 올바르게 실행되도록 관리하는 역할을 한다.
🎨운영체제의 큰 그림
🎯운영체제의 심장, 커널
- 운영체제가 제공하는 핵심적인 서비스
- 자원에 접근하고 조작하는 기능
- 프로그램이 올바르고 안전하게 실행되게 하는 기능
커널
🚀이중모드와 시스템 호출
- 사용자가 실행하는 프로그램은 자원에 직접 접근할 수 없다.
운영체제를 통해서만 접근하도록 하여 자원을 보호한다.
이중모드
-
CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식.
-
사용자 모드
- 운영체제 서비스를 제공받을 수 없는 실행 모드
- 커널 영역의 코드를 실행할 수 없는 모드
- 자원 접근 불가
-
커널 모드
- 운영체제 서비스를 제공받을 수 있는 실행 모드
- 자원 접근을 비롯한 모든 명령어 실행 가능
-
슈퍼바이저 플래그를 통해 어떤 모드인지 알 수 있다.
1이면 커널 모드, 0이면 사용자 모드로 실행 중임을 의미한다.
시스템 호출 (시스템 콜)
- 커널 모드로 전환해 운영체제 서비스를 제공받기 위한 요청을 말한다.
- 일종의 소프트웨어 인터럽트다.
시스템 호출이 처리되는 방식은 하드웨어 인터럽트 처리 방식과 유사하다.
🔥운영체제의 핵심 서비스
프로세스 관리
- 프로세스 : 실행 중인 프로그램
- CPU는 한 번에 하나의 프로세스만 실행할 수 있어 프로세스들을 조금씩 번갈아가며 실행한다.
- 동시다발적으로 생성/실행/삭제되는 다양한 프로세스를 관리
자원 접근 및 할당
- CPU
CPU 스케줄링 : 어떤 프로세스부터 얼마나 CPU를 이용하게 할 것인지를 결정하는 것
- 메모리
메모리를 어떻게 할당하고, 메모리가 부족할 경우 해결
- 입출력장치
인터럽트 서비스 루틴을 제공해 입출력 작업을 수행한다.
파일 시스템 관리
- 관련된 정보를 파일이라는 단위로 저장 장치에 보관
- 파일들을 묶어 폴더 (디렉토리) 단위로 저장 장치에 보관