Monolithic - 필요한 기능을 모두 갖추고 있는 형태

MicroKernel - 그때그때 모듈형태로 덧붙이는 형태

 

Windows OS model : Microkernel or Monolithic kernel?

1. Operating system model : kernel mode and user mode  대부분의 운영체제에서와 마찬가지로 Windows 또한 kernel 모드와 user 모드로 나뉘어진 OS 모델을 갖추고 있다.  kernel 모드는 모든 시스템 메모리와..

bluese05.tistory.com

 

'OS' 카테고리의 다른 글

[OS]퀴즈  (0) 2020.06.20
[OS] 지역성의 원리(Locality)  (0) 2020.06.13
[OS] 가상 메모리(Virtual Memory)  (0) 2020.06.13
[OS] 디바이스 드라이버란  (0) 2020.06.13
[OS] 메모리 관리(Memory Management)  (0) 2020.06.10

<os 구조>

 

os의 역할이 뭐야?

사용자가 컴퓨터의 물리적영역을 알지못해도 쉽게 이용할수 있는 환경을 제공하는 자원추상화

의 기능을 하며, 자원관리자의 기능도 한다.

 

자원공유가 뭐야?

컴퓨팅 시스템에서 CPU가 한개라고 가정하면 모든 프로세스는 1대밖에 없는 CPU를 공유한다. 때문에, CPU를 프로세스가 독점할수도 있고, 대기를 할 수 있는데 이러한 과정에서 프로세스 스케줄링을 필요로 한다

 

멀티프로그래밍 환경이란?

실행가능한 여러 프로세스들이 CPU를 서로 공유하는 환경.

 

시스템콜이 뭐야 ? 

프로그래밍 언어(사용자영역)에서 지원하지않는  기능에 대해 운영체제의 루틴을 호출해 이용하는것

인터럽트가 뭐야 ? 

주변장치와 커널이 통신하는 방식중 하나로, 주변장치가 자신에게 발생한 비동기적 이벤트를 커널에게 알리는 매커니즘

 

링커와 로더의 차이는?

링커는 컴파일러에의해 목적파일로 만들어진것을 실행파일로 만들어주고, 로더는 그 실행프로그램을 실행했을때 메모리에 얹어주는것을 의미함.

 

os구조에서 유저모드영역과 커널모드영역이 나눠져있는 이유?

user application이 중요한 운영체제 데이터에 접근하지 못하게 하기 위함이다.


os구조에서 Monolithic 과 Microkernel의 차이는?

Monolithic 구조는 os의 커널이 시스템상 필요한 모든 기능을 갖추고 있다. 고전 UNIX시스템에 해당한다.

Microkernel 구조에서 Kernel은 Memory 관리, Scheduling, 기본적인 IPC등  최소한의 가장 core한 부분만 담당을 하며, 나머지 처리는 모두 user 영역에서 모듈 형태로 개발하여 덧붙이는 방식이다.   

 

 

 

 

<프로세스와 스레드>


프로세스와 프로그램의 차이가 뭐야?

프로그램은 현재 디스크에 존재하는상태이고 이 프로그램이 메인메모리에 올라와 CPU를통해 실행되는상태를 프로세스라고 한다.

프로세스와 스레드의 차이는?
프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고
쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다.

 

프로세스간 통신방법 종류는?

파이프, 메세지큐, 공유메모리 등


멀티쓰레드환경에서 한쓰레드가 blocked 되면 어떠한 상황이 벌어질까?

쓰레드는 같은 프로세스안에 존재하므로 다른쓰레드도 영향을 받음

 

멀티쓰레드의 장점이 뭐야?

한 프로세스안에서 여러쓰레드를 동시실행하면 응답성이 좋아지고 멀티프로세스처럼 고유의 메모리영역

을 가지는게아닌, 스택을 제외한 자원을 공유하기에 가볍고, 경제성이 좋다.

 

데드락(deadlock)이 뭐야?

어느것도 실행할 수 없는 교착상태

 

데드락의 4대 조건? 

상호배제, 점유와 대기, 비선점, 환형대기


concurrency와 parallelism 차이가 뭐야?

parallelism 은 cpu여러개로 동시에 프로세스들 돌리는것, concurrency는 하나의 cpu로 프로세스를

돌리는것(스케줄링 등)


cpu 스케쥴링이 필요한 이유가 뭐야?

멀티프로그래밍 환경에서 여러프로세스들간의 자원공유를 가능하게 한다.

 

cpu 스케쥴링의 기준은?

cpu의 활용도, 처리량, 소요시간, 대기시간 등



선점형과 비선점형의 차이는?
선점형은 프로세스가 실행되는도중에 CPU를 빼앗는것이 가능. 비선점은 불가능 
cpu스케쥴링 알고리즘에는 어떤것들이있어?


