# 


운영체제가 복잡한 소프트웨어가 되는 대신 이런것을 가능하게 함

프로세스 관리

메모리관리

시스템 보호

스케줄링, 자원관리

system structure

각각 구성요소는 이후 챕터의 한 주제이기도 하다.



# 프로세스


실행중인 상태의 프로그램, 자원할당의 기본 단위



# 여러 프로세스가 실행되기 위해서는 ..


동시에 실행되는 프로세스

멀티프로그래밍 

time sharing (더 짧은 구간에 processor의 sharing이 되는

real-time transaction systems - 은행에서 돈이 일부만 인출되거나 이런건 x, 인출되거나 안되거나 둘중하나만 보장되는걸 transaction systems 이라고 한다. 그것을 여러 사용자가 실행할때 실시간으로 실행할수 있게 하는걸 보장하게 하

timing, synchronization 문제가 발생



# 여러 프로세스가 돌면서 발생하는 문제


다른 프로그램이 실행되면서 넘겨오는 데이터를 기다리던 중, loss or duplication

 - 세마포어

상호배제 실패(failed mutual exclusion)

nondeterminate program operation - 어떤게 먼저 실행되었던건지... 디버깅 어렵

deadlocks - 다른 프로세스가 뭔가 해주길 기다리는, resource allocation 에 문제



# 프로세스의 3가지 component


실행할수 있는 프로그램, 
program에 사용되는 data,
실행상태 - 실행중 프로그램 레지스터의 상태(context)

context - 프로세스의 실체, 내부적으로 사용되는 데이터, 프로세스 레지스터, 우선순위, io 상태

프로그램이 실행될때 이런 정보를 하나의 자료구조에 담고 있다가, 하나에서 다른 프로세스로 cpu로 저장될때 자료구조에 담아서 저장해두고(PCB)

다음 할당받을 프로세스의 정보 (execution context를 가져와서 정보를 채움(수학문제를 푸는 노트가 여러개 있는것과 같다)



# Process Management



현재 실행되는 값을 save 하고 다음 실행될 값들로 채워주고 PC의 값부터 Fetch를 하면 이전 프로그램과 상관없이 실행이 된다.

Timer interrupt에 따라 깨어나서 context switching을 하는것이 process management 의 가장 큰 일

제일 먼저 할 일은 프로그램을 메모리에 읽어들여서 context 포함 자료구조를 만드는 일을 프로세스 생성이라고 함

process management - 프로세서 생성, 문맥교환, 다 실행후 프로세스 없애는것이 가장 중요한 일



# Memory Management



메모리 관리 소프트웨어가 하는 가장 큰 일 - 메모리 할당, 관리

분리하여 침범할수 없도록 protection - process isolation

프로그램이 용도에 따른 4종류 모듈로 구성됨(텍스트 데이터 힙 스택) - 이걸 잘 관리

long-term 메모리 사용 vitrual memory 제공


#



논리적 주소가 실제 메인 메모리의 물리적 주소공간과 상관없이 사용가능하도록 가상적인 주소공간 제공

여러 task가 동시에 돈다는것은 사용자 프로그램이 항상 일정한곳에 로딩되지 않고 다른곳에 로딩된다는것인데 그런 경우에도 수정하지 않고 프로그램이 실행될수 있어야 한다. 물리적 주소가 아닌 논리적 주소로 프로그래밍 할수 있어야. (어셈블리 언어라면 origin이 항상 0이 되도록 os가 도와줘야)



페이징은 고정사이즈의 블럭을 여러개 할당받아서 프로그램을 실행할수 있도록 함

고정된 사이즈의 블럭 - 페이지

프로그램은 페이지들의 모임으로 구성되고, 페이지들의 모임은 여기저기 메모리에 흩어진다. 우리는 0번지 부터 출발해서 연속적으로 메모리에 들어간것처럼 프로그래밍 한다

그런데 흩어져있다면 실제 어디있는지 알수가 없음. 따라서 맵핑 테이블을 갖게 된다. cpu가 논리주소를 물리주소로 변환시켜서 주소버스에 싣게 된다.

program상의 reference는 가상 주소로 할수밖에 없다. 이것은 페이징 시스템상에서 페이지 넘버 + 페이지 넘버 안의 오프셋으로 번역

페이지 넘버는 page frame number 라고 하는 물리 주소로 번역된다. 모든 주소에 대한 맵핑을 가질수는 없으므로



메인 메모리의 덩어리를 page frame, 디스크의 덩어리를 page 라고 한다

프로그램이 0번부터 실행된다고 하자. 처음에는 메인메모리에 들어있지 않으면 가져다가 옮겨놓고 그전부터 있었던 것처럼 fetch

이 논리주소를 물리주소로 번역하는 것은 Memory Management Unit가 한다.



mmu에는 변환 테이블이 유지(논리주소를 물리주소로 변환)

명령을 Fetch 하거나 데이터를 가져올때 mmu를 통해 real memory 버스에 주소가 실리게 된다.

메모리는 주소에 해당되는 정보를 cpu에 주게 되는데, data나 instruction이 없이면 secondary memory에서 가져다 주게 된다. 접근하려는 data가 real memory에 없으면 disk address를 사용하여 가져옴. 가져오면 원래 main memory에 넣고 원래 있었던것처럼 data를 가져온다



#

컴퓨터는 정보보호 기능을 가짐.

모든 정보는 인증을 통해 접근, 원할떄는 항상 가져올수 있고, 타인에 의해 불법접근 되지 않고, 항상 올바른 값을 가져올수 있다.


#

운영체제의 중요한 일중 하나 resource management

다양한 정책에 의해 resource를 할당. process간 공정하게. 빨리해야한다면 빨리, 늦게해도 효율중시한다면 늦게


process management 측면에서 그린 OS




# 다양한 요구에 의해 새로운 OS가 개발됨


대부분 프로세서가 새로 등장하면서 그것에 맞는 OS를 개발하려는 노력들




메모리 관리, 프로세스 관리, IPC 3가지 기능을 커널로 만들고

나머지는 서버로 돌아가도록 한 OS

병렬처리기 때문에 등장, 마이크로커널을 여러 프로세스에 돌리면서 다른 운영체제의 기능을 여러 프로세스에 돌리도록 하는 구조

장점 : 구현이 간단, (서버를 필요한만큼 돌릴수 있기에) 유연성 제공, 병렬처리기 뿐만 아니라 분산환경에서도 돌릴 수 있다.





컴퓨터가 인터넷을 통한 연결이 시작됨, 클라이언트가 서버에 접속시 서비스를 하고있는 프로세스는 새로운 프로세스를 생성해서 서비스를 처리하도록 하고 자신은 새로운 클라이언트를 기다려야 하는 상황 발생

프로세스 생성에 오버헤드가 커서 전체 시스템 성능 저하 발생, 이것을 해결 위해 스레드

스레드 - 프로세스를 리소스와 프로세서와 관련된 부분으로 나눔, 프로세서를 할당받는 단위를 스레드, 이것을 사용해서 context를 관리

이러한 스레드의 모임인 프로세스는 스레드들과 함께 나머지 system resource를 모아놓은걸 의미하게 되었다. 네트워크 프로그래밍 할때 적은 오버헤드로 처리할수 있게 됨



마이크로커널을 개발하게 된 가장 큰 이유가 SMP를 어떻게 운영체제에서 가장 잘 쓸수 있게 해줄것인가...

os를 사용해서 multiple processor를 사용자에게 하나의 프로세서처럼 제공하는것이 목적



SMP의 장점

성능, 가용성, 여러개수의 프로세서를 담은 제품을 만들 수 있다.




전체 실행시간이 멀티프로그래밍에 비해 짧은 장점



# 다른 시도들




분산 운영체제 - 지금의 클라우드 컴퓨터, 클라우드를 하나의 컴퓨터처럼 쓰기 위한 노력

OOP의 장점을 컴퓨터에서 활용 - 윈도우에서 활용



#



virtualization -  하나의 pc나 서버에서 여러 os가 동시에 돌수 있도록

각각의 운영체제가 돌면서 vitural machine을 구성



# 윈도우




하드웨어 추상화 하는 레이어

커널(마이크로 커널)

os 서비스

디바이스 드라이버

그래픽스 시스템 드라이버



유저모드로 돌아가는 process는 4가지로 분류

os에 필수적 기능 제외 나머지는 서버로 돌아간다








# 유닉스







# 리눅스



리눅스는 Monolithic modular kernel. 마이크로 커널은 아님





#


버추얼 머신은 사용자에게 하드웨어 상관없이 동일한 인터페이스를 제공하기에 클라우드 컴퓨팅에 많이 사용된다.