Operating System - OS기초와 CPU Virtualization(1)

2022. 11. 23. 03:21수업/운영체제

어플리케이션 소프트웨어

: 고급언어로 작성된

--> 고급 언어가 low-level language

--> 하드웨어에서 알아먹을 있게

 

시스템 소프트웨어

: 컴파일러 --> HLL코드(High level language코드) 기계어로

--> Operating system : 하드웨어 관리를 추상화 --> 입출력관리 / 메모리와 스토리지 관리 / task 스케쥴링과 리소스할당

 

, OS 시스템 소프트웨어의 일종

 

인터페이스?

유저가 사용하는 대상 내부 디테일을 몰라도 쉽게 사용할 있도록 연결시켜주는

--> OS 하드웨어를 모름에도 불구하고 메모리 관리등을 가능하게 하기에 인터페이스라고 있다

 

OS 가지 관점

--> 하드웨어 자원을 효율적으로 관리 --> 1. 성능 최대화

--> 하드웨어 자원을 공정히 배분 --> 2. 사용자 경험 보장

 

OS 종류

1. 얼마나 많은 수의 유저가 동시에 사용가능한가에 따라

: single user system / multi user system

 

single user system

: 오직 동시에 유저만이 컴퓨터 시스템에 접근가능

--> 심플하지만 성능이 제한 / MS-DOS, Windows, Mac OS

 

multi user system

: 동시에 여러명의 유저가 컴퓨터 시스템에 접근 가능

--> 복잡하다 / 각각의 task 대한 스케쥴링이 필요 / 유저들 보호와 인증관리가 필요 / 전체 성능을 향상시킬 있음 / Unix, Mainframe, WIndows NT, Linux

 

 

2. 얼마나 많은 수의 task 동시에 수행될 있는지에 따라

: single tasking system / multi tasking system

 

single tasking system

: 동시에 오직 프로그램이나 어플리케이션만 실행 가능 / MS-DOS, Windows cmd

 

multi tasking system

: 동시에 복수의 어플리케이션이나 프로그램이 실행 가능 / 현재 OS-Linux, Unix, windows,,

오픈소스 시스템 / closed source 시스템

오픈소스

: 비용없는 소프트웨어 / 소스코드 변경에 아무런 제한을 두지않음 / 소스코드는 오픈되어있음

 

클로즈소스

: 비용 내고 사용하는 소프트웨어 / 소스코드가 변하지 않음, 그렇기에 안전

 

1. Monolithic Kernel

: OS 필요한 모든 기능들이 하나의 커널로 구성된 커널 / 규모가 크고 단일 프로세스가 단일 주소에서 / 커널 주소 공간에서 모든 커널 서비스가 존재하고 사용된다 / 컴포넌트는 효율적으로 소통(빠름) / disk driver 추가, 삭제가 어렵고 유지 어려움(크기 때문에) / ex. Unix, Linux

 

2. Micro Kernel

: 가장 필요한 것들만 넣고 나머지 것들을 모듈화시켜 OS위에 올려 있게 / 프로세스로 세분화하는데 이를 서버라 / 모든 서버는 개별적이고 다른 공간에서 구동 / 서버는 IPC 통해 호출 / ex. Mac OS X, Windows NT / MINIX

 

3. Hybrid Kernel

운영체제의 역사

 

1. serial processing ~ 1950s

: 하드웨어가 비싸고, 인력은 저렴했던 시기 / 목표 : 하드웨어를 좀더 효율적으로 사용하자 / 이때는 운영체제라고 것이 없었다 / 기계어로 프로그램들 - 프로그램은 컴퓨터 사용에 필요한 모든 것들을 포함하고 있어야 했다 - 콘솔당 유저, 디버깅은 오프라인에서 / 느린 업무 순서전환

 

2. batch processing ~ 1960s

: 모든 프로그램들과 데이터를 batch 단위로 묶고, 프로세스를 구동시키려 시도 - JCL(Job Control Language) 하는 특별한 프로그래밍 언어 사용, setup takedown 시간을 줄임으로써 cpu 이용률을 향상 / 예로 모니터는 심플 스케쥴러 역할 - Memory protection, timer, instructions, interrup 포함 / 메모리와 프로세스 시간이라는 두가지 / 하지만 아직 하나의 업무만 처리 - 그래서 이용률이 때로 여전히 나빴음

 

파일에서 레코드를 읽어옴 - 15마이크로초

이에 따라 프로세서가 100가지 동작을 수행 - 1마이크로초

파일에 레코드를 - 15마이크로초

--> cpu 이용률?(사용률 utilization) = 1 / 31 = 0.032 = 3.2%

