2025-12-09
오늘 배운 것
09-1 운영체제를 알아야 하는 이유
운영체제란
- 운영체제
- 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램
-
항상 컴퓨터가 부팅될 때 메모리 내 커널 영역이라는 공간에 따로 적재되어 실행
→ 커널영역에 적재되어 사용자 영역에 적재된 프로그램들에 자원을 할당하고 이들이 올바르게 실행되도록 도움
- 하는 일
- 메모리 주소가 겹치지 않도록 적당한 공간에 프로그램들을 적재
- 더 이상 실행되지 않는 프로그램을 메모리에서 삭제하며 지속적으로 메모리 자원을 관리
- 최대한 공정하게 여러 프로그램에 CPU 자원을 할당
- 응용 프로그램과 하드웨어 사이에서 응용프로그램에 필요한 자원을 할당
- 응용 프로그램이 올바르게 실행되도록 관리
- 사용자 영역
- 커널 영역을 제외한 나머지 영역, 사용자가 이용하는 응용프로그램이 적재되는 영역
운영체제를 알아야 하는 이유
- 운영체제를 통해 현재 하드웨어의 상태, 코드가 어떻게 실행되고 있는지, 하드웨어 상 어떤 문제가 있었는지 알 수 있고 이를 통해 문제 해결의 실마리를 찾을 수 있음
09-2 운영체제의 큰 그림
운영체제의 심장, 커널
- 커널
- 운영체제의 핵심 서비스를 담당하는 부분
- 사용자 인터페이스
- 운영체제가 제공하는 서비스 중 커널에 포함되지 않는 서비스
- 윈도우의 바탕화면과 같이 사용자가 컴퓨터와 상호작용할 수 있는 통로
- 그래픽 유저 인터페이스
- 그래픽을 기반으로 컴퓨터와 상호 작용할 수 있는 인터페이스
- 윈도우 바탕화면, 스마트폰 화면
- 커맨드 라인 인터페이스
- 명령어를 기반으로 컴퓨터와 상호작용할 수 있는 인터페이스
이중 모드와 시스템 호출
- 운영체제는 응용프로그램들이 자원에 접근하려고 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호
- 응용프로그램의 요청을 받은 운영체제는 응용 프로그램 대시 자원에 접근하여 요청한 작업 수행
- 이중 모드
- CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 사용자 모드
- 운영체제 서비스를 제공받을 수 없는 실행 모드
- 커널 영역의 코드를 실행할 수 없는 모드
- 커널 모드
- 운영체제 서비스를 제공받을 수 있는 실행 모드
- 커널 영역의 코드를 실행 할 수 있는 모드
- 자원에 접근하는 명령어
- 사용자 모드
- CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식
- 시스템 호출
- 운영체제 서비스를 제공받기 위해 커널 모드로 전환하는 방법
- 소프트웨어 인터럽트
- 특정 명령어에 의해 발생하는 인터럽트
- 시스템 호출 처리 순서
- 시스템 호출을 발생시키는 명령어 실행
- CPU가 지금까지의 작업을 백업
- 커널 영역 내에 시스템 호출을 수행하는 코드(인터럽트 서비스 루틴)를 실행
- 기존에 실행하던 응용 프로그램으로 복귀하여 실행
- 시스템 호출 작동 과정
- 커널 영역의 코드를 실행하는 시스템 호출 발생하여 커널 모드로 전환
- 운영체제 내의 특정 작업을 수행하는 코드 실행
- 작업이 완료되면 다시 사용자 모드로 복귀하여 실행을 계속 이어감