Dispatcher의 역할이 뭐야?
스케줄러가 다음 프로세스를 골라준다면, dispatcher는 실질적으로 CPU에  올려주는 역할을 한다. 

 




<메모리>

 

댕글링 포인터가뭐야?

동적할당과정에서 메모리가 해제된곳을 가리키고있는 포인터 --> 이를 방지하기 위해 메모리 해제이후 반드시 포

인터변수에 NULL로 초기화를 해준다.

 

fregmentation(단편화) 이 뭐야?

메모리 할당에서 프로그램의 크기보다 분할의 크기가 작은경우 외부단편화(외부에서 못들어온다)가, 

분할의 크기가 프로그램의 크기보다 큰경우 내부단편화(내부에서 낭비가 발생한다)가 이루어진다.

 

페이징이란? 

프로세스의 주소공간을 동일한 사이즈의 페이지단위로 나누어 물리적메모리에 불연속적으로 저장하는 방식

 

가상메모리란?

프로세스 전체가 메모리에 적재되지 않고도 실행이 가능 하도록 하는 기법.

 

요구페이징이뭐야?

프로세스의 실행시 프로세스를 구성하는 모든 페이지를 메모리에 올리는것이 아닌, 필요한 부분만

올리는 것

 

페이지 부재가 뭐야?

CPU가 참조하려는  페이지가 현재 메모리에 올라와있지 않은 상태-->페이지 교체 필요

 

locality란?

CPU가 메모리내의 정보를 균일하게 참조하는것이 아닌,최근에 참조된 페이지가 가까운 미래에 참조될 가능성

이 높은것을 의미한다.

 

쓰레싱이란?

페이지 부재율이 높아, CPU의 이용률(성능)이 저하되는 현상

 

워킹셋알고리즘이란?

페이지 부재가 발생함에 따라 페이지 수를 늘렸다가,  적게 발생하면 적게 할당하는 일종의 동적인 프레임  할당이다.

 

 

셤공부하면서 머릿속에 든거 정리한거...

'OS' 카테고리의 다른 글

[OS]Kernel - Monolithic kernel, Microkernel  (0) 2020.06.21
[OS] 지역성의 원리(Locality)  (0) 2020.06.13
[OS] 가상 메모리(Virtual Memory)  (0) 2020.06.13
[OS] 디바이스 드라이버란  (0) 2020.06.13
[OS] 메모리 관리(Memory Management)  (0) 2020.06.10

메모리에서 지역성이란 ? 메모리에 어떤 곳에 프로그램의 일부를 둘 것인지도 관건이다. CPU는 메모리의 어떤 위치에서 값들을 가져오는데 그 해당하는 내용이 메모리에 없다면 다시 하드디스크로부터 해당하는 파일의 일부를 메모리로 불러 들여야 한다. 그래서 Hit율이라는 말이 있다고 하였는데, Hit가 잘되어야 성능이 좋을텐데, 그렇다면 어떤 값들이 더 사용되어질 것인가에 대한 예측이 필요하다. 이것이 최근에 사용했던 메모리를 그리고 해당 메모리 인근을 접근할 가능성이 높다는 의미에서 지역성이라고 표현을 한다

 

 

참조의 지역성과 Quicksort vs Mergesort

참조의 지역성과 메모리의 특성에 대해서 이해한다.

velog.io

 

'OS' 카테고리의 다른 글

[OS]Kernel - Monolithic kernel, Microkernel  (0) 2020.06.21
[OS]퀴즈  (0) 2020.06.20
[OS] 가상 메모리(Virtual Memory)  (0) 2020.06.13
[OS] 디바이스 드라이버란  (0) 2020.06.13
[OS] 메모리 관리(Memory Management)  (0) 2020.06.10

가상메모리 <-> 물리적메모리(메인메모리)

 

 

운영체제 - 가상 메모리 개념

프로세스와 메모리   모든 프로세스는 자신만의 가상 주소 공간을 가지고 있다. 모든 프로세스들은 자신만의 주소 공간을 가지기 때문에, 특정 프로세스 내에서 쓰레드가 수행될 때 해당 쓰레��

velog.io

 

'OS' 카테고리의 다른 글

[OS]퀴즈  (0) 2020.06.20
[OS] 지역성의 원리(Locality)  (0) 2020.06.13
[OS] 디바이스 드라이버란  (0) 2020.06.13
[OS] 메모리 관리(Memory Management)  (0) 2020.06.10
[OS] CPU 스케줄링(CPU Scheduling)  (0) 2020.06.07

 

 

리눅스 커널 (2.4) 모듈 프로그래밍

