CS/운영체제

CH1) Introduction

코딩하는 포메라니안 2021. 8. 31. 23:58

1. OS란?

- (user)소프트웨어와 하드웨어 사이에서 연결을 도와주는 소프트웨어

- 하드웨어를 관리하는 소프트웨어

- kernel + system programs으로 구성되지만, 여기서 핵심은 "KERNEL"

*system program : 운영체제를 설치하면 메모장, 날씨 프로그램 등이 기본으로 설치되어 있음

 

장점

- 개발자가 사용하기 쉽게 인터페이스(system call)을 제공

- hardware를 효율적으로 쓸 수 있게 해준다.

    ex) 자원 분배(메모리 등, 충돌나는 요청 처리), 자원 보호

 

 

 

2. Computer 작동

1. Start-up : 시작하기

1) bootstrap program이 OS를 실행

          - ROM 혹은 EEROM에 저장되어 있는 프로그램

          - OS의 kernel을 load & start

2) kernel이 실행되는 동안 background에서 System daemons를 작동시킨다.

          - 제일 처음 시작되는 프로세스

 

2. Interrupt

- CPU가 하던 일을 멈추고, interrupt handler(OS에 주소 값이 있음)를 수행

 

1) H/W interrupts

- timer, keyboard, mouse 등 CPU 외부 장치들로 부터 요구된다.

 

2) S/W interrupts

- system call

- CPU 내부에서 실행 프로그램의 오류나 이벤트를 알리기 위해 발생시킨다.

ex) 0으로 나누기 => 실행 멈추고 handler로

 

 

 

3. Storage 구조

- 프로그램을 실행시키기 위해서는 disk => 메모리(RAM)에 load해야 한다.

 

1. Von Neumann 구조

- CPU와 단일 채널 memory

- 즉, instruction과 data가 같은 memory에 저장되어 있다.

 

 

<=> Havard 구조 : instruction용 data용 memory가 따로!

 

 

2. Secondary storage 구조

- Primary memory는 크기가 작고, 컴퓨터를 끄면 data가 없어진다.

- hard disk를 쓰자

*요즘엔 NVRAM이 있음 : 컴퓨터를 꺼도 data가 휘발되지 않도록 저장

 

 

 

4. I/O 구조

1. Device driver란?

 세상에는 여러 회사에서 제작하는 다양한 device들이 존재한다. 이렇게 다양한 device에 모두 서비스 가능하도록 OS에 Device driver를 세팅하며, 이는 device 만드는 측에서 제공한다.

 

2. Device controller란?

 device 안의 작은 컴퓨터라고 생각하면 된다. Device driver와 데이터를 주고받는다.

 

 

 

 

5. 컴퓨터 시스템

1. CPU 개수에 따른 분류

1) Single - processor System

 

2) Multiprocessor System

- CPU 자체 성능을 향상시키기 어려우니 여러 개를 써서 성능을 높임

- CPU가 N개라고 성능이 N배가 되지 않는다. 이유는 CPU가 많을수록 CPU끼리 통신하는 데에 시간이 많이 걸린다.

 

 

2. CPU 구조에 따른 분류

1) Asymmetric multiprocessing (비대칭)

- Master와 slave 구조 : master CPU가 slave CPU에게 명령 내리는 구조

 

2) Symmetric multiprocessing (SMP)

- 모든 CPU가 동등한 위치

- 칩 안에 core 1개

 

3) Multicore System

- 하나의 칩 안에 core가 여러 개

- 2번 구조에 비해, CPU 간에 소통할 때 속도가 빠르다.

 

 

 

6. OS가 하는 일

1. Multi-programming

- 메모리에 여러 일들을 올린다.

- Job pool : 실행되지 않은 job들의 대기소

- Job switching : 다음 일을 switch해서 실행

 

2. Time sharing (= multitasking)

- 여러 일을 정한 시간마다 바꿔가면서 동시에 처리하도록 한다.

 

3. Process 관리

- 프로세스 = 프로그램이 메모리에 올라와서 실행 중인 상태

- 프로그램 + state 정보(실행 중인 위치 등)를 관리

 

4. Job scheduling

- 어떤 일을 job queue(pool)에서 메모리에 올리고 내릴지 결정한다.

 

5. Memory 관리

- 이 데이터는 메모리 어디에 올릴 것인가를 결정

 

+) OS는 software interrupt를 처리하는 게 주된 일이다.

= User mode(OS가 아닌 일반 프로그램이 실행)에서 system call이 오면 Kernel mode로 전환되어 OS가 작동

 

 

 

 

'CS > 운영체제' 카테고리의 다른 글

CH4) Threads  (0) 2021.09.12
CH3) Process  (0) 2021.09.05
CH2) Operating System Structure  (0) 2021.09.01