--> cpu 실제 작동 시간

 

하지만 이러한 batch processing 하면서 I/O 요청이 들어오면 cpu 작동시간이 줄어든다는

이를 해결하기 위해? 1. 제거하거나 2. 겹쳐서 동시에 수행하거나

그래서 처럼 I/O 요청에 따른 시간을 겹쳐서 동시에 다른 작업을 cpu 수행하고 있는 Multiprogramming batch processing 등장(이러한 multi programming 반대되게, 하나가 끝나야 하나를 처리하는 것을 unit programming이라 한다)

 

3. Multiprogramming batch processing 1960 ~ 1970s

: 여러 유저가 시스템을 공유 - 프로세서가 job switch 통해서 복수의 batch 프로그램들을 동시에 수행하려 / 고비용의 I/O 오버랩하여 cpu utilization 극대화 / 메모리 보호와 재배치 / 동시 프로그래밍 필요 / 여러 기준에 따라 job scheduler job 구동

I/O 타입

- Synchronous I/O(동기 I/O)

: I/O 시작되면, I/O 요청이 끝날 까지 기다림 / CPU I/O 관리하여 다른 연산 수행 불가

 

- Asynchronous I/O(비동기 I/O)

: IO 시작되면, I/O 요청이 들어가는데 하드웨어가 I/O 제어할 있어 CPU I/O 관리하지 않아 미뤄두었다 처리가능

Base/bound register

: 메모리 주소관리와 연관,

이런 상황에서 3000 base register 가지는 부분에 무언가를 쓴다?

--> OS 거부, 다른 job들이 참견 하지 못하게

--> Relocation + base/bound register 알고 있기

 

4. Time-sharing processing 1970 ~ 1980s

: Batch-multiprogramming system 확장시켜 cpu 여러 job들의 switch 자주 실행해서 다수의 유저들이 기다림 없이 처리가 가능해져 사용자 경험이 좋아져 interactive 컴퓨팅 가능 / 시스템 시간은 interrupt 생성 - 어떠한 시간이 되면 다른 job으로 넘어가는 time slicing -- Job & process scheduling(round-robin) / 만약 프로세스가 메모리에 맞지 않는다면 부분적으로 실행(Virtual memory and disk management)

Real time system

--> deadline, 보장된 시간하에 프로그램을 수행하는

--> Hard real-time system / Soft real-time system

--> Hard real-time system : 데드라인을 보장함, 아니면 위협이 잇따르는 프로그램에

--> Soft real-time system : 안지키면 재앙수준은 아니고 짜증정도 - 사용자 경험(Qos-Quality of Service) 해가 되는 정도서 -- if QoS 99% 100 99 정도는 deadline 준수하지만 번은 못할 있는

 

운영체제의 주요 특징

: Virtualization / Concurrency / Persistence

 

CPU Virtualization

: 물리적으로 cpu 1개로 제한되어 있지만 논리적인 기법을 통해 cpu 무한개 있는 처럼 느끼게 해주는 illusion 제공하는

--> phisycal cpu 한개 지만 logical cpu 무한 인것 처럼

 

Memory Virtualization

: 제한된 메모리를 무한대의 용량인 처럼 느끼게 하는 illusion 제공하는 --> cpu 소통하기 위해서는 메모리에 프로세스가 올라가있어야 하는데 용량이 제한되기에 중요부분만 올려쓰면서 virtualization 가능

--> cpu 메모리를 인식하는 것은 바이트의 배열로 (physical memory)

 

Concurrency

: 수행 순서에 따라 process A process B 값이 달라질 있는데, 이러한 부분을 어떻게 보호할

Persistence

: DRAM같은 디바이스들은 값을 저장하는데 취약할

--> 어떻게 일관성을 가지느냐

 

컴퓨터 시스템의 전체요약

Computer system - mode bit

: CPU 모드를 저장하는 역할의 레지스터

--> 가지 모드 존재

Mode bit 0일때 --> 커널모드

Mode bit 1일때 --> 유저모드

 

(1) Kernel mode

: cpu 대한 권한을 OS 갖고 있는 모드 --> 대개 하드웨어 resource 관련된 제어를 커널모드 --> 시스템 보호 위함 --> 하드웨어 디테일을 모르는 유저에게 맡기지 않고 보호하기 위해

 

(2) User mode

: cpu 대한 권한을 유저가 갖고 있는 모드로서, cpu에서 유저 프로그램이 돈다

--> cpu제어에 대한 전문성이 떨어져 문제일으킬 있음,

--> 시스템 ? OS 정해둔 경로로 유저가 접근할 있도록 하는

