운영체제
정의
하드웨어 자원을 제어하고 프로그램에 대한 일반적인 서비스를 지원하는 시스템 소프트웨어를 말합니다.
구조
드라이버 > 커널 > 시스템 콜 > 사용자 인터페이스
목적
- 사용자에게 컴퓨터 프로그램을 쉽고 효율적으로 실행할 수 있는 환경을 제공합니다.
- 컴퓨터 시스템 하드웨어 및 소프트웨어 자원을 여러 사용자 간에 효율적으로 할당, 관리, 보호합니다.
- 제어 프로그램으로서 사용자 프로그램의 오류나 잘못된 자원 사용을 감시하고, 입출력 장치 등의 자원에 대한 연산과 제어를 관리합니다.
역할
- CPU 스케줄링과 프로세스 관리
- CPU 자원의 할당, 프로세스의 생성/삭제/자원 할당/반환을 관리합니다.
- 저장장치 관리
- 메모리: 메모리의 할당, 사용 방법 등을 관리합니다.
- 디스크: 파일을 어떻게 저장할 것인지 관리합니다.
- I/O 디바이스 관리
- 외부 입/출력 장치와 어떻게 소통할지 관리합니다.
- 사용자 관리
- 사용자간 접근 권한, 자원의 활용등을 관리합니다.
시스템 콜
정의
시스템 콜
유저 프로그램이 커널의 서비스를 받기 위해 사용하는 인터페이스
커널 모드
모든 자원에 접근, 명령이 가능한 모드
유저 모드 유저가 접근 가능한 영역, 제한적인 자원 접근을 허용
필요성
유저 프로그램은 다양한 목적에서 만들어 질 수 있습니다. 저장된 데이터를 마음대로 삭제하기도 하고, 웹캠을 마음대로 키고 끌 수도 있습니다. 이런 상황을 최대한 막기위해서 커널 모드와 유저 모드를 구분합니다.
구현
- modebit 유저 모드와 커널모드를 구분하는 플래그 값
질문들
운영체제는 저장장치를 어떻게 관리하나요?
- 시스템 콜을 이용해 저장장치에 대한 처리를 진행합니다. 이를 통해 컴퓨팅 자원에 대한 접근을 제어할 수 있습니다.
- 가상 메모리를 사용하여 사용자 프로그램이 실재 자원을 고려하지 않고, 일관된 환경에서 동작할 수 있다는 가정을 제공합니다.
우리는 어떻게 입출력 장치를 사용하나요? (인터럽트 구조)
- 입력
- 입력이 일어나면 입력 장치 앞에 있는 디바이스 컨트롤러가 인터럽트를 발생시킵니다.
- CPU는 현재 작업 상태를 저장하고, 인터럽트 처리를 위한 루틴을 찾아 실행합니다.
- 출력
- 출력이 일어나야 하는 출력 장치 앞에 있는 디바이스 컨트롤러가 현재 데이터에 출력이 가능하다고 인터럽트를 겁니다.
- CPU는 지정된 I/O 레지스터에 출력할 데이터를 출력합니다.