Search

운영체제 개요

컴퓨터 시스템의 기본 구성
컴퓨터 시스템의 4가지 구성요소
컴퓨터 시스템의 기본 구성
컴퓨터 시스템 구성도
시스템과 어플리케이션 프로그램들이 운영체제를 거쳐 컴퓨터 하드웨어에 요청을 하게 된다
운영체제가 요청을 받아 요청을 전달해준다.
운영체제의 정의와 하는 일
유저 프로그램을 구동, 유저 문제 해결을 쉽게 만들어준다
컴퓨터 시스템을 사용하기 쉽게 만들어준다 (시스템 관리 보조)
컴퓨터 하드웨어를 효율적으로 사용할 수 있게 컴퓨터 리소스를 배분
응용 프로그램 개발자에게 추가 서비스를 제공하는 소프트웨어 프레임워크
운영체제 : 커널 + 시스템 프로그램
커널
컴퓨터에서 항상 실행되는 하나의 프로그램
시스템 프로그램
모든 프로그램을 포함
시스템 운영과 관련 있는 응용 프로그램
운영체제리소스 할당의 주체
모든 리소스를 관리
자원에 대한 충돌되는 요청 사이에서 효율적이고 공정하게 사용 리소스 분배
데드락이 발생 시, 잘못된 컨트롤을 하게 되는 현상을 방지
운영체제제어 프로그램
프로그램 실행을 제어, 오류 및 부적절한 사용 방지
컴퓨터 시스템 운영
하나 이상의 CPU, 장치 컨트롤러는 공유된 메모리에 대한 접근을 제공하는 공용 버스를 통해 연결됨
각 장치를 이어주는 신호선을 Bus라고 한다.
1.
Data Bus : 데이터를 실어 나름
2.
Address Bus : 주소를 실어 나름
3.
Control(Command) Bus : 제어 신호를 나름
메모리를 두고 경쟁하는 CPU와 디바이스의 동시 실행
레지스터 (register)
프로세서 내부에 있는 메모리
프로세서가 사용할 데이터 저장
컴퓨터에서 가장 빠른 메모리
레지스터의 종류
용도에 따른 분류 :
전용 레지스터, 범용 레지스터
사용자가 정보 변경 가능 여부에 따른 분류
사용자 가시 레지스터, 사용자 불가시 레지스터(프로그램 카운터, 명령어 레지스터 등)
저장하는 정보의 종류에 따른 분류
데이터 레지스터, 주소 레지스터, 상태 레지스터
시스템 버스 (system bus)
하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로

컴퓨터 시스템의 작동

부트스트랩(Bootstrap, 부팅)
PC의 전원버튼을 누른 직후부터, 운영체제가 메모리에서 동작하기 시작 할 때까지의 모든 과정
1.
메인보드에 전력 공급
2.
CPU가 ROM or EEPROM에 저장된 BIOS 루틴을 시작
3.
BIOS는 셀프테스트를 통해 주변 하드웨어를 체크
4.
MBR(Master Boot Record)에 존재하는 부팅정보를 읽어오는 부트스트랩 실행
5.
휘발성 메모리인 RAM에 Bootloader를 적재. 디스크에 있는 OS(커널) 코드를 복사하여 메모리에 적재 그리고 초기화
ram에 올라간 부트로더 os 커널코드가 실제로 os의 역활(초기화)를 하게 된다.
입출력 장치, CPU는 동시 실행 가능
각 장치 컨트롤러는 특정 디바이스 유형을 담당. 로컬 버퍼 존재
CPU는 메인 메모리 - 로컬 버퍼간 데이터 이동
입출력 I/O는 장치에서 컨트롤러의 로컬 버퍼로 전달
장치 컨트롤러는 인터럽트를 발생시켜 CPU에 작업 완료를 알림

인터럽트

