본문 바로가기

[운영체제] 1주차 (1)

Introduction

최상위: Application

그 사이: 운영체제

최하위: Hardware

 

-> 애플리케이션에서의 하드웨어 사용을 편리하게 하는 것이 궁극적인 목적

 

Ex) 파일을 더블클릭하면

① 실제 메모리에 가용 공간이 있는지 확인

② 디스크에서 그 파일이 저장된 위치를 찾음

③ 해당 파일을 메모리에 적재하고

④ 프로세스로 만들어

⑤ CPU에 그 프로세스를 할당해 프로그램을 실행

+ 필요에 따라 디스크IO, 콘솔 입출력 등도 시행

이러한 작업을 OS가 수행함

 

 

Chapter 1

운영체제란 무엇인가?

사용자와 하드웨어 사이에 존재하는 소프트웨어

-> OS의 중요한 역할: 컴퓨터 하드웨어 관리

 

컴퓨터는 3가지 component로 구성된다

- Processing Unit: CPU 등

- I/O System:

- Storage system: 메모리, 디스크 등

 

 

운영체제의 역할

- 컴퓨터 하드웨어 관리

- application program을  실행하기 위한 환경을 제공

 

1) OS is a resource allocator: 하드웨어 자원을 관리한다.

여러 프로세스가 같은 자원을 요청했을 때 누구에게 자원을 할당할 것인가?

 

2) OS is a control program: 컴퓨터를 안전하고 안정적으로 사용할 수 있도록 한다.

-> 사용자가 운영체제의 특정 메모리에 접근해 컴퓨터가 다운되거나

    다른 사용자의 메모리 영역을 침범해 그 컴퓨터 사용에 문제가 생기는 등의 일을 막는다.

 

 

하드웨어는 어떻게 동작하는가?

1) 부팅

① Bootstrap 프로그램(firmware라고도 함) 실행

    메모리나 CPU 등의 component들은 잘 꽂혀 있는지, 메모리에 bad sector는 없는지, ...

    등 기본적인 check- up

② kernel을 로딩한 후 기본적인 초기화 작업

③ 윈도우) 로그인 화면, 운영체제: 비밀번호 입력같은 이벤트 발생까지 그냥 기다림(interrupt)

④ 마우스 클릭, 키보드 입력 등의 이벤트 발생

이벤트 처리를 위한 interrupt service eoutine으로 넘어감

- 메모리에 interrupt vector table 존재해서 interrupt 처리가

  interrupt interrupt 발생 시 그 interrupt를 처리할 수 있는 interrupt service routine의 주소가 저장되어 있다

interrupt 발생 시 그 주소로 넘어감

 

2) Interrupt 처리 방식

- Polling system

주기적으로 특정 device를 확인해서 interrupt를 처리하는 방식

 

- Interrupt vector table

interrupt 발생 시 interrupt vector table을 뒤져서 해당하는 interrupt service routine 호출

interrupt vector table은 메모리 상에 존재하며 interrupt service routine의 주소가 저장되어 있다.

Interrupt service routine 도 소프트웨어다!

 

3) interrupt 발생 시 주소를 반드시 저장해야 한다.

Interrupt service routine 종료 후 중단됐던 작업을 다시 해야 하기 때문에 interrupt 발생 시 주소를 반드시 저장해야 한다. (스택에서 함수 호출 시 복귀 주소랑 비슷한 개념인 듯)

주소와 더불의 현재 상태 (Program counter나 레지스터의 값 등)도 저장한다.

 

4) Interrupt에도 중요도(우선순위)가 있다

더 중요한 Interrupt 처리 시 다른 Interrupt는 diabled하고 중요한 interrupt 처리 후 disabled 해제

Ex) reset: 무슨 작업을 하고 있든 리셋이 우선 -> 리셋은 disable 할 수 없다

 

5) Trap: Software interrupt

0으로 나누는 등 에러 발생 또는 사용자 요청 시 Trap 발생

 

운영체제는 이벤트가 발생하지 않으면 가만히 있는다

-> Interrupt에 대한 reponse에 의해 동작한다.

Interrupt timeline

 

Storage structure

프로그램 실행의 sequence

 

① 프로그램을 메모리에 적재(load)한다.

② 명령어 인출(fetch)

③ 기계어 코드를 decoding한다

④ 필요 시 operand 인출

⑤ 명령어 실행

⑥ 결과를 레지스터에 저장 + 이 과정에서 PC(Program counter) 값 1 증가

이후 ②로 돌아가서 ②~⑥ 반복

 

①: CPU는 메모리에서만 읽어올 수 있으므로 프로그램을 메모리에 올려야 한다.

그런데 메인 메모리는 휘발성인 데다가 다른 프로그램도 쓰다보니 너무 작다.

-> Extension 필요

위로 올라갈수록 빠르고, 비싸고, 휘발성이며 용량이 작다(비싸니까).

 

I/O Structure

- I/O device 와 CPU는 병렬적으로(동시에) 실행할 수 있다.

 

- 모든 I/O 장치는 그 장치를 위한 Device controller를 갖는다.

Disk는 Disk controller를 갖고 Keyboard는 Keyboard controller를 가지며,

그 Controller 안에 여러 register가 존재하며 그들을 목적에 맞게 설정해 실제로 IO장치에 access한다.

 

- Device controller는 OS 내의 Device driver가 제어한다.

 

- I/O device를 사용하기 위해 CPU가 I/O device에 직접 값을 쓰는 게 아니라 Device controller 내에 Local buffer에 값을 쓰고, Device controller가 그 Local buffer로부터 값들을 I/O device에 쓰게 된다.

반대의 경우도 마찬가지. I/O device로부터 Device controller 내의 Local buffer에 쓰고 그 값을 Device controller가 CPU나 메모리로 전달함

 

- Device와 Device controller 사이의 Communication은 Interrupt에 의해 이루어진다.

 

디바이스 제어를 제어한다 = Device controller 내의 Register 값을 통해 제어한다.

 

DMA(Direct Memory Access)

I/O도 interrupt에 의해 동작한다.

 

1Mb/interrupt: 10Mb 데이터 전송을 위해서는 10번의 interrupt 발생

= 10번이나 중단 후 재시작 -> 속도 저하

많은 데이터를 한 번에 보내는 게 조금씩 여러 번 보내는 것보다 유리

 

DMA: CPU의 제어 없이 I/O device에서 많은 양의 데이터를 바로 메모리로 전달

-> interrupt가 byte마다 발생하는 것이 아니라 block마다 발생

원래는 I/O device가 CPU에 interrupt를 걸고 CPU가 I/O device로부터 읽어와서 메모리로 전달

현대 컴퓨터의 작동 방식

 

Symmetric Mutiprocessing Architecture

여러 개의 CPU가 존재하고 각 CPU들은 System bus로 memory와 연결되어 있다.

이 CPU는 독립적인 entity로 존재한다.

 

Multi-core Design

 

Single chip 안에 CPU 코어가 존재하는 구조.

Symmetric Mutiprocessing Architecture에 비해 전력 소모도 적고 더 빠르다.

'강의노트 > 운영체제' 카테고리의 다른 글

[운영체제] 2주차 (3)  (0) 2021.03.14
[운영체제] 2주차 (2)  (0) 2021.03.13
[운영체제] 2주차 (1)  (0) 2021.03.12
[운영체제] 1주차 (3)  (0) 2021.03.08
[운영체제] 1주차 (2)  (0) 2021.03.07