Introduction to Operating System
컴퓨터 시스템 4가지 구성요소
컴퓨터 시스템 구조는 하드웨어, 운영체제, 프로그램, 사용자로 크게 네가지로 나눌 수 있다.
- 하드웨어: 기본적인 컴퓨팅 자원을 제공한다.(ex. CPU, Memory, I/O Devices 등..)
- 운영체제: 하드웨어의 사용을 관리하고 조정한다.
- 프로그램: 특정 작업을 수행하도록 설계된 소프트웨어 프로그램
- 사용자: 컴퓨터를 사용하는 이용자
운영체제(Operating System)
운영체제는 사용자와 하드웨어 사이에 동작하는 프로그램이다. 운영체제의 목적은 컴퓨터 하드웨어를 효율적으로 사용할 수 있게 하는 것이다. 사용자 관점에서는 프로그램 구동과 유저 문제를 쉽게 해결하는 것이고, 시스템 관점에서는 자원과 프로그램을 관리하여 효율적으로 컴퓨터를 사용하는 것이다. 따라서 운영체제는 컴퓨터를 편리하게 사용하고, 하드웨어를 효율적인 방법으로 관리한다.
운영체제는 다음과 같이 정의 내릴 수 있다. 운영체제 = 자원 할당자 + 프로그램 관리자 + 커널
- 자원 할당자: 모든 리소스를 관리하고, 자원에 대한 충돌되는 요청 사이에서 효율적이고 공정하게 사용 리소스를 분배한다.
- 프로그램 관리자: 프로그램 실행을 제어, 오류 및 부적절한 사용 방지
- 커널: 컴퓨터 운영 체제의 핵심이 되는 컴퓨터 프로그램으로, 시스템의 모든 것을 완전히 제어
위 사진은 컴퓨터 시스템에서의 조직도이다. CPU와 장치 관리자가 버스를 통해 연결되며 공유 메모리에 접근할 수 있다. 즉, CPU와 장치 관리자는 메모리 사이클을 위해 경쟁한다.
버스: 컴퓨터 구성 요소 간에 데이터를 전송하는 데 사용되는 공통 연결 통로
- CPU는 메인 메모리와 버퍼 사이 데이터를 옮긴다.
- I/O는 장치에서 제어 버퍼로 데이터를 옮긴다.
- 장치 관리자
- 각 장치 관리자는 특정 유형의 장치를 관리하고, 일반적인 버퍼를 갖고 있음
- 장치 관리자는 CPU에게 인터럽트를 발생시킴으로써 작업을 완료했다는 것을 알림
컴퓨터 시스템 작동
부트 스트랩(Bootstrap)은 PC 전원버튼을 누른 직후부터, 운영체제가 메모리에서 동작하기 시작할 때까지의 모든 과정이다. 과정은 다음과 같다.
- 메인 보드에 전력 공급
- 펌웨어1(ROM, EEPROM 등)에 저장된 BIOS2 루틴 시작
- BIOS는 자가 점검(POST3)을 통해 주변 하드웨어를 검사한다.
- MBR(Master Boot Record)에 존재하는 부팅정보를 읽어오는 부트스트랩 실행
- RAM에 Bootloader와 OS(커널) 코드를 복사하여 및 초기화
인터럽트(Interrupts)
인터럽트(Interrupts)는 CPU가 프로그램을 구동 중일 때, 입출력이나 예외 상황이 발생하여 처리가 필요한 경우에 CPU에 신호를 보내는 것이다. 인터럽트는 인터럽트 서비스 루틴(ISR)4으로 제어를 전송하고, 인터럽트에 중단된 명령어 주소를 반드시 인터럽트 벡터5에 저장해야한다.
운영체제가 인터럽트를 처리하는 기본과정은 다음과 같다. 현재 실행 중인 프로그램의 레지스터와 프로그램 카운터를 저장하여 CPU의 상태를 보존한다. 그리고 발생한 인터럽트의 유형을 결정하여, 해당 인터럽트를 처리하기 위한 적절한 핸들러로 제어를 넘긴다.
Interrupt Handling
운영체제는 레지스터와 프로그램 카운터를 저장함으로써 CPU의 상태를 보존한다. 또한, 발생한 인터럽트의 유형을 결정한다.
- 벡터 인터럽트 시스템(Vector Interrupt system): 각각의 인터럽트를 미리 만들어 놓고, 인터럽트가 왔을 때 그 인터럽트에 맞는 미리 만들어 놓은 인터럽트를 찾아 처리하는 방식
- 장점: 인터럽트 처리가 빠름
- 단점: 많은 하드웨어 자원이 필요함
- 폴링 시스템(Polling system): CPU가 주기적으로 각 장치의 상태를 체크하여 어떤 장치가 인터럽트를 요청했는지 확인하는 방식
- 장치의 상태는 핸드 쉐이킹(handshaking), 바쁜 대기(busy waiting)를 통해 결정됨
- 장점: 간단한 구현과 빠른 응답을 제공
- 단점: 자원(CPU) 낭비, 빠른 I/O장치 필요, 짧은 I/O 서비스 루틴 필요
Interrupt Comparison
인터럽트는 외부 인터럽트, 내부 인터럽트가 있다.
External interrupt
비동기, 하드웨어 장치에 의해 발생
Internal interrupt
- Fault
- 문제가 있어서 인터럽트 → 핸들러에 의해서 처리 될 수 있다고 판단되고, 다시 현재의 명령어로 돌아감
- 현재 명령어 → ISR → ISR 전의 명령어로 돌아감
- ex) page fault, divide by zero
- Trap
- 사용자가 의도적으로 발생 시키는 것
- 현재 명령어 → ISR → 트랩된 명령어의 다음 명령어로 돌아감
- ex) system call
- Abort
- 복구할 수 없는 예외 → 복구할 수 없어서 종료
- ISR → 현재 작업을 중단
- ex) 하드웨어 오류
Ref
[1] Operating System Concepts(Silberschatz, Galvin and Gagne)