운영체제
문제 1
유형: OX형
문제: 가변 분할 방식은 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용하는 방식으로, 내부 단편화가 발생할 수 있다.
정답 확인하기
정답: X → 내부단편화가 아닌, 외부 단편화가 발생할 수 있습니다.
해설: 가변 분할 방식은 매 시점 프로그램의 크기에 맞게 동적으로 메모리를 나눠 사용합니다. 내부 단편화는 발생하지 않고, 외부 단편화는 발생할 수 있습니다. 가변 분할 방식 종류에는 최초적합(first fit), 최적접합(best fit), 최악적합(worst fit)이 있습니다.
문제 2
유형: OX형
문제: 세그멘테이션 방식에서는 동일한 크기의 세그만트가 할당되므로 내부 단편화가 발생할 가능성이 크다.
정답 확인하기
정답: X
해설: 세그멘테이션은 논리적인 단위로 가변 크기로 할당되므로 내부 단편화는 적지만, 외부 단편화가 발생할 수 있음
문제 3
유형: OX형
문제: 하나의 프로세스에 여러 개의 스레드가 있다고 가정하면, 각 스레드는 프로세스의 코드, 데이터, 스택 영역을 공유한다.
정답 확인하기
정답: X
해설: 하나의 프로세스 내의 스레드들은 코드, 데이터, 힙 영역을 공유하지만, 각 스레드는 독립적인 스택 영역을 가집니다. 스택 영역은 함수 호출 시 매개변수, 반환 주소, 지역 변수 등을 저장하는 공간으로, 스레드마다 개별적으로 할당됩니다.
문제 4
유형: 객관식
문제: 운영체제의 역할 중 적절한 것을 모두 고르시오.
- CPU 소유권을 어떤 프로세스에 할당할지, 프로세스 생성과 삭제, 자원 할당 및 반환을 관리합니다.
- 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리합니다.
- 디스크 파일을 어떠한 방법으로 보관할지 관리합니다.
- I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리합니다.
정답 확인하기
정답: 1, 2, 3, 4
해설: 운영체제
- 정의: 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스입니다.
- 운영체제 종류: Window, Linux, iOS, android, macOS
- 운영체제의 역할
1. CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스에 할당할지, 프로세스 생성과 삭제, 자원 할당 및 반환을 관리합니다.
2. 메모리 관리: 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리합니다.
3. 디스크 파일을 어떠한 방법으로 보관할지 관리합니다.
4. I/O 디바이스 관리: I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리합니다.
문제 5
유형: 객관식
문제: 세마포어와 뮤텍스의 차이점 중 옳은 것을 모두 고르시오.
- Mutex는 동기화 대상이 오직 1개일 때 사용하며, Semaphore는 동기화 대상이 1개 이상일 때 사용합니다.
- Mutex는 자원을 소유할 수 있고, 책임을 가지는 반면 Semaphore는 자원 소유가 불가합니다.
- Mutex는 상태가 0, 1 뿐이므로 Lock을 가질 수 있고, 소유하고 있는 스레드만이 이 Mutex를 해제할 수 있습니다. 반면 Semaphore는 Semaphore를 소유하지 않는 스레드가 Semaphore를 해제할 수 있습니다.
- Semaphore는 시스템 범위에 걸쳐 있고, 파일 시스템 상의 파일로 존재합니다. 반면, Mutex는 프로세스의 범위를 가지며 프로세스 종료될 때 자동으로 Clean up 됩니다.
정답 확인하기
정답: 1, 2, 3, 4
해설
- Mutex (뮤텍스): 공유된 자원의 데이터 혹은 임계영역 등에 하나의 프로세스 혹은 스레드가 접근하는 것을 막아줌 (동기화 대상이 하나)
- Semaphore (세마포어): 공유된 자원의 데이터 혹은 임계영역 등에 여러 프로세스 혹은 스레드가 접근하는 것을 막아줌 (동기화 대상이 하나 이상)
- 뮤텍스와 세마포어는 모두 완벽한 기법은 아니므로 데이터 무결성을 보장할 수 없으며 모든 교착상태를 해결하지는 못합니다. 하지만 상호배제를 위한 기본적인 문법입니다.
- 참고 자료: https://heeonii.tistory.com/14
문제 6
유형: 객관식
문제: Deadlock(교착상태) 관한 설명 중 옳지 않은 것을 모두 고르시오.
- 현대 운영체제는 교착 상태 해결 방법으로 ‘은행원 알고리즘’을 채택했다.
- 프로세스를 실행하다 ‘응답 없음’이라고 뜨는 원인 중 하나는 교착상태이다.
- 다른 프로세스의 자원을 강제적으로 가져올 수 없는 상태는 데드락의 원인 중 하나이다.
- 교착상태는 4가지 발생 조건이 모두 동시에 성립될때만 발생한다.
정답 확인하기
정답: 1
해설
- 교착상태
- 설명: 두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말하고, 4가지 발생 조건이 동시에 성립할 때만 발생합니다.
- 교착 상태의 원인
- 비선점: 다른 프로세스의 자원을 강제적으로 가져올 수 없습니다.
- 점유 대기: 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태입니다.
- 순환(환형) 대기: 프로세스 A는 프로세스 B의 자원을 요구하고, 프로세스 B는 프로세스 A의 자원을 요구하는 등 서로가 서로의 자원을 요구하는 상황을 말합니다.
- 상호 배제: 한 프로세스가 자원을 독점하고 있으며 다른 프로세스들은 접근이 불가능합니다.
- 교착 상태의 해결 방법
- 자원을 할당할 대 애초에 조건이 성립되지 않도록 설계합니다.
- 교착 상태 가능성이 없을 때만 자원 할당되며, 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 ‘은행원 알고리즘’을 씁니다.
- 교착 상태가 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한 개 씩 지웁니다.
- 교착 상태는 매우 드물게 일어나기 때문에 이를 처리하는 비용이 더 커서 교착 상태가 발생하면 사용자가 작업을 종료합니다. 현대 운영체제는 이 방법을 채택했습니다. 예를 들어 프로세스를 실행시키다 ‘응답 없음’이라고 뜰 때가 있죠? 교착 상태가 발생한 경우에 이와 같은 경우가 발생하기도 합니다.
문제 7
유형: 객관식
문제: 다음 설명은 실행 방식 중 무엇에 해당할까요?
-92557b480fa9abf0e3a5bc575c5c2fbf.png)
- blocking + sync
- blocking + async
- non-blocking + async
- non-blocking + sync
정답 확인하기
정답: 4
해설
- blocking + sync : 다른 작업이 진행되는 동안 자신의 작업을 처리하지 않고 (blocking), 다른 작업의 완료 여부를 바로 받아 순차적으로 처리하는 (sync) 방식이다. 다른 작업의 결과가 자신의 작업에 영향을 주는 경우에 활용할 수 있다.
- blocking + async : 다른 작업이 진행되는 동안 자신의 작업을 멈추고 기다리는 (blocking), 다른 작업의 결과를 바로 처리하지 않아 순서대로 작업을 수행하지 않는 (async) 방식이다.
- non-blocking + async : 다른 작업이 진행되는 동안에도자신의 작업을 처리하고 (non-blocking), 다른 작업의 결과를 바로 처리하지 않아 작업 순서가 지켜지지 않는 (async) 방식이다. 다른 작업의 결과가 자신의 작업에 영향을 주지 않는 경우에 활용할 수 있다.
- non-blocking + sync : 다른 작업이 진행되는 동안에도 자신의 작업을 처리하고 (non-blocking), 다른 작업의 결과를 바로 처리하여 작업을 순차대로 수행하는 (sync) 방식이다.
참고 자료: https://inpa.tistory.com/entry/👩💻-동기비동기-블로킹논블로킹-개념-정리
문제 8
유형: 주관식
문제: 운영체제에서 실제 물리적 메모리 크기보다 더 큰 메모리를 사용할 수 있도록 제공하는 기능은 무엇인가요?
정답 확인하기
정답: 가상메모리
해설: 실제 물리적 메모리보다 더 큰 메모리를 사용할 수 있도록 운영체제가 제공하는 기능. 필요한 데이터만 메모리에 올리고 나머지는 디스크에 저장하여, 메모리 부족 문제를 해결할 수 있다.
문제 9
유형: 주관식
문제: 캐시와 CDN 둘 다 데이터를 빠르게 가져오는 역할을 하는데, 차이점으로는 무엇이 있나요?
정답 확인하기
정답: 목적과 동작 방식에서 차이가 있습니다. 캐시는 자주 사용되는 데이터를 임시 저장하여 재사용성을 극대화하고, 반복적인 요청 시 빠르게 반환하는 방식입니다. CDN은 사용자와 가까운 서버(엣지 서버)에서 데이터를 제공하여 네트워크 지연을 줄이고 로딩 속도를 최적화하는 방식입니다.
문제 10
유형: 주관식
문제: SJF 방식으로 평균 대기시간을 구하시오.
-44f43b4b6fc364f7ae562e67b946c2ee.png)
정답 확인하기
정답
- 실행 순서: P4 → P1 → P2 → P3
- 평균 대기 시간: (0 + 3 + 9 + 16) / 4 = 7
해설
- CPU 스케줄러
- 정의: 실행 가능한 프로세스 중 하나를 선택해 CPU를 할당하는 역할을 하며, FCFS, SJF, STRF, RR, 우선순위 스케줄링 등의 방식이 있다.
FCFS(First Come First Served) → 먼저 CPU를 요청하는 프로세스를 먼저 처리하는 방식 (waiting time이 길어진다)SJF(Shortest Job First) → 가장 적게 걸리는 프로세스를 먼저 실행 시킴 (가장 짧은 waiting time 보장) → Starvation발생 가능. 짧은 것들만 실행하면 긴 프로세스는 계속 기다린다.SRTF(Shortest Remaining Time First) → 각 task의 남은 시간을 따져보고 가장 짧은 녀석에게 CPU를 할당하는 방식.RR(Round Robin) → 모든 job을 time slice 크기로 쪼개고, 한 slice씩 모든 task들을 공평하게 돌리는 방식Priority Scheduling(우선 순위 스케줄링) → 우선순위에 따라서 실행순서를 정해주는 방식 (우선 순위는 시간 제한, 메모리 요구량, 프로세스의 중요성, 자원사용 비용 등에 따라 달라짐) → 우선 순위가 같을 경우 FCFS와 다를게 없다.
문제 11
유형 : OX형
문제 : 병렬 처리(Parallelism)는 여러 작업이 정확히 동시에 실행되는 것을 의미하며, 반드시 여러 개의 물리적 CPU 코어가 필요하다.
정답 확인하기
정답 : O
해설 : 병렬 처리(Parallelism)는 실제로 여러 작업이 동시에 실행되는 것을 의미한다. 멀티 코어 환경에서 여러개의 코어에 작업을 각 코어로 분산시켜서 동시에 작업하는 것을 의미하며 실제 물리적으로 여러 작업이 동시에 실행되는 것이다.
참고자료
![]()
문제 12
유형 : OX형
문제 : 병행 처리(Concurrency)는 싱글 코어 CPU에서도 구현이 가능하다.
정답 확인하기
정답 : O
해설 : 병행 처리(Concurrency)는 여러 작업이 논리적으로 동시에 진행되는 것처럼 보이는 것으로, 싱글 코어에서도 시분할(time-slicing) 방식으로 구현 가능하다. 실제로는 빠르게 작업 간 전환이 일어나 동시에 실행되는 것처럼 보인다.
문제 13
유형: 객관식
문제: 다음 중, 경쟁 상태(Race Condition)가 발생하는 상황은?
보기:
- 커널 모드에서 데이터를 로드하여 작업을 수행하다가 인터럽트가 발생하여 같은 데이터를 조작하는 경우
- 프로세스 A가 자신의 스택 영역에 있는 지역 변수를 조작하는 경우
- 프로세스 A가 커널 모드에서 데이터를 조작하는 도중, 시간이 초과되어 CPU 제어권이 프로세스 B로 넘어가 같은 데이터를 조작하는 경우
- 멀티 프로세서 환경에서 2개의 CPU가 동시에 커널 내부의 공유 데이터에 접근하여 조작하는 경우
- 프로세스 A와 프로세스 B가 공유 메모리 영역에서 데이터를 읽는 경우
정답 확인하기
정답: 1, 3, 4
해설: 경쟁 상태란 공유 자원에 대해 여러 프로세스/스레드가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태이다. 동시에 접근하면 자료의 일관성을 해치는 결과가 나타난다.
2: 스택 영역은 각 프로세스 or 스레드마다 독립적으로 할당되기 때문에 공유 자원이 아니다.
5: 공유 메모리 영역은 공유 자원이지만, 데이터를 읽기만 한다면 결과값에 영향을 주지 않는다.
참고 자료: 신입 개발자 기술면접 질문 정리 - 운영체제
문제 14
유형: 객관식
문제: LRU 알고리즘을 사용하는 캐시의 크기가 4일 때, 참조 스트링이 1, 2, 3, 1, 4, 5을 처리하고 난 후 캐시의 내용은?
보기:
- 2
- 5
- 1
- 2
- 3
정답 확인하기
정답: 5
해설:
- LRU 알고리즘은 페이지 교체 알고리즘 중 하나로, 가장 오랫동안 참조되지 않은 페이지를 교체한다.
- 캐시가 사용하는 리소스의 양은 제한되어 있고, 캐시는 제한된 리소스 내에서 데이터를 빠르게 저장하고 접근할 수 있어야 하기에 사용하는 알고리즘이다.
-bc3b635011c0d79cffcbb13b148ac177.png)
Input : 123145 인 상황에서 4초를 보면 원래 있었던 1이 한번 더 입력되므로 1을 참조한다. 참조 후 오랫동안 참조하지 않은 순으로 바꾸면 2->3->1이 된다. 6초에는 cache size가 가득차 5가 들어갈 수 없으므로, 가장 오랫동안 참조되지 않은 2를 제거한 후 저장한다. Output : 5413
문제 15
유형: 객관식
문제: 프로세스의 상태 전이에 대한 설명으로 올바르지 않은 것은?
보기:
- 실행(Running) 상태의 프로세스는 I/O 요청이 발생하면 대기(Waiting) 상태로 전이될 수 있다.
- 준비(Ready) 상태의 프로세스는 CPU 스케줄러에 의해 선택되면 실행(Running) 상태로 전이된다.
- 대기(Waiting) 상태의 프로세스는 직접 실행(Running) 상태로 전이될 수 있다.
- 생성(New) 프로세스는 메모리 등 필요한 자원이 할당되면 준비(Ready) 상태로 전이된다.
- 실행(Running) 상태의 프로세스는 타임 슬라이스가 만료되면 준비(Ready) 상태로 전이될 수 있다.
정답 확인하기
정답: 3
해설: 대기(Waiting) 상태의 프로세스는 I/O 작업이 완료되면 직접 실행(Running) 상태로 전이되는 것이 아니라, 먼저 준비(Ready) 상태로 전이된다. 이후 CPU 스케줄러에 의해 선택되었을 때 비로소 실행(Running) 상태로 전이된다. 따라서 대기 상태에서 실행 상태로 직접 전이되는 것은 올바르지 않다.
프로세스의 기본적인 상태 전이는 다음과 같다.
- New → Ready: 프로세스 생성 후 준비 상태로 전이
- Ready → Running: CPU 스케줄러에 의해 선택되어 실행
- Running → Ready: 타임 슬라이스 종료나 선점으로 인해 다시 준비 상태로
- Running → Waiting: I/O 요청이나 이벤트 대기로 인해 대기 상태로
- Waiting → Ready: I/O 완료나 이벤트 발생 후 다시 준비 상태로
- Running → Terminated: 프로세스 실행 완료
문제 16
유형: 서술형
문제: convoy effect와 starvation의 차이에 대해 설명하시오.
정답 확인하기
해설:
convoy effect는 몇개의 시간이 오래 걸리는 프로세스로 인해 다른 프로세스의 실행이 느려지고 평균 대기시간이 길어지며 결과적으로 전체적인 프로세스의 성능을 저하시키는 현상입니다. starvation은 어떤 프로세스가 무기한으로 대기하며 CPU소유권을 얻을 수 없는 현상입니다.
문제 17
유형: 서술형
문제: busy waiting에 대해 설명하시오.
정답 확인하기
해설:
busy waiting은 프로세스, 스레드가 어떠한 일을 실행하기 전에 만족하는 조건을 지속적으로 확인하는 동기화 기술입니다.
busy wait는 운영체제에서 프로세스가 공유자원에 동시에 접근하는 것을 방지하는 상호배제를 달성하는데 사용됩니다. busy_wait 상태에서는 우선순위에 따라 작업을 바꿀 수 없기 때문에 우선 순위가 높은 작업을 완료해야 할 때 비효율적이며 대기시간이 많이 걸릴 경우 계속해서 기다리는데 CPU자원을 쓰기 때문에 자원낭비가 심하다는 단점이 있습니다.