[면접 대비] 운영체제
댓글 0
댓글을 작성하려면 로그인이 필요합니다.
아직 댓글이 없습니다. 첫 번째 댓글을 작성해보세요.
프로세스는 실행중인 프로그램을 말하며, 독립적인 메모리 공간을 갖기에 코드, 데이터, 힙, 스택을 공유하지 않습니다. 프로세스는 최소 1개의 메인 스레드를 갖고 있습니다.
스레드는 프로세스 내에서 실행 되는 작은 단위의 흐름이며 프로세스 내에서 스택만 따로 할당 받고 나머지 메모리 공간을 공유합니다. 스레드는 메모리를 공유하기에 자원 공유에 효율적이지만 하나의 스레드에 문제가 생기면 나머지 스레드에도 문제가 생기는 단점이 있습니다.
멀티 프로세스는 하나의 프로세스가 죽어도 다른 프로세스에 영향을 끼치지 않고 계속 실행된다는 장점이 있지만 멀티 스레드보다 많은 메모리 공간과 CPU시간을 차지한다는 단점이 있습니다
멀티 스레드는 적은 메모리 공간을 차지하고 context switching 이 빠르다는 장점이 있지만 하나의 스레드에 문제가 생기면 전체 스레드가 영향을 받는 동기화 문제가 있습니다
동시성은 멀티 작업을 위해 싱글 코어에서 여러 개의 스레드가 번갈아 실행하는 것을 말합니다
병렬성은 여러 개의 코어에서 한 개 이상의 쓰레드를 포함하는 각 코어들을 동시에 실행하는 것을 말합니다
다수의 스레드가 공유 데이터에 동시에 접근하는 경우에 상호배제 또는 동기화 기법을 통해 동시성 문제 또는 데드락이 발생하지 않도록 주의해야 합니다
둘 이상의 프로세스들이 자원을 점유한 상태로 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황을 말합니다.
데드락에는 4가지 조건이 있으며 4가지 조건을 모두 만족해야 데드락에 발생했다고 합니다
4가지 조건은
콘보이 현상은 작업 시간이 긴 프로세스가 먼저 큐에 도착해서 다른 프로세스의 실행 시간이 전부 늦줘져 효율성을 떨어뜨리는 현상입니다. FCFS 스케줄링은 비선점형으로 순차적으로 먼저 큐에 들어온 프로세스가 실행되기에 콘보이 현상이 발생할 수 있습니다
선점형은 하나의 프로세스가 다른 프로세스의 CPU를 대신 차지할 수 있고
비선점형은 하나의 프로세스가 CPU를 갖고 있으면 다른 프로세스에서 차지할 수 없는 것을 말합니다
동기는 작업이 순차적으로 진행되는 방식이고 하나의 작업이 끝나야 다른 작업을 수행할 수 있습니다
비동기는 작업의 완료를 기다리지 않고 다음 작업을 수행하는 방식으로 나중에 작업이 끝나면 콜백이나 이벤트 신호를 통해 결과를 받습니다
프로세스 간 공유 자원을 접근하는 데 있어 문제가 발생하지 않도록 한번에 하나의 프로세스만 이용하게끔 보장해줘야 하는 영역을 말합니다
임계 영역 문제를 해결하기 위해선
상호배제 - 하나의 프로세스가 임계 영역에 들어가 있으면 다른 프로세스는 들어갈 수 없다progress - 임계 영역에 들어간 프로세스가 없는 상태에서 들어가려 하는 프로세스가 여러 개라면 무한정 미루지 않고 어느 것이 들어갈지 결정해줘야 한다bounded waiting - 한 프로세스가 임계 영역 진입을 요청했을 때 무한히 기다리지 않도록 진입 횟수에 상한을 두어야 한다→ progress와 bounded waiting의 차이
progress : 임계 영역이 비어있는 데도 아무도 들어가지 못하는 것 (너 먼저 써)
bounded waiting : 임계 영역을 사용하는 차례가 계속 밀려서 할당 받지 못하는 것(내 앞에서 새치기)
뮤텍스는 공유 자원에 대한 접근을 제어하기 위한 상호 배제 기법 중 하나로 lock 을 사용해 하나의 스레드를 단독으로 실행하게 합니다. 뮤텍스는 바이너리 세마포어로 사용합니다.
세마포어는 공유 자원에 대해 동시에 접근 가능한 스레드의 개수를 지정할 수 있습니다. 세마포어 값이 1이면 뮤텍스와 동일한 역할을 하며 2 이상이면 동시에 접근 가능한 스레드의 개수를 의미합니다. 이 방식은 카운팅 세마포어로 사용합니다.
현재 실행중이 아닌 프로세스가 다른 프로세스의 세마포어를 해제할 수 있지만
뮤텍스는 락을 획득한 프로세스가 반드시 그 락을 해제해야합니다
페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시 어떤 페이지 프레임을 선택해 교체할 것인지 결정하는 방법입니다
FIFO : 메모리에 올라온지 가장 오래된 페이지를 교체합니다
Optimal : 앞으로 오랫동안 사용하지 않을 페이지를 교체하는 것 → 미래의 작업에 대해 예측할 수 없으므로 구현이 불가능한 알고리즘, 하지만 학교 수업에서 들었을 때 임베디드 쪽 간단한 운영체제를 사용하는 곳에서는 할 수 있는 작업이 특정 되기에 가능한 경우도 있다고 들었음
그리고 구현이 불가능하지만 배우는 이유는 나머지 알고리즘이 이 알고리즘의 성능에 근접할 경우 그 알고리즘이 좋은 알고리즘이다는 걸 판단할 수 있어서 배우는다고 함
LRU : 가장 오랫동안 사용되지 않은 페이지를 교체하는 것
LFU : 참조 횟수가 가장 적은 수가 가장 적은 페이지 수를 교체하는 것
MFU : 참조 횟수가 가장 많은 페이지를 교체하는 것
LFU와 MFU는 실제 사용에 쓰이지 않음 → 구현에 상당한 비용이 들기 때문이다
멀티 프로세스 환경에서 CPU가 하나의 프로세스를 실행하고 있는 상태에서 인터럽트 요청에 의해 다음 우선순위의 프로세스가 실행되어야 할 때 기존의 프로세스의 상태 또는 레지스터 값을 저장하고 CPU가 다음 프로세스를 수행하도록 새로운 프로세스의 상태 또는 레지스터 값을 교체하는 작업
인터럽트는 프로그램 수행 중 인터럽트가 발생하면 수행중이던 명령을 완료한 후 PC같은 레지스터 정보들을 저장한 후 인터럽트 핸들러를 호출합니다 인터럽트 핸들러가 다 끝나면 다시 원래 수행중이던 프로그램으로 돌아와 아까 저장한 정보를 바탕으로 다음 명령부터 수행합니다
exception은 프로그램 수행 중 exception이 발생하면 수행하던 명령을 멈추고 바로 handler를 호출합니다. 핸들러가 완료되면 다시 멈췄던 명령을 다시 시작합니다
인터럽트와 예외는 모두 프로그램의 정상적인 실행 흐름을 변경시키는 이벤트이지만, 발생 원인에 차이가 있습니다.

우리들의 게임 발매 이야기

안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다


안녕하세요. 플밍 4기 입니다. 게임 개발을 배우기 전 네트워크 엔지니어 도메인에서 익히고 배웠던 네트워크 이론에 대한 기초 입니다. 학습에 도움이 되길 바라며 공유 드립니다.
XR을 활용한 게임 개발 3기(유니티) 수강생입니다. 곧 수료 하지만 앞으로 이곳에 가끔 저의 개발 경험이 나 지식 기록할까 합니다. 더 나아가 이 사이트가 제 개인위키의 역할을 할 수 있으면 좋겠습니다. 한국 게임 시장을 흔들겠습니다
