The definition of the operating system
Activities of the operating system
운영체제란 ?
컴퓨터 하드웨어를 관리하고 프로그램이 실행되기위한 환경을 제공해주는 소프트웨어이다
- 자원(CPU 시간, 메모리 공간, 파일 저장 공간, 입출력 장치 등) 할당자
- 시스템을 효율적이고 공정하게 운영할 수 있도록 어느 곳에 자원을 할당할지 결정
- 제어 프로그램
- 컴퓨터의 부적절한 사용 방지위해 사용자 프로그램 수행 제어
Interrupt
인터럽트란 프로세스 실행 도중 예기치 않은 상황이 발생할 때 발생한 상황을 처리한 후 실행 중인 작업으로 복귀하는 것을 말한다
- Polling vs Vectored interrupt system
- polling
- 작업이 끝났는지 계속 확인한다.
- interrupt를 보고받지 않고 자신이 지정한 시간에 계속 확인하기 때문에 딜레이가 발생할 수 있다
- 자신의 시간을 보장받는다는 장점이 있다
- vectored interrupt system
- 인터럽트 서비스루틴으로 제어를 이동시키고 (인터럽트 벡터를 통해) 인터럽트 벡터는 인터럽트 서비스루틴의 주소가 포함되어있다
- 인터럽트 루틴은 반드시 현재상태를 저장하고 인터럽트가 끝나면 저장되어 있던 복귀 주소를 PC에 적재하고 중단되었던 연산을 시작한다
- trap : 운영체제에게 소프트웨어 인터럽트를 발생시키는 역할 (에러 or 유저 요청(시스템콜))
- Interrupt Timeline 사진넣기
- context switching
- 지금까지 한 작업을 저장해놓고 인터럽트를 처리한 후 다시 저장했던 작업을 가져오는 작업, 이 시간을 latency (= overhead)
Storage Hierarchy
- process가 접근하는데 걸리는 시간, 비용, 휘발성에 따라 계층구조가 형성된다.
- 어떤 것을 어디에 저장해둘 것인지 policy가 필요하다.
- registers
- process랑 붙어 있음, 접근이 가장 빠르다.
- cache
- register보단 cpu에서 멀리 떨어져 있지만 접근이 상당히 빠르다.
- RAM
- 위의 저장 디바이스는 너무 비싸다.
- 상시적으로 접근하고 싶은 것을 여기에 넣는다.
- 여전히 휘발성 여기까지 모두 휘발성이다.
- Solid-State Disk(SSD): 반도체 디스크
- Hard disk: 자기 디스크
- 전원이 켜져있을 때는 SSD 제어기가 data를 RAM으로 복사하고 전원이 꺼지면 RAM으로부터의 data를 자기 디스크로 복사한다.
Direct Memory Access Structure
- 10bytes를 전달하는데 10번의 interrupt를 걸어준다. 그렇다면 파일 하나 옮기는데 interrupt가 상당히 많을 것이다. 이를 위해 존재 ?
- CPU가 관리할 수 없는 현상이 일어날 수 있다.
- CPU의 완전한 micro kernel 부분을 잃고 효율성을 가지는 것
- 폰 노이만 구조의 문제점을 부드럽게 해결하는 장치
폰 노이만 구조
- 컴퓨터를 효율적으로 설계하기 위해 만듦
- 입력 장치에서 data가 입력되면 제어부, 연산/논리부는 메모리부와 data를 주고받으며 연산을 하고 그 결과를 출력 장치로 보낸다.
- harvard 구조와 경쟁
- harvard 구조와 다르게 복잡성은 줄고 단순하다.
- 단 나누어지지 않고 하나로 되어 있어 폰 노이만 bottle neck(병목 현상)으로 느려질 수 있다.
컴퓨터 시스템 구조
- multiprocessors: 하나의 컴퓨터 안에 CPU를 여러 개 놓는다.
- 컴퓨터를 하나 더 사는 것보단 싸다
- 프로세스 하나가 잘못 되어도 문제가 없다
- Asymmetric
- master process가 생성이 되고 일의 분담 역할을 맡는다.
- 일의 분담을 공평하게 잘한다.
- master에 문제가 생기면 큰 문제가 된다.
- Symmetric
- 해야 할 일들이 어딘가에 담기고 이중에서 골라서 수행한다.
- 어떤 프로세스는 어려운 일만, 어떤 프로세스는 쉬운 일만 가져갈 수 있기에 공평하지 않을 수 있다.
- 프로세스 하나에 문제가 생겨도 큰 문제가 되지 않는다.
- 무엇을 사용해야 할까 ?
- Asymmetric에서 master가 죽으면 일처리가 되지 않는다.
- ?? 어떤 선택을 할래 ??
Symmetric Multiprocessing Archittecture
- 공통된 variable을 갖는다.
- cache coherency(나중에 나옴)의 문제가 생긴다.
A Dual-core Design
- multicore
- 가격적으로 이득(하나에 여러 개가 들어 있어서)
Clustered System
- 멀티프로세스의 구축과 비슷하다.
- Asymmetric clustering
- 은행을 생각하면 된다. 서버가 1개가 있다고 치자, 공격을 받아 서버가 죽었다. 거래가 불가능 -> 은행은 서버를 1개를 더 둔다. 이 서버는 동작하는 서버에게 문제가 없는지만 확인하다 문제가 생기면 자신이 작동하는 방식이다. (hot-standby mode)
- Symmetric clustering
- 여러 개의 컴퓨터들이 각자 여러 개의 일을 한다.
- throughput 측면에서는 이득이다. (일을 안하는 것이 없으므로)
- 여러 개의 컴퓨터가 서로 interconnected고 공통의 storage 공간이 있다. 그래서 cache coherency문제가 생길 수 있다. 다양한 컴퓨터 시스템에 맞추어 OS가 어떻게 취해야 할지 알아야 한다.
Operating System Structure
- 여러 개의 작업을 처리하고 싶기 때문에 필요하다.
- 여러 개의 작업은 Multiprogramming, Timesharing 등이 있다.
- Multiprogramming(Batch Processing)
- 하나의 작업이 끝날 때까지 다음 작업은 수행되지 않고 순차적으로 실행된다.
- 스케쥴링이 job 단위로 이루어진다.
- 이 작업을 먼저, 다른 작업은 나중에 이런식.
- context switching을 적게 하므로 낭비하는 시간이 적다.
- Timesharing(multitasking)
- process가 하나인데 동시에 일을 처리할 수 없다.
- logical extension이다. 실질적으로 멀티태스킹은 아니기에
- 다만, 아주 짧은 시간 동안 여러 일을 왔다갔다 처리하기에 동시에 처리하고 있음을 느끼게 되는 것이다.
- interactive computing
- context switching을 자주하여 낭비하는 시간이 많다.
- CPU기반의 스케쥴링
- swapping: 10개의 process를 동시에 돌리기 위해 메모리에 올려야 하는데 너무 커서 메모리에 올릴 수 없는 경우, 디스크와 메모리 사이를 왔다갔다 하면서 올렸다 뺐다 하는 작업을 말한다. 컴퓨터가 빨라야 한다.
System의 장단점을 파악하고 설계하려는 목적에 맞게 멀티 프로그래밍과 시분할 중 선택해야 한다. 어떤 것이 무조건 좋고 어떤 것이 무조건 나쁜건 없다.
OS operation
- interrupt 기반으로 동작한다.
- Hardware interrupt
- 마우스 입력 등
- OS 입장에서 interrupt 기반으로 Dual mode operation을 한다.
- Dual mode(User mode & kernel mode)
- kernel를 보호하는 측면에서 privileged일 때만, system call을 했을 때만 접근할 수 있게 되어 있다.
System call
- User process가 시스템 콜을 하면 kernel mode로 들어가고 처리 후 kernel mode로 나온다. - kernel mode에서 문제가 생긴다면 ?
- 안전 장치가 있는 편이다.(특정 시간이 지나면 저절로 나오게 한다.)
Process Management
- Program은 disk에 저장되어 있는 passive entity
- Process는 Program의 동적인(active) 형태이다. 즉, 해야 하는 일들
- Process가 끝나면 자원을 가져와야 한다.
program counter
- 다음 수행해야 할 instruction이 무엇인지 명시를 해준다.
- 특히, 멀티 테스킹에서 필요하다. 작업이 어디서 잠깐 중단되었는지 알아야 재개가 가능하다. Multi-thread
- thread들이 동시에 진행되기에 program counter가 여러 개 필요하다.
Process Management Activities
(프로세스 관점에서 OS가 할 일)
- 프로세스 생성, 정지, 재개, 죽음
- 프로세스 동기화를 위해 의사소통을 위한 채널이 필요하고 서로 자원 경쟁이 생겼을 때 진전이 없고 막혔을 때 deadlock이 생길 수 있는데 이를 처리해야 할 필요가 있다.
Memory 관리(메모리 관점에서 OS가 할 일)
- 프로세스를 실행하기 위해 절대 주소로 매핑되고 메모리에 올라와 있어야(적재) 하는데 얼마만큼의 공간을 확보해야 하는지 OS가 관리해야 한다.
- 어떤 프로세스가 메모리 공간에 남아있고 빠져야 하는지 관리해야 한다.
파일 시스템 관리
- 파일은 program과 data를 나타낸다.
- 다수의 사용자가 파일에 접근하려 할 때 누구에 의해서, 어떤 방법으로 파일이 접근되어야 하는가를 통제해야 한다.
Mass-storage 관리
- 컴퓨터 시스템은 반드시 main memory에 내용을 저장하기 위해 보조 저장 장치(secondary storage)를 제공해야 한다.
- 대부분의 프로그램은 주 메모리에 적재될 때까지 디스크에 저장되어 있어 디스크 관리가 중요하다.
- backup
Caching
- 정보가 사용됨에 따라 보다 빠른 장치인 캐시에 일시적으로 복사된다.
- 특정 정보가 필요할 때 먼저 캐시에서 그 정보의 유무를 확인한다.
- 캐시에 존재하면 캐시로부터 직접 사용 - 캐시에 존재하지 않다면 main memory에 정보를 가져와서 사용하고 이 정보를 캐시에 넣는다.(다시 사용될 확률이 높다고 가정)
Data migration
- data를 상위 계층으로 옮기는 것을 말한다. 메모리 계층 구조에 따라 상위 계층으로 data를 옮길 때마다 복사가 일어난다.(높은 계층으로 갈수록 복사본이 여러 곳에 존재)
- 복사를 하는 개념이다보니 상위 계층으로 갈 수록 independent하게 process가 작동하기 때문에 하나의 변수에 작업을 처리한 결과들이 상이할 수 있다.(cache coherency)
I/O subsystem
- 입출력 구조에서 OS가 무엇을 해줘야 하는가?
- spooling - 프린터는 물리적 현상이 일어나기에 느리다. 빠른 -> 느린 장치
Protection and Security (OS는 둘 다 필요)
- Protection
- internal process 간의 경쟁에 대한 보호
- 자원에 대해 program, process, user의 접근을 제어
- ex) 파일의 권한을 특정 프로세스에만 준다. - Security - external attack에 대한 방어
Computing environment
- 모바일 환경은 multi tasking에 대해 덜 까다롭다.
- 각각의 환경에 따라 요구하는 것이 다르고 최적화가 잘 되도록 해야 한다.
- Virtualization
- 가상화 환경 2가지
- 여러 개의 OS가 하나의 HW 위에 있어 자원을 얻고자 경쟁한다. (b)
- 하나의 OS 위에 vmware가 하나의 응용프로그램으로 OS에게 자원을 할당해달라고 요청한다. (a)
- 다수 사용자들이 단일 사용자를 위해 설계된 시스템에서 작업을 수행할 목적으로 쓰이기도 한다.
- Cloud Computing
- 동시에 몇 명이 들어와서 몇 명이 작업할건지 알기 힘들다.
- 계산, 저장장치, 응용 등을 네트워크를 통한 서비스로 제공한다. 예를 들어, 아마존 Elastic Compute Cloud를 통해 아주 큰 크기의 저장장치를 인터넷 상의 누구든 사용이 가능하게 한다.
SaaS(Software as a service)
- 인터넷을 통해 사용 가능한 하나 이상의 응용 프로그램ex) google docs
PaaS(Platform as a service)
- 인터넷을 통해 사용하도록 응용에 맞게 준비된 SW stackex) database 형태를 사용하게 하는 서버
IaaS(Infrastructure as a service)
- 인터넷을 통해 사용 가능한 서버나 저장장치
- 백업 복사본을 만들기 위한 storage로 유지
Real Time Embedded System
- 특정 시간 내에 작업을 수행한다는 보장이 있어야 한다. (Real Time)
- 작은 임베디드 메모리에 OS를 전부 올릴 수는 없다.
요구사항에 따라 OS를 다르게 설계해야 한다.