--> Interrupt system call 발생 mode bit 1(유저모드)에서 0(커널모드) 변경

 

dualmode?

--> OS스스로 보호, 혹은 시스템 컴포넌트 보호를 위해

 

Computer system - Timer

: 특정 주기로 cpu interrupt 거는

--> Timer에서 정한 주기인 time slice 번이 끝나면 프로그램이 아닌 다음 프로그램에 CPU권한 부여 --> mode bit 변경함(유저모드 - interrupt 커널모드 - 다시 유저모드)

I/O device controller

: 인풋 아웃풋 버스를 가지고 있는 하드웨어 유닛으로, 컴퓨터와 I/O디바이스 인터페이스가 된다

--> I/O device 작은 타입의 cpu 가지고 있다 --> device controller local buffer

--> I/O device 작은 컴퓨터라 한다면, 이를 구동시키기 위한 프로그램이 필요, device driver 그것 --> 컴퓨터 시스템 구동위한 작은 형태의 OS

 

Asynchronous Exception: Interrupt

: 프로세서의 interrupt pin에서 / 예기치 않게 작동 / 다음 동작을 수행 / ex. Timer Interrupt , I/O interrupt from external device

 

Synchronous Exception

: 어떠한 동작 이후의 결과로서 야기되는 이벤트, cpu 스스로 발동시킴

--> Traps / Faults / Aborts

Traps?

--> 유저가 의도한

--> ex. 시스템

--> 다음 동작을 수행

 

Faults?

--> 의도치 않은 실수, 하지만 회복가능

--> ex. page faults --> 더하기 연산서 데이터가 메모리 없어 멈추고, 이후 OS 도움을 받아 데이터 도착하면 미처 못했던 연산 수행

--> 이전에 미처 끝내지 못한 명령을 재수행(현재 명령 재수행)

 

Aborts?

--> 의도치 않은 실수, 복구 불가

--> 현재 프로그램을 멈추는 방법밖에 없다

  

레지스터 - pc, psw

pc : cpu 처리해야 명령어가 있는 주소를 가짐

psw : mode bit - 여기선 1 상태(유저모드 - 우리가 프로그램 수행중)

--> cpu 항상 Interrupt line에서 신호가 오는지 체크

--> I/O 디바이스는 각각 넘버를 갖고 있기에 cpu 어디서 interrupt 신호 오는지 확인 가능

--> 해당 예제에선 14 --> 이렇게 interrupt 떴으니 os 모드를 가지기에 psw 0으로 변화

--> 14번에 들어가면 솔루션 코드가 번에 있는지 가리키는 exception table 이동

--> 456번에 가면 pc 456으로(수행해야 하므로)

--> 수행 끝난 ? 다음문장 실행(interrupt)

--> 다시 유저모드로 - psw 1, pc 1004 변경

 

context

: 어떤 명령어를 수행하기 위해 필요한 레지스터 명령어(프로세스 수행위해 중단되었던 부터 필요한 정보나 시행시 필요한 정보)

 

context switch

: 프로세스를 멈추고 재수행 하기 위해선 현재 context 저장해두고, 다음에 수행해야 프로세스의 저장해둔 context 다시 불러옴 --> 그러니, exception 일어나면 context switch OS 수행

--> time sharing 에서 time slice너무 짧게 잡으면 비효율적으로 있는 근거

 

DMA(Direct Memory Access)

: CPU DMA 직접 소통

--> 만약 cpu 있다면(DMA 없다면) 연산 출력을 위해 버스에 데이터를 직접 CPU 데이터를 태워야 하는데 DMA 있다면 거기 접근해서 명령만 하면

--> DMA cpu 수행동작 없이도 memory 소통가능케(데이터 이동) 해준다

--> 고로 DMA 사용하면 cpu 수행할 있는 연산시간이 늘어나는 이점

 

Operation mode - 수행모드 종류

--> Burst / Cycle steal / Transparent

--> Burst : DMA 여러 사이클을 cpu 부터 전달받아 사용

--> Cycle steal : cpu 사이클씩 돌아가면서 system bus 사용(소량만 옮길 있음)

--> transparent : cpu 아예 system bus사용하지 않을 때만 사용

 

DMA

장점 : 성능 뛰어남

단점 : 하드웨어 추가해야한다는 비용추가의 단점

 

Bus

노스브릿지 : cpu, dram, 그래픽카드와 같이 상대적으로 빠른 처리(비싼)것들을 빠른 버스로 연결할 사용

사우스브릿지 : usb 외부장치같은 상대적으로 느린 처리(저렴)것들은 느린 버스로 연결할 사용