인터럽트가 무엇인지, 발생에 따른 컴퓨터 수행 흐름을 이해
디바이스 드라이버(Device Driver) : 컨트롤러와 커널 사이에 균일한 인터페이스 제공
CPU가 메인 메모리에서 로컬 버퍼로 데이터를 이동 or 로컬 버퍼에서 데이터를 이동
I/O가 컨트롤러의 로컬 버퍼에서 디바이스로 송수신됨
디바이스 컨트롤러가 인터럽트를 발생 → CPU에 작업을 완료했음을 알림.

인터럽트?(Interrupt)

CPU가 프로그램을 구동 중일 때, 입출력이나 예외 상황이 발생하여 처리가 필요한 경우CPU에 인터럽트 신호를 보내는 것
하드웨어 인터럽트
하드웨어가 발생시키는 인터럽트. CPU외의 하드웨어가 CPU에게 신호를 보내야 할 경우 발생
CPU 상, 외부적으로 기능 이상이 발생하였다던지, 아니면 Overflow가 발생을 하였다 ⇒ 인터럽트 발생
소프트웨어 인터럽트
소프트웨어가 발생시키는 인터럽트. 사용자 프로그램이 인터럽트하는 경우 발생. 예외 상황, supervisor call(SVC)
중요한 일이 있을 때 잠깐 멈추고 이것부터 수행 ⇒ 인터럽트
이외에도 내부/외부 인터럽트로도 구분이 된다.
시스템 콜(sys call) 또한 일종의 인터럽트

인터럽트 발생/종료 Flow

1.
기존에 기동되고 있던 유저 프로세스에 인터럽트가 발생(인터럽트 신호 발생)
2.
인터럽트 발생 ⇒ CPU가 수행중인 작업 중지
3.
인터럽트가 시작되는, 지정된 위치로 실행위치 변경
4.
인터럽트 실행
5.
인터럽트 종료 ⇒ CPU는 인터럽트로 이전에 일시 중단되었던 컴퓨팅 재개
(수행 중이던 작업의 복귀 주소를 미리 저장 필요)
인터럽트는 서비스 루틴으로 제어 전송
인터럽트에 의해 중단된 명령어 주소를 반드시 저장
작업 중단 이전 수행하던 작업을 기억하기 위해
인터럽트 서비스 이후, 저장된 복귀 주소(프로세스)를 PC(프로그램 카운터)에 적재. 중단된 컴퓨팅 재개
인터럽트 Timeline
I/O device ⇒ 인터럽트를 발생하게 하는 주체
I/O request가 올 때까지 CPU는 하던 작업을 수행
request 이후 I/O device는 transfering을 수행
I/O device가 transfer done 상태가 되면 CPU에게 인터럽트를 건다.
CPU는 인터럽트를 수행하기 위해 정보를 저장하는 작업을 수행
CPU에서 인터럽트 발생 ⇒ 인터럽트 시그널을 받는다 ⇒ 인터럽트 종료 ⇒ CPU는 원래 적재되어 있던 메모리를 확인 후 원래 하던 프로세스로 돌아간다.
인터럽트 driven 입출력 사이클
인터럽트 driven
driven : 주도권을 갖는다.
인터럽트에 의해서 통제되는 매커니즘을 가지고 있다.
device = I/O controller
1~2. 입출력 발생 시 device가 초기화를 통해 인풋을 가지게 된다.
3.
인터럽트 시그널을 generate함
4.
CPU가 인터럽트를 받아 인터럽트 핸들러에게 제어를 transfer한다
5.
인터럽트 핸들러는 인터럽트로부터 돌아와 데이터를 처리한다
6.
CPU는 인터럽트 종료 후 프로세스를 재개한다
7.
반복
인터럽트 처리 과정
1.
I/O 이벤트 발생
2.
인터럽트 발생
3.
커널 개입 → 프로세스 중단
4.
인터럽트 처리 (interrupt handling)
a.
인터럽트 발생 장소, 원인 파악
b.
프로세서가 인터럽트 서비스 할 것인지 결정
5.
인터럽트 서비스 루틴 호출 (interupt service)