티스토리 뷰
운영체제 퀴즈
1. 프로세스의 스케줄링 알고리즘 아는 것 설명해주세요
- First Come First Served(FCFS)
- Shortest Job First (SJF)
- Round Robin(RR)
- Shortest Remaining Time First (SRTF)
- Multilevel Feedback Queue(다중 레벨 피드백 큐)
2. 프로세스와 쓰레드의 차이에 대해 설명해주세요
프로세스란, 실행중에 있는 프로그램으로 독립적이다. 그래서 ( 코드, 데이터, 스택, 힙 ) 메모리 영역을 다른 프로세스와 공유하지 않는다. 프로세스는 최소 하나의 쓰레드를 갖고 있다.
스레드란, 프로세스 안에서 스택만 따로 할당 받고 나머지 영역은 공유를 하기에 자원의 생성과 관리가 중복되는 것을 줄일 수 있다. 프로세스가 할당 받은 자원을 사용한다.
3.경쟁 상태를 해결할 수 있는 3가지 개념적 방법이 무엇인가요
- 임계 영역 : 여러 프로스세가 동시에 공유해서 사용하면 안 되는 자원에 접근하고 실행하는 프로그램의 코드 부분 임계 영역이 문제가 발생하지 않도록 만족해야 하는 조건
- 상호배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없다.
- 한정대기 : 특정 프로세스가 임계 영역 진입을 요청한 후 해당 요청이 승인되기 전까지 다른 프로세스가 임계영역에 진입하는 횟수를 제한 하는 것이다. 이를 통해 특정 프로세스가 영원히 임계영역에 들어가지 못하게 하는 것을 방지한다.
- 진행의 융통성 : 어떠한 프로세스도 임계 영역을 사용하지 않는다면, 임계 영역 외부의 어떠한 프로세스도 들어갈 수 있으며 이 때 프로세스끼리 서로 방해하지 않는 것을 말한다.
4. 경쟁상태의 해결책에 대해 설명해주세요
경쟁 상태를 해소 하기 위해서는 공유 메모리를 쓰는 프로세스/스레드 간 동기화 가 필요한데 뮤택스와 세마포어가 있다.
가장 큰 차이점은 동기화 대상의 개수입니다. Mutex는 동기화 대상이 오직 1개 일 때 사용하고, Semaphore는 동기화 대상이 1개 이상일 때 사용합니다.
세마포어는 뮤텍스가 될수 있지만, 뮤텍스는 세마포어가 될 수 없습니다. 뮤텍스는 0과 1로 이루어진 이진상태를 가지므로 Binary Semaphore라고도 합니다.
뮤텍스는 자원 소유 가능 + 책임을 가지는 반면, 세마포어는 자원 소유가 불가합니다. 뮤텍스는 상태가 0, 1 뿐이므로 Lock을 가질 수 있습니다.
현재 수행중인 프로세스가 아닌 다른 프로세스가 세마포어를 해제할 수 있지만, 뮤텍스는 lock을 획득한 프로세스가 반드시 그 락을 해제해야 합니다
5. 데드락에 대해 설명해주세요.
둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하며 무한정 기다리는 상황을 말합니다.
예를 들어, 자원 A를 가진 프로세스 P1과 자원 B를 가진 프로세스 P2가 있을 때, P1은 자원 B를 필요로 하고 P2는 자원 A를 필요로 한다면 두 프로세스는 서로 자원을 얻기 위해 무한정 기다리게 됩니다.
Mutual exclusion(상호 배제) : 매 순간 하나의 프로세스만이 자원을 사용할 수 있다.
Non-preemption(비선점) : 프로세스는 자원을 스스로 내어놓을 뿐 강제로 빼앗기지 않는다.
Hold and wait(점유 대기) : 자원을 가진 프로세스가 다른 자원을 기다릴 때 보유 자원을 놓지 않고 계속 가지고 있다.
Circular wait(순환 대기) : 자원을 기다리는 프로세스 간에 사이클이 형성되어야 한다.
6. 단편화에 대해 설명해주세요
단편화란 프로세스들이 메모리에 적재되고 제거되는 일이 반복되다 보면, ram에서 메모리 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 사용 불가능한 상태이다.
외부 단편화 : 메모리 공간중 사용하지 못하게 되는 일부분
내부 단편화 : 프로세스가 사용하는 공간에 포함된 남는 부분
7. 페이징 교체 알고리즘에 대해 설명해주세요.
- FIFO 페이지 교체 (First In First Out)
가장 간단한 페이지 교체 알고리즘, 먼저 물리 메모리에 들어온 페이지 순서대로 페이지 교체 시점에 나가게 된다
큐를 만들어 구현이 가능하다
- 최적 페이지 교체(Optimal Page Replacement, MIN)
앞으로 가장 오랫동안 사용되지 않을 페이지를 찾아 교체, 가장 낮은 페이지 부재율을 보장
비교 연구 목적을 위해 사용
- LRU 페이지 교체(Least Recently Used)
최적 알고리즘의 근사 알고리즘. 가장 오랫동안 사용되지 않은 페이지를 선택하여 교체
- LFU 페이지 교체(Least Frequently Used)
참조 횟수가 가장 적은 페이지를 교체하는 방법. 활발하게 사용되는 페이지는 참조 횟수가 많아질 것이라는 가정에서 만들어진 알고리즘
집중적으로 사용됨으로 참조 횟수가 커지지만 이후 사용되지 않더라도 계속 메모리에 머뭄
최적 페이지 교체(OPT)를 제대로 근사하지 못해 잘 사용하지 않는다
- MFU 페이지 교체(Most Frequently Used)
참조 횟수가 가장 적은 페이지가 최근 메모리에 올라왔고 앞으로 계속 사용될 것이라는 가정에 기반
최적 페이지 교체를 제대로 근사하지 못해 잘 사용하지 않는다
- NUR(Not Used Recently)
최근 사용되지 않은 페이지를 교체하는 것
최근 사용된 메모리 페이지를 유지하는 것을 선호하는 것이다
8. Context switching에 대해 설명해주세요
멀티 프로세스 환경에서 CPU는 여러 프로세스를 돌아가면서 작업을 처리하므로, 현재 프로세스를 중단하고 다음 프로세스가 실행되어야 하는 경우가 발생한다. 따라서 현재까지 수행한 context를 저장해두고 다음 프로세스의 context로 교체하는 것을 의미합니다.
프로세스가 동작 -> 대기를 하면서 해당 프로세스의 Context를 보관
대기하고 있던 다음 프로세스가 동작 ~ 이전에 보관했던 프로세스의 상태를 복구
9. 멀티 쓰레드의 동시성과 병렬성의 차이점에 대해 설명해주세요
- 동시성 : 멀티 프로그래밍에서 나온 개념, 메모리에 여러 프로세스를 적재하여 동시에 실행되는것처럼 보이게 하는 것, 실제로는 번갈아서 수행됨 / 싱글 코어에서 멀티스레드 동작시키는 방식
- 병렬성 : 멀티 프로세싱에서 나온 개념, 실제로 동시에 여러 프로세스를 병렬적으로 수행하는 것 / CPU가 멀티 코어여야 한다.
10.시스템 콜이 무엇인가요
OS가 커널에 접근하기 위한 인터페이스로, 유저 프로그램이 OS의 서비스 받기 위해 커널함수를 호출할 때 사용합니다.
응용프로그램에서 시스템 커널에 어떠한 기능을 수행해 달라고 요청하는 것을 의미한다. 사용자가 직접 커널에 접근할 수는 없기 때문에, 이를 시스템 콜을 통해 대신하는 것이다.
프로세스나 스레드에서 OS로 요청을 할 때 시스템 콜 - 커널을 거쳐 OS에 전달됩니다.
컴퓨터 자원에 대한 직접 접근을 차단, 시스템 콜을 사용해서 접근하도록 제약을 두어 컴퓨터 자원을 다른 프로그램으로부터 보호하며 유저 프로그램에게 서비스를 제공하기 위해 존재합니다
'cs 스터디' 카테고리의 다른 글
디자인 패턴(Design Pattern) (0) | 2024.05.05 |
---|---|
데이터 베이스 면접 질문 (0) | 2024.04.16 |
[웹/SW] CSRF,XSS에 대해 (1) | 2024.03.14 |
[데이터 베이스] 트랜잭션 (0) | 2024.02.22 |
[운영체제] 메모리 - 링킹, 로딩, 물리적 주소, 논리적 주소 , 바인딩 (1) | 2024.02.16 |