#include #include #include MODULE_LICENSE("GPL"); MODULE_AUTHOR("yundream@joinc.co.kr"); static short int myshort = 1; static int myint = 420; static long int mylong = 9999; static char *mystring = "blah"; MODULE_PARM (myshort, "h"); MODULE_PARM (myint, "i

www.joinc.co.kr

 

프로세스가 실행되기 위해서는 해당 프로그램이 물리적 메모리에 적재되어 있어야 한다.

하지만 프로세스는 물리적 메모리가 적재되어있는 주소 외에 별도로 논리적주소, 혹은 가상주소를 가지고 있는데 어떻게 논리적 주소가 물리적주소와 매핑(mapping)되고 또 물리적메모리를 어떻게 할당하는지도 알아보자.

 

먼저 메모리에 적재되는 물리적 메모리리의 주소와 프로세스의 논리적주소를 연결시켜주는 작업을 

주소 바인딩(address binding) 이라고 한다. 

주소바인딩은 프로그램이 적재되는 물리적 메모리의 주소가 언제 결정되느냐에 따라 세가지로 분류할 수 있다.

먼저, 물리적 메모리 주소가 프로그램을 컴파일할 때에 결정되는 주소 바인딩방식을 컴파일타임 바인딩(Compile time binding) 이라고한다. 프로그램이 절대주소로 적재된다는 뜻에서 절대코드를 생성하는 바인딩 방식이라고도 한다.

다만 프로그램이 올라가있는 물리적 메모리의 위치를 변경하고자 할때는 컴파일을 다시해야한다는 수고가 발생한다.

 

두번째로 프로그램의 실행이 시작될때에 물리적 메모리주소가 결정되는 주소 바인딩 방식을 로드타임 바인딩(Load time binding) 이라고 한다. 이방식에는 로더의 책임하에 물리적 메모리 주소가 부여되며  프로그램이 종료될때까지 물리적 메모리상의 위치가 고정된다.

로더란 사용자 프로그램을 메모리에 적재시키는 프로그램을 말한다.

로드타임 바인딩은 컴파일러가 재배치 가능 코드를 생성한 경우에 가능한 주소 바인딩 방식이다.

 

세번째로 실행시간 바인딩(Execution time binding)은 프로그램이 실행을 한 후에도 물리적 메모리 상의 주소가 변경될 수 있는 방식이다.

이 방식에서는 CPU가 주소를 참조할 때마다 해당 데이터가 물리적 메모리의 어느 위치에 존재하는지 주소 매핑 테이블을 이용해 바인딩을 점검해야한다. 또 기준레시스터와 한계레지스터를 포함해 MNU(Memory Management Unit)의 지원이 뒷받침 되어야한다.

 

 

 

 

 

 

 

<물리적 메모리의 할당 방식>

 

물리적 메모리는 운영체제의 영역과 사용자 프로세스의 영역으로 나뉜다. 그중, 우리가 살펴봐야 할것은 사용자 프로세스 영역에서, 어떻게 프로세스가 메모리에 올라가는지, 그 관리기법에 대해 알아보자.

 

 

Memory Allocation 방식

 

연속 할당 방식은 프로세스를 물리적 메모리의 연속적 공간에 올리는 방식이다.

연속할당방식에서는 물리적 메모리를 분할하여 하나의 분할에 하나의 프로세스가 적재되도록 한다.

 

또 이때 분할방식에 따라 고정분할방식과 가변분할방식이 있는데, 고정분할방식을 사용하면 프로세스크기가 분할된 크기보다 크거나 작을때 조각이 발생한다. 따라서 공간의 낭비가 발생되는 것이다.

 이에 비해 가변분할방식은 적어도 내부조각(프로세스크기가 분할크기보다 작아서 생기는 조각)은 발생하지 않지만, 프로세스를 메모리에 올릴때 여러 공간들중 할당을 해야하는 문제가 발생한다(dynamic storage-allocation problem).

 

따라서 가장 최적의 방법으로는 가용공간을 살펴보며 프로세스와 가장 가까운 크기의 분할공간을 채택하는 최적 적합 방법이 효과적이나 경우에따라 가용공간중 먼저찾아지는 최초 적합 방법을 따르기도한다.

 

불연속 할당 기법에는 프로세스가 물리적 메모리의 여러위치에 분산되어 올라갈 수 있는 메모리 관리 기법이다.

페이징 기법, 세그먼테이션 기법, 두가지를 혼용하는 페이지드 세그먼테이션 기법이 존재한다.

 

 

 

 

 

운영체제 - 메모리 관리

메모리 주소 바인딩 > 프로세스가 실행되기 위해서는 프로그램이 물리적 메모리에 적재되어 있어야 한다. 또한, cpu가 기계어 명령을 수행하기 위해 논리적 주소를 통해 메모리 참조를 하게 되면

velog.io