Introduction
Last updated
Last updated
사용자 어플리케이션
Middlewares
개발자들이 프로그램 개발을 쉽게 하기 위해 공통된 기능을 모아둔 중간 소프트웨어, 운영체제와 사용자 간의 중계자 역할 수행
소프트웨어 개발 환경
운영체제
하드웨어를 관리하고 응용 프로그램과 하드웨어 사이에서 인터페이스 역할을 하며 시스템의 동작을 제어하는 시스템
하드웨어
프로세스 관리: 운영체제에서 작동하는 응용 프로그램 관리, CPU를 점유해야 할 프로세스 결정, CPU를 프로세스에 할당, 프로세스 간 공유 자원 접근과 통신 등을 관리
저장장치 관리: 메인메모리와 하드디스크, NAND 등 관리
네트워크 프로토콜 지원: TCP/IP 기반 인터넷에 연결하거나 응용 프로그램이 네트워크를 사용할 수 있도록 함
사용자 관리: 사용자 별로 계정 관리, 파일, 시스템 자원의 접근 권한 지정
디바이스 드라이버 관리: 하드웨어를 추상화해주는 디바이스 드라이버들을 관리
위로갈수록 메모리 접근 속도가 빠르고, 내려갈수록 메모리 접근 속도가 느려짐
저장 가능한 용량은 아래로 갈수록 점점 커짐
CPU에 즉각적인 처리를 필요로 하는 이벤트가 발생하는 하드웨어/소프트웨어로부터 요청을 받게 되면, 현재 실행중인 작업을 중단하고 상황에 대한 우선 처리를 진행하는 방식
외부 인터럽트: I/O 장치, 타이밍 장치, 전원 등 외부 요인으로 발생
내부 인터럽트: 잘못된 명령이나 데이터 사용 시 발생 ex) 0으로 나누기, 오버플로우 등
소프트웨어 인터럽트: 프로그램 처리 중 명령의 요청에 의해 발생
정기적으로 CPU의 상태를 확인하는 방식
I/O장치에 지속적으로 처리 현황 및 event 발생 여부를 확인한다.
오버헤드가 크다.
인터럽트 기능이 없을 때 컨트롤러가 특정 어떤 일을 할 시기를 알기 위해 체크해야 한다.
사용자가 명령어를 사용해 입력 핀의 값을 계속 읽어 변화를 알아내는 방식
신속하게 실시간 대응이 필요할 때 사용한다.
I/O디바이스 작업이 장치에서 다 끝나면 신호를 보냄
하드웨어로 지원 받아야 하는 제약 존재, 발생 시기 예측이 어려울 때 빠르게 대응 가능
좀 더 효율적, 오버헤드 작음
동작 순서
디바이스 인터럽트 요청
CPU가 현재 수행중인 것 중지하고 커널 모드로 변경한다. 현재 프로그램, 커널 스택의 다른 상태를 저장해둔다.
vector table에서 인터럽트 벡터를 가져와 해당 주소로 이동
인터럽트 루틴을 실행
모든 처리가 끝나면 상태 복구시키고 유저 모드로 돌아가 프로그램 이어서 실행
CPU가 처리를 못하는 명령어가 들어왔을 때 스스로 interrupt를 걸고 운영체제에 도움을 요청하는 것
사용자 모드에서부터 운영체제가 사용하고 있는 커널 모드로 접근하기 위한 함수
사용자 모드: 응용프로그램 (하드웨어를 사용하기 위해 시스템 콜을 통해 운영체제에 요청)
커널 모드: 운영체제