이 글은 DataBase 관련 내용을 다루고 있습니다.
자세한 내용은 추가로 검색을 해보셔서, 본인의 언어로 정리하시길 추천드립니다.
이 글 역시 제 생각과 언어에 맞게 정리하였고, 틀린 부분이 있을 수 있으니 댓글로 지적해 주시면 감사하겠습니다!
💡프로세스의 구조에 대해 설명해 주세요.
⬇️Answer
프로세스는 스택(stack), 힙(heap), 데이터(data), 코드(text) 영역으로 구성되어 있습니다.
스택 영역은 함수 실행을 위한 임시 데이터가 저장되고,
힙 영역은 동적으로 할당된 데이터가 저장되고,
데이터 영역은 전역변수나 초기화된 데이터 등이 저장되고,
코드 영역에는 프로그램 코드가 저장됩니다.
💡컨텍스트 스위칭에 대해 설명해 주세요.
⬇️Answer
컨텍스트 스위칭은 여러 개의 프로세스가 실행될 때, CPU에서 당장 실행할 프로세스를 교체하는 기술입니다.
PCB(Process Control Block)에 현재 실행 중인 프로세스의 PID, PC(Program Counter), SP(Stack Pointer) 등의 데이터를 저장하고, 다음 실행할 프로세스 정보를 담은 PCB에서 데이터를 CPU에 업데이트 한 뒤 다음 프로세스를 실행시킵니다.
🔗컨텍스트 스위칭https://innovation123.tistory.com/227#%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%20%EC%8A%A4%EC%9C%84%EC%B9%AD(Context%20Switching)-1
💡프로세스와 스레드의 차이
⬇️Answer
프로세스는 운영체제로부터 자원을 할당받아 실행하는 작업의 단위이고, Thread는 프로세스로부터 자원을 할당받아 실행하는 흐름 또는 실행의 단위입니다.
하나의 프로세스 내에서 Thread들은 Code, Data, Heap 영역을 공유하고, 해당 Thread만의 Stack 영역을 갖고 동작합니다. 그래서 하나의 프로세스 내에서 Thread 간에는 별도의 기술 없이 데이터 공유가 가능합니다.
💡프로세스 간 통신과 스레드 간 통신의 차이
⬇️Answer
프로세스 간에는 주소 공간이 분리되어 있기 때문에, 프로세스 간 통신을 위해서는 IPC라고 하는 별도의 기술을 사용해야 합니다. 그러나 Thread의 경우 하나의 프로세스 주소 공간 내에 Stack 영역을 제외한 Code, Data, Heap 영역을 공유하기 때문에 별도의 통신 기술이 필요하지 않습니다.
🔗IPC(Inter Process Communication)
https://innovation123.tistory.com/227#IPC(Inter%20Process%20Communication)%20%3A%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EA%B0%84%20%EC%BB%A4%EB%AE%A4%EB%8B%88%EC%BC%80%EC%9D%B4%EC%85%98%C2%A0-1
💡멀티 프로세싱과 멀티 스레드의 차이
⬇️Answer
멀티 프로세싱은 하나의 프로세스에서 실행되어야 할 작업들을 여러 개로 분리한 후에 각각의 CPU 코어에 넣어서 병행하여 실행되도록 하는 기법입니다.
멀티 스레드는 프로세스 주소 공간을 공유하고 있기 때문에, 스레드 간 통신을 위해 별도 기술을 사용할 필요는 없지만, 공유한 데이터를 읽고 쓰는 과정에서 동기화 이슈가 발생할 수 있는 반면, 멀티 프로세스는 IPC 기술을 사용해서 프로세스 간 통신을 해야 합니다.
만약 스레드 간 공유한 데이터를 읽기만 할 경우에는 동기화 이슈가 발생하지 않기 때문에 멀티 스레드를 사용하는 것이 좋지만, 데이터를 읽고 쓰는 작업이 빈번하다면, 동기화 기술을 많이 사용해야 하므로, 이 경우 데드락(deadlock)과 같은 비정상 동작이 일어날 수 있기 때문에 멀티 프로세싱을 고려해 보는 게 좋습니다.
🔗멀티 프로세싱과 멀티 스레드
https://innovation123.tistory.com/227#%EB%A9%80%ED%8B%B0%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8B%B1%EA%B3%BC%20%EB%A9%80%ED%8B%B0%20%EC%8A%A4%EB%A0%88%EB%93%9C-1
💡스레드 동기화란?
⬇️Answer
스레드 간 공유할 수 있는 데이터를 읽고 쓸 경우, 스레드의 실행 순서에 따라 공유되는 데이터를 읽고 쓰는 작업이 누락되거나 데이터가 손상되어 비정상 동작이 발생할 수 있습니다. 스레드 동기화란 이러한 문제를 방지하기 위해 여러 스레드가 동시에 공유한 데이터를 읽고 쓸 수 없도록 하는 기술입니다.
💡데드락이란?
⬇️Answer
데드락(deadlock)이란 프로세스가 자원을 할당받지 못하고 무한 대기 상태로 있는 경우를 말하며, 교착상태라고도 부릅니다.
💡메모리 계층 구조에 대해 설명해 주세요.
⬇️Answer
메모리 계층 구조는 메모리를 필요와 접근 속도에 따라 계층적으로 나눠서 사용하는 것을 말합니다. CPU를 기준으로 가장 접근이 빠른 순서대로 표시하는 경우가 많습니다. 접근 속도가 가장 빠른 레지스터(Register)부터 CPU 캐시(L1, L2, L3), 메인 메모리(RAM), SDD, HDD 순으로 표현됩니다.
📁[CS] 메모리 계층과 저장 장치(RAM, Register,Cache, HDD)
💡동기처리와 비동기 처리에 대해 설명해 주세요.(미완)
⬇️Answer
💡임계 영역에 대해 설명해 주세요.(미완)
⬇️Answer
💡뮤텍스와 세마포어에 대해 설명해 주세요.(미완)
⬇️Answer
💡페이지 교체 알고리즘의 종류에 대해 설명해 주세요. (미완)
⬇️Answer
'기타 > Tech Interview' 카테고리의 다른 글
백엔드 개발자 면접 질문 모음 (답변 없음) (0) | 2024.03.19 |
---|---|
백엔드 개발자 기술 면접 정리 - 기타 기술 스택 (0) | 2024.02.12 |
백엔드 개발자 기술 면접 정리 - 네트워크(Web, HTTP, Network) (0) | 2024.02.12 |
백엔드 개발자 기술 면접 정리 - Spring, JPA (1) | 2024.02.10 |
백엔드 개발자 기술 면접 정리 - Java, 객체 지향 (0) | 2024.02.09 |