운영체제
✔ 운영체제(OS)의 역할 4가지를 말하시오
- CPU 스케줄링과 프로세스 관리
- 메모리 관리
- 디스크 파일 관리
- I/O 디바이스 관리
🗝 KEY WORD |
#CPU 스케줄링 # 프로세스 #메모리 #디스크 파일 #I/O 디바이스 |
✔ CPU에 대해 설명하시오.
Central Processing Unit 의 약어로 중앙처리장치를 뜻한다. 산술논리연산장치, 제어장치, 레지스터로 구성되어 있는 컴퓨터 장치다.
관리자의 역할을 하는 운영체제(OS)의 커널이 프로그램을 메모리에 올려 프로세스로 만들면 CPU가 이를 처리한다.
* 제어장치 : 프로세스 조작을 지시하는 CPU 부품 / 입출력 장치 간 통신 제어 및 처리
* 레지스터 : CPU 안에 있는 매우 빠른 임시기억장치
특징
- 컴퓨팅 장치의 두뇌 역할
- 메모리에서 명령을 가져와서 필요한 작업을 수행하고 출력을 다시 메모리로 내보낸다
- 성능은 크게 클럭(Clock) 속도와 코어 수로 결정된다
🗝 KEY WORD |
# 중앙처리장치 # 산술논리연산 #명령 수행 및 출력 |
✔ DMA 컨트롤러
Direct Memory Access 의 약어로 직접 메모리 접근이란 의미를 가진다. I/O디바이스가 메모리에서 직접 접근할 수 있도록 하는 하드웨어 장치이다. CPU에만 너무 많은 인터럽트 요청이 들어오면 부하가 생기므로 이를 같이 부담하는 역할을 한다.
* 인터럽트 : CPU가 프로세스를 실행하고 있을 때, 예외 상황이 발생하여 처리가 필요함을 CPU에게 알리는 것
🗝 KEY WORD |
# 보조 장치 # 인터럽트 처리 역할 |
✔ 메모리 계층 구조에 대해 설명하시오
메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있다. 계층 위로 올라갈 수록 용량은 작아지고 속도도 빨라지지만 그만큼 가격이 비싸진다.
특징
- 레지스터 : CPU 안에 있는 작은 메모리 / 휘발성
- 캐시 : 데이터를 미리 복사해 놓는 임시 저장소 / L1, L2, L3 캐시가 있음 / 휘발성
- 메모리(RAM) / 주기억장치 : 휘발성
- 보조기억장치 : HDD(하드디스크) , SSD / 비휘발성
🗝 KEY WORD |
# 레지스터 # 캐시 # 메모리 # 보조기억장치 비휘발성 |
✔ 페이지 폴트(Page fault)와 스와핑(Swapping)에 대해 설명하시오
페이지 폴트란 프로세스의 주소 공간에는 존재하지만 지금 이 컴퓨터의 RAM에는 없는 데이터에 접근했을 경우 발생하는 것이다. 이 때, 마치 페이지 폴트가 일어나지 않은 것처럼 만드는 것을 스와핑이라고 한다. 스와핑은 메모리에서 당장 사용하지 않는 영역을 하드디스크로 옮기고 하드디스크의 일부분을 마치 메모리처럼 불러와 쓰는 것이다.
🗝 KEY WORD |
# 페이지 폴트 RAM 없는 데이터 접근 # 스와핑 당장 필요하지 않은 프로세스 영역을 보조 저장 |
✔ 스레싱(Thrashing)에 대해 설명하시오
스레싱은 메모리의 페이지 폴트율이 높은 것을 의미하며, 곧 성능 저하를 초래하게 한다.
해결할 수 있는 방법으로 작업 세트와 PFF가 있다.
<해결 방법>
- 작업 세트(Working Set) : 프로세스의 과거 사용 이력인 지역성을 통해 페이지 집합을 만들어서 미리 메모리에 로드하는 것
- PFF(Page Fault Frequency) : 페이지 폴트 빈도를 조절하는 방법. 상한선에 도달한다면 프레임을 늘리고 하한선인 경우 줄이는 방식으로 조절
🗝 KEY WORD |
# 보조 장치 # 인터럽트 처리 역할 |
✔ 페이지 교체 알고리즘에 대해 설명하시오
페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 시, 어떤 페이지 프레임을 선택해 교체할 것인지 결정하는 방법을 페이지 교체 알고리즘이라 한다.
- FIFO(First In First Out) : 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓은 방법
- LRU(Least Recently Used)
: 참조가 가장 오래된 페이지를 바꾸는 방법
프로그래밍 구현할 시, 해시 테이블과 이중 연결 리스트로 구현한다. - LFU(Least Frequently Used)
: 가장 참조 횟수가 적은 페이지를 교체하는 방법 - Optimal : 앞으로 가장 오랫동안 사용되지 않을 페이지를 교체하는 방법 / 실제 프로그래밍에서는 구현 불가
🗝 KEY WORD |
# 페이지 교체 알고리즘 #FIFO #LRU #LFU |
✔ 프로세스와 스레드의 차이에 대해 설명하시오
프로세스는 메모리에 올라와 실행되고 있는 프로그램의 인스턴스를 뜻한다.
스레드는 프로세스 내에서 할당받은 자원을 이용해 동작하는 실행 단위를 말한다.
프로세스 | 스레드 |
OS로 부터 독립된 메모리 영역을 할당 받는다 | 프로세스 내에서 Stack 만 따로 할당 받고, Heap, Data, Code 영역은 공유한다 |
통신을 위한 IPC를 사용해야 한다 | 프로세스의 자원을 공유하기 때문에 다른 스레드의 의한 결과를 즉시 알 수 있다 |
최소 1개의 스레드를 지니고 있다 | 프로세스 내에 존재한다 |
*IPC(Inter Process Communication) : 프로세스끼리 데이터를 주고받고 공유 데이터를 관리하는 메커니즘
🗝 KEY WORD |
# 프로세스 메모리 프로그램 #스레드는 프로세스 내 |
✔ 멀티 프로세스와 멀티 스레드의 차이에 대해 설명하시오
멀티 프로세스는 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 1개의 작업을 처리하도록 하는 것이다.
멀티 스레드는 하나의 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 1개의 작업을 처리하도록 하는 것이다.
멀티 프로세스 | 멀티 스레드 |
1개 프로세스가 죽어도 다른 프로세스에 영향을 주지 않는다(=독립적) | 하나의 스레드에 문제가 생기면 전체 스레드가 영향을 받는다 |
많은 메모리 공간과 CPU를 차지 | 적은 메모리 공간 차지 |
최소 1개의 스레드를 지니고 있다 | 문맥 전환이 빠르다 |
컨텍스트 스위칭을 위한 오버헤드 발생 | 컨텍스트 스위칭의 오버헤드를 줄일 수 있다 |
각각 독립된 메모리를 할당 받았기에 통신이 어렵다 | 메모리 공유하기에 비교적 통신이 쉽다 |
✔ 컨텍스트 스위칭(Context Switching) 대해 설명하시오
컨텍스트 스위칭이란 인터럽트를 발생시켜 CPU에서 실행중인 프로세스를 중단하고, 다른 프로세스를 처리하기 위한 과정이다. 많은 프로세스가 동시에 실행되는 것처럼 보이지만 실제 어떠한 시점에서 실행되고 있는 프로세스는 단 한 개 이며, 아주 빠르게 스위칭이 일어나고 있다. 즉, 컨텍스트 스위칭에 대해 설명할 때는 싱글코어를 기준으로 말한다.
캐시미스
- 컨텍스트 스위칭에 드는 비용
- 컨텍스트 스위칭 과정에서 프로세스가 가지고 있는 메모리 주소가 그대로 있으면 잘못된 주소 변환이 생기므로 캐시클 리어 과정을 겪게 된다. 이 때문에 캐시미스가 발생한다.
🗝 KEY WORD |
# 컨텍스트 스위칭 # 싱글코어 # 캐시미스 |
✔ 공유자원(Shared Resource)에 대해 설명하시오
공유자원이란 시스템 안에서 각 프로세스, 스레드가 함께 접근할 수 있는 프린터, 메모리, 파일, 데이터 등의 자원이나 변수 등을 의미한다.
경쟁 상태 : 공유 자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황
🗝 KEY WORD |
# 함께 접근 할 수 있는 자원이나 변수 |
✔ 임계영역(Critical Section)에 대해 설명하시오
임계영역은 둘 이상의 프로세스, 스레드가 공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 코드 영역을 말한다.
즉, 공유자원을 접근하는 데 있어 문제가 발생하지 않도록 한 번에 하나의 프로세스만 이용하게끔 보장해주는 영역이다.
임계 영역 문제를 해결하기 위한 3가지 방법
1. 뮤텍스
2. 세마포어
3. 모니터
임계 영역 문제를 해결하기 위한 3가지 조건
1. 상호 배제 : 한 프로세스가 임계 영역에 들어갔을 때 다른 프로세스는 들어갈 수 없다.
2. 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안된다.
3. 융통성 : 한 프로세스가 다른 프로세스의 일을 방해해서는 안된다.
✔ 뮤텍스/ 세마포어/ 모니터에 대해 설명하시오
뮤텍스(mutex) | 세마포어(semaphore) | 모니터(monitor) |
프로세스나 스레드가 공유 자원을 lock()을 통해 잠금 설정하고 사용한 후에 unlock() 통해 잠금 해제하는 객체 | 일반화된 뮤텍스 | 프로세스나 스레드가 공유 자원에 안전하게 접근할 수 있도록 하는 접근에 대한 인터페이스 제공 |
하나의 프로세스나 스레다가 단독으로 실행된다 | 공유자원에 세마포어 변수만큼 프로세스가 접근할 수 있다 | 자동적 상호 배제 |
잠금 메커니즘 : 잠금을 기반으로 상호배제가 일어난다 | 신호 메커니즘 : 신호를 기반으로 상호배제가 일어난다 | |
바이너리 세마포어 : 0과 1의 두 가지 값만 지님 카운팅 세마포어 : 여러 개의 값을 지님 |
✔ 교착 상태(deadlock)에 대해 설명하시오
두 개 이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태를 말한다.
이에 대한 원인으로 상호배제, 점유 대기, 비선점, 환형 대기가 있다.
🗝 KEY WORD |
# 상점비환 #데드락 #무한정 대기 |
✔ 선점형 스케줄링과 비선점형 스케줄링에 대해 설명하시오
선점형은 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있지만 반면에 비선점형은 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없는 것을 말한다.
방식
📍 선점형 스케줄링
- 라운드 로빈(RR: Round Robin) : 동일한 할당 시간을 주고 그 시간안에 해결되지 못하면 다시 준비 큐 상태로 돌아감
- SRF(Shortest Remaining Time First) : 더 짧은 작업이 우선적인 알고리즘
- 다단계 큐 : 우선순위에 따른 준비 큐를 여러 개 사용하고, 큐마다 다른 스케줄링 알고리즘을 적용한 것
📍 비선점형 스케줄링
- FCFS(First Come, First Served) : 가장 먼저 온 것이 가장 먼저 처리되는 알고리즘
- SJF(Shortest Job First) : 실행 시간이 가장 짧은 프로세스를 가장 먼저 실행하는 알고리즘 / 기아 현상 발생
- 우선순위 : 각각의 프로세스의 우선순위를 정하여 순위가 높은 작업 순으로 처리하는 방식
- HRN(Highest Response ratio Next) : SJF의 기아 현상을 보완한 방식. 짧은 작업의 우선순위가 높아지고, 긴 시간의 작업도 역시 오래 기다리면 우선순위가 높아지게 하는 방식
✔ 에이징(Aging) 기법에 대해 설명하시오
에이징 기법이란 우선순위를 높이는 방법이며, 자원이 할당되기를 기다린 시간에 비례하여 높은 우선순위를 부여하는 기법이다. 비선점형의 우선순위 스케줄링의 단점을 보완한 기법이다.
🗝 KEY WORD |
# 우선순위 # 기다린 시간에 따른 우선순위 부여 |
<참고 자료>
https://product.kyobobook.co.kr/detail/S000001834833
면접을 위한 CS 전공지식 노트 | 주홍철 - 교보문고
면접을 위한 CS 전공지식 노트 | 디자인 패턴, 네트워크, 운영체제, 데이터베이스, 자료 구조, 개발자 면접과 포트폴리오까지! CS 전공지식 습득과 면접 대비, 이 책 한 권이면 충분하다! 개발자 면
product.kyobobook.co.kr
https://aws.amazon.com/ko/what-is/cpu/
CPU란?- 중앙 처리 장치 설명 - AWS
초기의 컴퓨터는 데이터 처리에 진공관을 사용했습니다. ENIAC 및 UNIVAC과 같은 기계는 크고 부피가 커서 많은 전력을 소비하고 상당한 열을 발생시켰습니다. 1940년대 후반 트랜지스터의 발명은 CP
aws.amazon.com
https://mangkyu.tistory.com/92
[기술면접] CS 기술면접 질문 - 운영체제 (5/8)
5. 운영체제 [ Byte Ordering이란 ] Byte Ordering이란 데이터가 저장되는 순서를 의미합니다. Byte Ordering의 방식에는 빅엔디안(Big Endian)과 리틀엔디안(Little Endian)이 있습니다. Big Endian MSB가 가장 낮은 주
mangkyu.tistory.com
https://dev-coco.tistory.com/162
신입 개발자 기술면접 질문 정리 - 운영체제
💡 프로세스와 쓰레드의 차이에 대해 설명해주세요. 프로세스는 실행 중인 프로그램을 말하며, 완벽히 독립적이기 때문에 메모리 영역(Code, Data, Heap, Stack)을 다른 프로세스와 공유하지 않습니
dev-coco.tistory.com
https://ksk-developer.tistory.com/40
개발자도 알면 좋은 DMA(direct memory access)
기존에도 DMA?하면 direct memory access인 것은 알았지만 뭐하는지는 알지 못했는데 lucene을 공부하면서 mmap에 대해 좀 더 자세히 알게 되었고 그러다가 zero copy까지 공부하게 되었는데 거기서 DMA의 역
ksk-developer.tistory.com
https://omyodevelop.tistory.com/90
스케줄링(Scheduling); 선점형(Preemitive)기법과 비선점형(Non-Preemptive)기법 차이점과 종류 (feat.에이징(
* 2021 정보처리기능사 필기 과목 시험대비를 위해 작성한 글입니다. 제 3과목 운영체제(OS)의 선점형 기법과, 비선점형 기법에 관한 내용을 기록해 두었습니다. 개인적인 자격증 공부 기록용으로
omyodevelop.tistory.com
기술 지식 습득에 도움을 주신 모든 블로그 관리자 분들 감사합니다 🙏
부족한 내용에 대한 조언은 언제나 환영입니다 :)
'취업일지' 카테고리의 다른 글
[CS]기술 면접 질문 리스트 - 데이터베이스 (1) | 2024.01.06 |
---|---|
[CS]기술 면접 질문 리스트 - 네트워크 (1) | 2023.12.22 |
[CS]기술 면접 질문 리스트 - 자바 (1) | 2023.12.20 |
[CS]기술 면접 질문 리스트 - 프로그래밍 공통/기타 (2) | 2023.12.19 |