260-281p
실행할 프로그램에 필요한 자원을 할당하고, 올바르게 실행되도록 돕는 특별 프로그램
- 자원??
- 모든 프로그램은 하드웨어를 필요로 합니다.
- CPU, 메모리. 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품들은 모두 자원
프로그램이지만 메모리에 적재되지 X
컴퓨터 부팅시, 메모리 내에 커널 영역에 적재되어 실행 (커널 제외 영역을 사용자 영역이라함)
운영체제는 응용 프로그램과 하드웨어 사이에서,
응용 프로그램에 필요한 자원을 할당하고,
응용 프로그램이 올바르게 실행되도록 관리하는 역할
-
운체 덕분에 개발자는 하드웨어를 조작하는 코드를 직접 작성할 필요가 없음
-
하드웨어, 프로그램을 더 깊이 이해하고, 문제 해결의 실마리를 얻을 수 있음
-
운체와 어떤 대화를 할 수 있죠?
보통은 에러메세지로 대화하게 됩니다. 프로그래밍 문법만 알게 되면, 에러메세지 모를 겁니다..
- 메모리 누수 현상
- 잘못된 주소 참조
운영체제는 현존하는 프로그램 중, 규모가 가장 큰 프로그램
운영체제의 핵심 서비스를 담당하는 부분 → 커널
-
사용자 인터페이스
→ 바탕화면과 같이 유저가 컴퓨터와 상호작용하는 통로 (커널이 제공 x)
-
그래픽 유저 인터페이스
그래픽을 기반으로 컴퓨터와 상호작용
-
커맨드 라인 인터페이스
명령어를 기반으로 컴퓨터와 상호작용
운영체제의 문지기 역할은 이중 모드로써 구현.
❓ 이중 모드란? CPU가 명령어를 실행하는 모드를 크게 사용자 모드와 커널 모드로 구분하는 방식CPU는 명령어를 사용자 모드로써 실행할 수 있고, 커널 모드로써 실행할 수 있습니다.
❓ 사용자 모드란? 운영체제 서비스를 제공받을 수 없는 실행 모드사용자 모드로 실행 중인 CPU는 입출력 명령어와 같이 하드웨어 자원에 접근하는 명령어를 실행할 수 없습니다. 사용자 모드로 실행되는 일반적인 응용 프로그램은 자원에 접근할 수 없습니다.
❓ 커널 모드란? 운영체제 서비스를 제공받을 수 있는 실행 모드CPU가 커널 모드로 명령어를 실행하면 자원에 접근하는 명령어를 비롯한 모든 명령어를 실행할 수 있습니다. 운영체제는 커널 모드로 실행되기 때문에 자원에 접근할 수 있습니다.
그럼 응용프로그램들은 어떻게 요청하나요??
시스템 호출은 인터럽트 / 특정 명령어에 의해 발생하는 건, 소프트웨어 인터럽트라고 함
- cpu : cpu 스케쥴링
- 메모리 : 메모리에 적재된 프로세스들은 크기도, 적재되는 주소도 가지각색
- 입출력 장치 : 인터럽트 서비스 루틴을 제공함으로써 입출력 작업을 수행
- 파일 시스템 관리 컴퓨터를 사용할 때는 여러 파일을 열고, 생성하고, 삭제하곤 합니다. 그리고 이 파일들을 한데 묶어 디렉터리 (폴더)로 관리합니다. 자칫 당연해 보이는 이런 파일 시스템도 운영체제가 지원하는 핵심 서비스입니다.