-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
운영체제 면접 질문 정리 #53
Comments
프로세스는 컴퓨터에서 실행 중인 하나의 프로그램을 의미한다. |
멀티 프로세스는 공유자원이 없고 공유를 하고싶다면 IPC를 사용해야합니다. |
멀티 프로세스 환경에서 CPU가 처리 중인 프로세스의 정보를 바꾸는 것을 말합니다. |
뮤텍스는 동기화 대상이 오직 하나일 때 사용, 세마포어는 동기화 대상이 1개 이상일 때 사용합니다. |
기능적으로 하는 일은 같습니다. 서로 다른 프로세스의 상호배제를 위해 사용합니다. |
위의 4가지 조건이 모두 해당될 때 데드락이 발생합니다. |
예방
회피
탐지 회복
|
동기는 동시에 일어난다는 뜻이고, 요청에 따른 결과가 그자리에서 주어진다는 뜻입니다. 따라서 순차적 실행이 보장됩니다. |
비선점형 스케줄링과 선점형 스케줄링으로 나눌 수 있습니다. 비선점형 스케줄링은 실행 중인 프로세스가 종료될 때까지 다른 프로세스를 실행할 수 없음을 의미하고 선점형 스케줄링은 스케줄러가 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있음을 의미하며 |
|
내부 단편화 : 나뉘어져 있는 메모리가 프로세스가 필요로 하는 메모리보다 커서 메모리가 남는 현상을 말합니다. 외부 단편화 : 남아있는 메모리의 크기가 실행하고자 하는 프로세스보다 크지만, 연속적이지 않은 공간에 존재하여 실행하지 못하는 현상을 말합니다. |
페이징 기법은 메모리에 연속으로 할당할 필요가 없어 외부 단편화 문제를 해결할 수 있습니다. 세그멘테이션은 프로세스가 요구하는 메모리 크기에 맞게 할당하기 때문에 내부 단편화는 일어나지 않지만, 페이지드 세그먼테이션은 하나의 세그먼트가 여러 개의 페이지로 구성되도록 2개의 테이블(외부의 세그먼트 테이블, 내부의 페이지 테이블)을 사용한 기법으로, 외부 단편화 문제는 해결할 수 있으나 내부 단편화 문제는 완전히 해결하지는 못합니다. 메모리 풀은 필요한 크기의 메모리를 미리 할당받고, 필요할 때마다 사용하고 반납하는 기법으로 메모리 할당/해제가 자주 일어나는 경우에 적합합니다. 미리 할당해놓은 공간을 사용하기 때문에 할당/해제로 인한 외부 단편화가 발생하지 않고, 필요한 만큼 할당하기 때문에 내부 단편화가 생기지 않습니다. 다만 할당해놓고 사용하지 않는 공간이 메모리 단편화로 생기는 낭비량보다 큰 경우 메모리 누수가 발생합니다. |
|
캐시메모리는 일단 CPU와 RAM의 접근속도차이를 줄이기 위해 사용됩니다. |
커널 모드와 사용자 모드 간에 필요한 정보를 주고받기 위해 호출 하는 함수로 시스템 콜이 호출되면 일시적으로 커널 모드로 전환됩니다. |
동시성은 컨텍스트 스위칭을 통해 여러 일을 번갈아 처리하면서 사용자 입장에서는 정말 동시에 진행되는 것처럼 보이는 것이고, |
스택 오버플로우 : 많은 재귀 호출 힙 오버플로우 : 과도한 동적할당 |
데이터의 일관성이 유지되도록 주의해야 합니다. |
synchronized 메서드에 사용하면 해당 메서드 전체에 대해 객체 락을 걸어 스레드들 간에 동기화가 이루어진다. |
상호배제, 진행, 한정된 대기가 있습니다. 먼저 상호배제 기법(mutual exclusive)�은 어떤 프로세스가 임계 영역에 접근 중일 때 다른 프로세스가 임계 영역에 접근하지 못하게 하는 것을 의미합니다. 대표적으로 뮤텍스와 세마포어가 있습니다. 진행은 임계영역을 실행중인 프로세스가 없을 때 다른 프로세스가 임계영역을 실행하는 것입니다. 마지막으로 한정된 대기는 임게 영역에 접근을 요청했을 때 무한한 시간을 기다리지 않아야한다는 것을 의미합니다. |
멀티 스레드 환경에서 동시에 접근하여 객체를 수정하거나 상태를 변경할 때 발생할 수 있는 문제가 발생합니다. |
비선점형 스케줄링은 실행 중인 프로세스가 종료되기 전까지 다른 프로세스를 실행할 수 없습니다. 하지만 선점형 스케줄링은 실행 중인 프로세스를 중단시키고 다른 프로세스를 실행할 수 있습니다. |
사용자에게 실제 메모리 크기보다 더 큰 메모리가 있는 것처럼 제공합니다. 그래서 갖고 있는 메모리보다 큰 프로세스를 실행할 수도 있고, 여러 프로세스를 동시에 실행할 수도 있게 해줍니다. |
프로세스에서 필요한 페이지만 메모리에 로드하는 방식입니다. 나머지 영역은 디스크에 저장합니다. |
실행흐름의 단위로써 주체가 되기위해 최소필요충분조건으로 스택. 스택에 함수호출이 있으니까 함수를호출할수잇다 -> 독립적인주체다 뭐 그런늬앙스 |
상호배제 기법으로 인하여 2개 이상의 프로세스가 각각 자원을 가지고 있으면서 서로의 자원을 요구하게되어 결국 아무것도 하지못하는 상태를 교착 상태 즉, 데드락 상태라고 합니다. |
FCFS 스케줄리에서 발생하는 현상으로 CPU 버스트가 긴 프로세스 하나가 CPU 버스트가 짧은 여러 개의 프로세스보다 먼저 온 경우 평균 대기 시간이 길어지는 현상을 콘보이 현상이라고 합니다. |
|
생성, 준비, 대기, 실행, 완료 |
동적 할당 해제를 잘 해줘야 합니다. |
공유 메모리는 여러 프로세스에서 접근할 수 있으므로 동기화 문제가 발생할 수 있다. |
멀티 스레드 환경에서 어떤 변수, 함수, 객체에 스레드 여러개가 한번에 접근해도 문제가 없는 환경을 의미합니다. 이를 위해서는 여러가지 조건이 있습니다.
|
Time Slice를 작게 설정하면 컨텍스트 스위칭이 빈번하게 일어나서 오버헤드가 커지는 문제가 발생하고 |
사용자가 직접적으로 하드웨어를 제어한다면 문제가 발생할 수 있기 때문에, 사용자는 시스템 콜을 사용하여 커널의 기능을 사용해야합니다. (도서관 사서 비유) |
디스크 영역에 저장되어 있는 코드를 말합니다. |
시스템 콜 |
메모리 공간이 낭비됩니다. |
최적 적합과 비교해서 설명드리자면, 최적 적합의 경우 분할된 공간에 제일 잘 들어맞는 공간에 프로세스를 할당합니다. 최악적합으로 다시 돌아와서, 최악적합은 프로세스를 할당할 때 메모리의 제일 큰 공간에 할당합니다. |
Process Control Block으로 프로세스 제어 블록이라고 합니다. |
프로세스 동기화란 멀티 스레드, 멀티 프로세스 환경에서 공유 자원에 대한 접근을 조절하여 데이터의 일관성이 유지되도록 하는 것입니다. |
OS에서 핵심이 되는 프로그램입니다. |
좀비 프로세스란, 자식 프로세스가 종료되었지만 부모 프로세스에 의해 회수되지 않고 남겨진 경우, 이 남겨진 자식 프로세스를 의미합니다. 좀비 프로세스가 쌓이면 자원이 낭비될 수 있는데, 추후 reaper process에 의해 회수됩니다. 고아 프로세스란, 부모 프로세스가 자식 프로세스보다 먼저 종료되는 경우 남겨진 자식 프로세스를 의미합니다. 이 때, 고아 프로세스는 부모 PID가 init process의 PID인 1로 바뀌고 (init process에 입양되고), 이후 고아 프로세스의 작업이 종료되는 경우 init process에 의해 회수됩니다. |
우선순위 스케줄링에서 우선 순위가 낮아 cpu를 계속 할당받지 못하는 상태를 말한다. |
프로세스와 스레드의 차이에서 크롬탭이 어떤 것인지 알 수 있습니다. |
페이징
세그먼테이션
분할 방식이 다르다는 차이점이 있습니다. |
동시에 일정 수 이상의 프로그램을 실행했을 때 오히려 CPU 이용률이 떨어지는 상황을 의미합니다. 가상 메모리를 구현하여 다중 프로그래밍을 하면 CPU 이용률이 높아지는데, 일정 수 이상으로 다중 프로그래밍을 할 경우 페이지 폴트가 자주 일어나게 됩니다. 따라서, 디스크 영역에서 필요한 페이지를 스왑 인, 불필요한 페이지를 스왑 아웃하는 작업도 자주하게 되며 페이징이 빈번히 일어나 실질적으로 CPU 이용률이 떨어지게 됩니다. |
Memory Management Unit으로 논리 주소를 물리 조소로 변환해주는 역할을 합니다. 이를 통해 메모리 보호를 할 수 있습니다. |
프로세스와 스레드 차이는 무엇인가요?
컨텍스트 스위칭(Context Switching)에 대해 설명해주세요
뮤텍스와 세마포어에 대해 설명해주세요
데드락 발생조건 4가지 설명해주세요
동기와 비동기의 차이가 무엇인가요?
CPU 스케줄링 종류는 무엇이 있나요?
메모리 구조 및 특성에 대해 설명해주세요 (스택, 힙 등)
내부 단편화와 외부 단편화에 대해 설명해주세요
인터럽트에 대해 설명해주세요
캐시 메모리를 사용하는 이유와 상황 및 응용
시스템콜이란?
동시성과 병렬성의 차이는?
Stack overflow가 생기는 경우와 Heap overflow가 생기는 경우 예시 한가지씩
여러 스레드에서 공유 자원을 접근할 때 주의점은?
synchronized
키워드를 메소드에서 쓰는 것과 block으로 사용하는 것의 차이점임계 영역 문제가 발생하지 않도록 충족해야하는 3가지 조건은?
싱글톤에서 발생할 수 있는 동시성 문제에 대해 설명해주세요
선점형 스케줄링과 비선점형 스케줄링의 차이
가상 메모리의 장점은?
요구 페이징(demand paging)이란?
쓰레드마다 독립적으로 스택영역을 갖는 이유는?
데드락이 무엇인가요?
콘보이 현상(convoy effect)이란 무엇인가요?
인터럽트 발생 시 수행 과정을 간략히 설명해주세요.
프로세스의 상태변화에 대해 설명해주세요.
힙 영역에서 메모리 누수는 어떻게 예방할 수 있을까요?
multi process환경에서 process간에 데이터를 어떻게 주고 받을까요?
Thread-safe에 대해 설명해주세요.
Round Robin 스케줄링 알고리즘을 사용할 때, Time Slice에 따른 trade-off를 설명해주세요.
시스템 콜 필요한 이유는 무엇인가요?
프로그램은 무엇인가요?
사용자 모드에서 커널모드의 자원에 접근할 수 있는 방법이 있나요?
외부조각으로 인해 생겨날 수 있는 문제점이 무엇인가요?
최악적합을 사용하는 이유는 무엇인가요?
PCB가 무엇인지 설명해주세요.
프로세스 동기화가 무엇인지, 동기화 방법에는 무엇이 있는지 설명해주세요.
커널은 무엇인가요?
좀비 프로세스, 고아 프로세스에 대해 설명해주세요.
CPU 스케줄링 알고리즘에서 기아 상태(Starvation)란 무엇인가요?
크롬 브라우저에서 한 탭에 오류가 생기더라도, 다른 탭에 영향을 끼치지 않습니다. 그렇다면 각각의 크롬 탭은 프로세스일까요? 쓰레드일까요?
페이징과 세그먼테이션의 차이점은 무엇일까요?
스레싱이란 무엇인가요?
MMU의 역할을 얘기해주세요.
The text was updated successfully, but these errors were encountered: