[ 기타 ]/Tech Interview

백엔드 개발자 기술 면접 정리 - 운영체제(CS)

2024. 3. 19. 23:36
목차
  1. 💡프로세스의 구조에 대해 설명해 주세요.
  2. 💡컨텍스트 스위칭에 대해 설명해 주세요.
  3. 💡프로세스와 스레드의 차이
  4. 💡프로세스 간 통신과 스레드 간 통신의 차이
  5. 💡멀티 프로세싱과 멀티 스레드의 차이
  6. 💡스레드 동기화란?
  7. 💡데드락이란?
  8. 💡메모리 계층 구조에 대해 설명해 주세요.
  9. 💡동기처리와 비동기 처리에 대해 설명해 주세요.(미완)
  10. 💡임계 영역에 대해 설명해 주세요.(미완)
  11. 💡뮤텍스와 세마포어에 대해 설명해 주세요.(미완)
  12. 💡페이지 교체 알고리즘의 종류에 대해 설명해 주세요. (미완)
이 글은 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
  1. 💡프로세스의 구조에 대해 설명해 주세요.
  2. 💡컨텍스트 스위칭에 대해 설명해 주세요.
  3. 💡프로세스와 스레드의 차이
  4. 💡프로세스 간 통신과 스레드 간 통신의 차이
  5. 💡멀티 프로세싱과 멀티 스레드의 차이
  6. 💡스레드 동기화란?
  7. 💡데드락이란?
  8. 💡메모리 계층 구조에 대해 설명해 주세요.
  9. 💡동기처리와 비동기 처리에 대해 설명해 주세요.(미완)
  10. 💡임계 영역에 대해 설명해 주세요.(미완)
  11. 💡뮤텍스와 세마포어에 대해 설명해 주세요.(미완)
  12. 💡페이지 교체 알고리즘의 종류에 대해 설명해 주세요. (미완)
'[ 기타 ]/Tech Interview' 카테고리의 다른 글
  • 백엔드 개발자 면접 질문 모음 (답변 없음)
  • 백엔드 개발자 기술 면접 정리 - 기타 기술 스택
  • 백엔드 개발자 기술 면접 정리 - 네트워크(Web, HTTP, Network)
  • 백엔드 개발자 기술 면접 정리 - Spring, JPA
HSRyuuu
HSRyuuu
Web Backend Developer happyhsryu
HSRyuuu
HS_dev_log
HSRyuuu
전체
오늘
어제
  • 전체 글 보기 (231)
    • Java (24)
    • Spring (25)
    • JPA & QueryDSL (13)
    • Database (17)
    • 자료구조 & 알고리즘 (30)
    • DevOps (10)
    • [ Computer Science ] (47)
      • Web & Network (14)
      • 프로그래밍 이론 (11)
      • 운영체제 (3)
      • 데이터베이스 이론 (5)
      • Linux 리눅스 (7)
    • [ Frontend ] (17)
      • Vue.js & Nuxt.js (9)
      • JSP_Thymeleaf (7)
    • [ 기타 ] (48)
      • 오픈소스 라이브러리 (5)
      • 코딩테스트 (13)
      • Trouble Shooting (7)
      • Tech Interview (6)
      • Book Review (9)
      • 끄적끄적... (6)
      • 개인 프로젝트 (2)

블로그 메뉴

  • 홈
  • 태그
  • github

공지사항

  • GitHub
  • 공부한 내용을 정리하고 기록하는 블로그 입니다.

인기 글

태그

  • web
  • Redisson
  • MySQL
  • vue3
  • Database
  • 백엔드기술면접
  • 개발자
  • cleancode
  • mybatis
  • 클린코드
  • SpringBoot
  • 트랜잭션
  • 제로베이스
  • 리눅스
  • Linux
  • 자료구조
  • Nuxt3
  • Redis
  • 백엔드스쿨
  • TechInterview
  • Java
  • 백준
  • 기술면접
  • 백엔드
  • 백엔드공부
  • springsecurity
  • JPA
  • HTTP
  • SQL
  • Spring

최근 댓글

최근 글

hELLO · Designed By 정상우.
HSRyuuu
백엔드 개발자 기술 면접 정리 - 운영체제(CS)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.