🚌 2024년 10월 28일~ 2024년 11월 2일까지의 주제는 운영체제다.
💡 공통으로 준비한 질문
1️⃣ 첫번째 접은 글은 내 말로 풀어쓴 정답
2️⃣ 두번째 접은 글은 해석 또는 공부한 내용 또는 추가적으로 궁금한 내용
1. Blocking과 Non-Blocking에 대해 설명해주세요.
- blocking과 non-blocking은 주로 IO의 읽기,쓰기에서 사용된다.
- blocking이란?
- 요청한 작업을 마칠 때까지 계속 대기한다.
- 즉시 return 하고, return 값을 받아야 끝난다.
- Thread 관점으로 본다면, 요청한 작업을 마칠 때까지 계속 대기하며 return 값을 받을 때까지 한 Thread를 계속 사용/대기 한다.
- non-blockin이란?
- 요청한 작업을 즉시 마칠 수 없다면 즉시 return한다.
- 즉시 리턴하지 않는다.(일을 못하게 막는다.)
- Thread 관점으로 본다면, 하나의 Thread가 여러 개의 IO를 처리 가능하다.
1. 동기 비동기와 blocking/non-blocking 구분법
동기 vs 비동기 (feat. blocking vs non-blocking)
동기/비동기, blocking/non-blocking에 대해 알아봤다.
velog.io
👩💻 완벽히 이해하는 동기/비동기 & 블로킹/논블로킹
동기/비동기 & 블로킹/논블록킹 프로그래밍에서 웹 서버 혹은 입출력(I/O)을 다루다 보면 동기/비동기 & 블로킹/논블로킹 이러한 용어들을 접해본 경험이 한번 쯤은 있을 것이다. 대부분 사람들은
inpa.tistory.com
블로킹(Blocking)과 논 블로킹(Non-Blocking)!
동기와 비동기, 블로킹과 논 블로킹을 같은 것이나 비슷한 것이라고 오해하는 경우가 많다. 해당 개념들은 전혀 다른 개념이며 직접적인 관련이 없다. Caller와 Callee 먼저 아래 개념을 이해하자. C
jaehoney.tistory.com
Blocking vs Non-Blocking(+ 동기, 비동기)
Blocking, Non-Blocking 너무 헷갈린다. 심지어 동기, 비동기라는 비슷한 개념까지 너무 같이 나와서 헷갈리기에 이번 글을 통해 정리해보기로 하였다.Sync(동기): 서버에서 요청을 보냈을 때 응답이 돌
velog.io
2. Race Condition과 Critical Section이 무엇이고, 경쟁상태를 막기 위해 어떤 방법을 사용하는지 설명해주세요.
- Race Condition(경쟁 상태)이란?
- 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태
- 동시 접근 시 자료의 일관성을 해치는 결과가 나타남
- Critical Section(임계 구역)이란?
- 둘 이상의 스레드가 동시에 실행될 경우 생길 수 있는 경쟁 조건을 발생시킬 수 있는 코드 블록
- 해결 방법은
- 상호 배제(mutual exclusion) : 한 프로세스가 임계구역에 들어가 있으면 다른 프로세스는 들어갈 수 없다.
- 한정 대기(bounded waiting) : 상호 배제 때문에 기다리게 되는 프로세스가 무한 대기하지 않아야 한다. 즉, 특정 프로세스가 임계구역에 진입하지 못하면 안 된다.
- 진행의 융통성(progress flexibility, progress) : 임계구역에 프로세스가 없다면 어떠한 프로세스라도 들어가서 자원을 활용할 수 있다. 즉, 두 프로세스가 자원을 번갈아 쓴다고 가정할 때 한쪽에서 자원을 안쓰고 있다고 해서 다른 한 쪽 프로세스가 자원을 쓰고 싶어도 자신의 turn이 아니라고 기다리는 것은 효율적이지 못하다는 것이다.
- 위 3가지 이다.
[운영체제] 경쟁 조건(Race Condition)과 임계 구역(Critical Section)
프로세스 간 메시지를 전송하거나, 공유메모리를 통해 공유된 자원에 여러 개의 프로세스가 동시에 접근하면 임계 구역(Critical Section) 안에서 경쟁 조건(Race Condition)이 생길 수 있다. 이를 해결하
brightstarit.tistory.com
2. 그림으로 이해하는
process synchronization : 임계구역 (critical section) & 경쟁상태 (race condition)
목차process synchronization : 임계 구역 (critical section) & 경쟁상태 (race condition)공유 데이터(shared data)의 동시 접근(concurrent access)은 데이터의 불일치 문제(inconsistency)를 발생시킬 수 있습니다.process synch
yoongrammer.tistory.com
3. 코드를 참고할
Critical Section과 Race Condition
프로세스와 쓰레드 프로세스(Process)는 실행 중인 프로그램의 추상화이며, 한 개 이상의 쓰레드(Thread)로 이루어집니다. 쓰레드는 프로세스의 실행 단위입니다. 프로세스와 쓰레드는 거의 비슷하
velog.io
경쟁 상태(Race Condition) | 👨🏻💻 Tech Interview
경쟁 상태(Race Condition) 공유 자원에 대해 여러 프로세스가 동시에 접근할 때, 결과값에 영향을 줄 수 있는 상태 동시 접근 시 자료의 일관성을 해치는 결과가 나타남 Race Condition이 발생하는 경우
gyoogle.dev
3. CPU Scheduling이 무엇인지 설명하고, CPU 스케줄링의 종류에 대해 설명해주세요.
- CPU 스케줄링이란 CPU를 잘 사용하기 위해 프로세스를 잘 배정하는 알고리즘이며, 조건은 오버헤드를 낮추고, 사용률을 높이고, 기아 현상을 낮추는 것이 조건입니다.
- CPU 스케줄링에는 2가지 종류의 스케줄링이 있습니다. 선점과 비선점 스케줄링입니다.
- 선점 스케줄링이란?
- OS가 CPU의 사용권을 선점할 수 있는 경우에 강제로 회수하는 경우입니다. 처리시간 예측이 어렵습니다.
- Priority Scheduling : 정적/동적으로 우선순위를 부여하여 우선순위가 높은 순서대로 처리. 우선 순위가 낮은 프로세스가 무한정 기다리는 starvation이 생길 수 있으나 Aging 방법으로 문제가 해결 가능
- Round Robin : FCFS에 의해 프로세스가 들여보내지면 각 프로세스는 동일한 시간의 Time Quantum만큼 CPU를 할당 받는다.
- Multilevel-Queue(다단계 큐) : 작업들을 여러 종류의 그룹으로 나누어 여러 개의 큐를 이용하는 방법.
- Multilevel-FeedBack-Queue : 다단계 큐에서 자신의 Time Quantum을 다 채운 프로세스는 밑으로 내려가고 자신의 Time Quantum을 다 채우지 못한 프로세스는 원래 큐 그대로다.
- 비선점 스케줄링이란?
- 프로세스 종료 또는 I/O 등의 이벤트가 있을 때까지 실행을 보장합니다. 처리시간 예측이 용이합니다.
- FCFS(First Come First Served) : 큐에 도착한 순서대로 CPU 할당, 실행 시간이 짧은게 뒤로 가면 평균 대기 시간이 길어짐
- SJF(Shortest Job First) : 수행시간이 가장 짧다고 판단되는 작업을 먼저 수행, FCFS보다 평균 대기 시간 감소, 짧은 작업에 유리
- HRN(Hightest Response-ratio Next) : 우선순위를 계산하여 점유 불평등을 보완하는 방법(SJF의 단점 보완). 우선순위 = (대기시간 + 실행시간) / (실행시간)
CPU Scheduling | 👨🏻💻 Tech Interview
CPU Scheduling 1. 스케줄링 CPU 를 잘 사용하기 위해 프로세스를 잘 배정하기 조건 : 오버헤드 ↓ / 사용률 ↑ / 기아 현상 ↓ 목표 Batch System: 가능하면 많은 일을 수행. 시간(time) 보단 처리량(throughout)
gyoogle.dev
2. 면접용 간단한 답변
tech-interview-study/contents/os.md at master · devham76/tech-interview-study
기술 면접 스터디를 기반으로 CS기본 개념을 정리하는 저장소입니다. Contribute to devham76/tech-interview-study development by creating an account on GitHub.
github.com
3. 자세한 그림 예시
[운영체제(OS)] 6. CPU 스케줄링
CPU가 하나의 프로세스 작업이 끝나면 다음 프로세스 작업을 수행해야 한다. 이때 다음 프로세스가 어느 프로세스인지를 선택하는 알고리즘을 CPU Scheduling 알고리즘이라고 한다. 간단히 생각해보
velog.io
4. 세세한 내용
[Operating System - Chapter 5] CPU 스케줄링
이 포스팅은 공룡책으로 알려진 Operating System Concepts의 5장인 CPU Scheduling를 공부하면서 정리한 포스팅이다.
imbf.github.io
4. 메모리의 종류에 대해 설명하고, 종류가 여러가지인 이유에 대해 설명해주세요.
- CPU에 가까운 순서대로 레지스터, 캐시, 주기억장치, 보조기억장치가 있습니다.
- 물리적 메모리의 종류가 많은 이유는, 접근 속도에 따른 차이를 두기 위해서입니다. (레지스터 > 캐시 > 주기억장치 > 보조기억장치)
[면접총정리] 신입 개발자 인터뷰 대비 총정리 자료 - ⑤ 운영체제
🧑🏻💻 글을 시작하기에 앞서.. - 신입 개발자 인터뷰에서 자주 나오는 질문을 모아 한 번에 정리한 포스트입니다. - 신입 개발자 기술면접을 준비하는 사람으로, 정확하지 않은 정보가 포함
hoons-dev.tistory.com
2. 개념에서 확인한 계층 정확하게는 RAM과 ROM을 봐야 함..
운영체제(Operating System) | 메모리(Memory)
스레드까지 하다 갑자기 메모리까지 점프... 어쩔 수 없다. 지금 핀토스 virtual memory를 진행하고 있어서 일단 메모리 관련 OS부터 정리하려고 한다. 메모리 시스템은 여러 가지 용량, 비용, 접근 시
dapsu-startup.tistory.com
메모리의 종류
모든 프로그램은 메모리에 올라와야 실행 할 수 있다.메모리를 이루는 소자 하나의 크기는 1bit로 0 또는 1이 저장되는데 소자 하나만으로는 데이터를 표현할 수 없어 메모리 주소는 바이트 단위
velog.io
❔ 개인으로 준비한 질문
1. IPC에 대해 설명해주세요.
- IPC(Inter Process Communication)란 프로세스는 독립적으로 실행되고, 프로세스 간의 통신을 해야 하는데 이를 가능하도록 해주는 통신이다.
- 커널이란?
- 운영체제의 핵심적인 부분으로, 다른 모든 부분에 여러 기본적인 서비스를 제공해준다.
- 프로세스는 커널이 제공하는 IPC 설비를 이용해 프로세스간 통신을 할 수 있게 된다.
IPC(Inter-Process Communication)란?
프로세스(Process)의 개요 👀 프로세스(Process)는 프로그램이 구동될 때 주 메모리에 적재되며, 메모리 상에서 실행되는 작업의 단위를 말한다. 즉, 컴퓨터가 연속적으로 실행하고 있는 컴퓨터 프
y-oni.tistory.com
2. IPC 종류에 대해 설명해 주세요.(최근에는 글이 몇 개 없지만 추가로 알아두는 느낌으로)
- IPC는 다음과 같은 종류들이 있습니다.
- 익명 PIPE
- 파이프는 두 개의 프로세스를 연결하는데 하나의 프로세스는 데이터를 쓰기만 하고, 다른 하나는 데이터를 읽기만 할 수 있다. 한쪽 방향으로만 통신이 가능한 반이중 통신이라고 부른다.
- 따라서 양쪽으로 모두 송/수신을 하고 싶으면 2개의 파이프를 만들어야 한다.
- 매우 간단하게 사용할 수 있는 장점이 있고, 단순한 데이터 흐름을 가질 땐 파이프를 사용하는 것이 효율적이다. 단점으로는 전이중 통신을 위해 2개를 만들어야 할 때는 구현이 복잡해지게 된다.
- 통신할 프로세스를 명확히 알 수 있는 경우에 사용한다.
- Named PIPE(FIFO)
- Named 파이프는 전혀 모르는 상태의 프로세스들 사이 통신에 사용한다.
- 즉, 익명 파이프의 확장된 상태로 부모 프로세스와 무관한 다른 프로세스도 통신이 가능한 것
- 하지만, Named 파이프 역시 읽기/쓰기 동시에 불가능하다. 따라서 전이중 통신을 위해서는 익명 파이프처럼 2개를 만들어야 가능하다.
- Message Queue
- 입출력 방식은 Named 파이프와 동일하다.
- 다른 점은 메시지 큐는 파이프처럼 데이터의 흐름이 아니라 메모리 공간이다.
- 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터를 쉽게 다룰 수 있다.
- 공유 메모리
- 위 방법들이 통신을 이용한 설비라면, 공유 메모리는 데이터 자체를 공유하도록 지원하는 설비다.
- 프로세스의 메모리 영역은 독립적으로 가지며 다른 프로세스가 접근하지 못하도록 반드시 보호되어야 한다.
- 하지만 다른 프로세스가 데이터를 사용하도록 해야 하는 상황도 필요할 것이다. 파이프를 이용해 통신을 통해 데이터 전달도 가능하지만, 스레드처럼 메모리를 공유하도록 해준다면 더욱 편할 것이다.
- 공유 메모리는 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용해준다.
- 프로세스가 공유 메모리 할당을 커널에 요청하면, 커널은 해당 프로세스에 메모리 공간을 할당해주고 이후 모든 프로세스는 해당 메모리 영역에 접근할 수 있게 된다.
- 중개자 없이 곧바로 메모리에 접근할 수 있어서 IPC 중 가장 빠르게 작동한다.
- 메모리 맵
- 공유 메모리처럼 메모리를 공유해준다. 메모리 맵은 열린 파일을 메모리에 맵핑시켜서 공유하는 방식이다.
- 주로 파일로 대용량 데이터를 공유해야 할 때 사용한다.
- 소켓
- 네트워크 소켓 통신을 통해 데이터를 공유한다.
- 클라이언트와 서버가 소켓을 통해서 통신하는 구조로, 원격에서 프로세스 간 데이터를 공유할 때 사용한다.
- 익명 PIPE
IPC(Inter Process Communication) | 👨🏻💻 Tech Interview
IPC(Inter Process Communication) 프로세스는 독립적으로 실행된다. 즉, 독립 되어있다는 것은 다른 프로세스에게 영향을 받지 않는다고 말할 수 있다. (스레드는 프로세스 안에서 자원을 공유하므로 영
gyoogle.dev
[운영체제] IPC 기법
IPC 기법에 대해 알아봐요.
velog.io
[프로세스간 통신] IPC(inter process communication) 종류
[프로세스간 통신] IPC(inter process communication) 종류 (Linux) IPC의 종류 1) PIPE 2) Named PIPE 3) Message Queue 4) Shared Memory 5) Memory Map 6) socket IPC 별 사용 시기 및 특징 IPC 종류 PIPE Named PIPE Mesage Queue Shared Memory Me
doitnow-man.tistory.com
IPC의 종류와 특징
IPC(Inter Process Communication) - 프로세스 간 통신에 대하여 종류와 특징들에 대하여 살펴보겠습니다. [리눅스 커널 구조] - 위 그림처럼 Process는 완전히 독립된 실행객체입니다. 서로 독립되어 있다는
jwprogramming.tistory.com
3. Thrashing에 대해 설명해주세요.
- Thrashing이란?
- 가상 메모리 크기 = 물리 메모리 + 스왑 영역(하드 디스크에 존재 또는 메모리 관리자가 관리하는 영역)
- 메모리에 페이지 부재율이 높은 것, 심각한 성능 저하를 초래한다.
- 하드디스크의 입출력이 너무 많아져서 잦은 페이지 부재로 작업이 멈춘 것 같은 상태이다.
- 페이지 부재란?
- 프로세스가 페이지를 요청했을 때 그 페이지가 메모리에 없는 상황
4. 페이지 교체 알고리즘에 대해 설명해주세요.
- 페이지 교체 알고리즘이란?
- 페이지 부재가 발생할 때 새로운 페이지를 할당해야 하고, 현재 할당된 페이지 중 어떤 것을 교체할지 결정하는 방법입니다.
- FIFO 알고리즘 : First In First Out 알고리즘. 가장 간단한 방법으로, 특히 초기화 코드에 적절한 코드이다.
- OPT 알고리즘 : Optimal 알고리즘. 앞으로 가장 사용하지 않을 페이지를 가장 우선적으로 내보내는 알고리즘. FIFO에 비해 페이지 결함의 횟수를 많이 감소시킬 수 있다.
- LRU 알고리즘 : Least-Recently-Used 알고리즘. 최근에 사용하지 않은 페이지를 가장 먼저 내려보내는 알고리즘. 최근에 사용하지 않았으면, 나중에도 사용되지 않을거라는 아이디어에 기반한 알고리즘. 실제로 사용할 수 있는 페이지 교체 알고리즘에서는 가장 좋은 방법 중 하나
1. 페이지 교체 알고리즘
페이지 교체 알고리즘 | 👨🏻💻 Tech Interview
페이지 교체 알고리즘 페이지 부재 발생 → 새로운 페이지를 할당해야 함 → 현재 할당된 페이지 중 어떤 것 교체할 지 결정하는 방법 좀 더 자세하게 생각해보면? 가상 메모리는 요구 페이지 기
gyoogle.dev
OS는 할껀데 핵심만 합니다. 17편 페이지 교체 알고리즘(FIFO, LRU, LFU , NUR, 2차 기회 알고리즘, 시계
메모리가 꽉 찼을 때 어떤 페이지를 스왑 영역으로 내보낼지 결정하는 재배치 정책에 대해서 알아보자.프로세스가 요구한 페이지가 현재 메모리에 없으면 페이지 부재(page fault)가 발생한다. 페
velog.io
'개인 공부 > TIL' 카테고리의 다른 글
[ TIL - 면접 ] 자소서 질문 대비 공부 2편 - 스프링 Bean Scope 편 - (0) | 2024.11.06 |
---|---|
[ TIL - CS ] 면접을 위한 CS 공부 3편 - 자료구조와 알고리즘 - (0) | 2024.11.04 |
[ TIL - 면접 ] 자소서 질문 대비 공부 1편 - 스프링 & 스프링부트 개념 편 - (0) | 2024.10.29 |
[ TIL - CS ] 면접을 위한 CS 공부 1편 - 운영체제 - (0) | 2024.10.28 |
[ TIL - PGS ] 99클럽 코테 스터디 38일차 TIL + 오늘의 학습 가이드 (0) | 2024.08.28 |