운영체제 면접 정리

아이작·2022년 1월 3일
0

CS 공부

목록 보기
3/10

핵심 내용 정리

1. 멀티프로세스 vs 멀티쓰레드

  • 메모리 관리!: 멀티프로세스는 프로세스 fork를 통해 하나 더 만들고, 멀티쓰레드는 내부에서 쓰레드를 1개 더 만드는 것의 차이.
    잡아먹는 메모리 차이가 크다.
  • 각각의 장단점이 존재한다.
  • context-swiching 관련 속도(캐시 히트), 동기화 문제

2. 스택메모리 vs 힙메모리

스택메모리: 함수가 종료되고 돌아갈 메모리주소, 함수의 지역변수 저장. 높은곳에서 낮은곳으로 쌓아 올린다.
힙메모리: 개발자(사용자)의 동적 할당 영역, 런타임시에 적용되어 예측 불가. 낮은곳에서 높은곳으로 내려간다. 선입선출

3. 동기 vs 비동기, blocking/non-blocking

동기/비동기: (순서와 결과의 관점): 요청에 대한 응답을 바로 처리해야하는가?/ 나중에 처리해도 되는가?
blocking/non-blocking : (쓰레드 제어의 관점): 요청에 대한 응답을 기다리는동안 가만히 있는가?/ 다른일을 하는가?

데드락 발생 조건 4가지

-----------특성---------------
1. 상호배제 - Mutual exclusion- 하나의 자원에 하나의 프로세스(쓰레드)만 접근 가능하다. 
2. 비선점- 자원을 갖고 있는 프로세스에게서 뺏을 수 없다.

-----------상황------------
3. 점유 대기 - 서로가 원하는 자원을 소유하면서, 상대가 자원을 내놓기를 대기하는 상태 
4. 순환대기 - 모든 프로세스가 자원을 소유하면서, 상대가 자원을 내놓기를 대기하는 상태가 원형으로 이루어진 상황 

LRU 캐시

  • LRU 알고리즘? least Recently used 최근에 가장 덜 참조된 것을 교체하는 paging 알고리즘.

캐시메모리내에서 최근에 가장 덜 참조된 것을 새로운 것과 교체한다!

자료구조로 구현 --> 더블 링크드 리스트(순서를 저장) with 해시테이블(접근,검색할때 사용)
해시테이블을 통해 해당 데이터가 캐시(링크드 리스트)에 있는가 확인
있으면 링크드 리스트 접근해서, 해당 데이터 삭제하고 head에 새로 삽입
없으면, 링크드 리스트 head에 삽입

paging vs segmentation

페이징: 논리 메모리를 동일한 크기의 '페이지' 블록 단위로 나누어, 물리 메모리에 배치.
물리 메모리에 비연속적으로 배치 가능 --> 외부 단편화 문제 해결. but 연결 관계를 파악해야 하기에, mapping table 필요하다.

단점: 내부 단편화(해결 못함), 페이지 테이블(mapping table)--> 메모리 용량 크다. --> 여러 가지 해결책 존재

  • segmentation with paging:
    페이징과 세그멘테이션 혼합 기법 --> 코드영역, 데이터영역(read/write), 데이터영역(read-only)으로 분할된 것을 페이지로 나눈다.
    세그멘테이션 테이블(3분할) 참조 --> 페이지테이블 참조

프로세스간 통신 IPC

  1. 파일 주고 받기 : 단방향(일방통행) 통신
  2. 전역변수 flag : 단방향, 동기화 불가능

---------연결-------------
3. 파이프: 단방향 통신, 동기화 가능
4. 소켓: 양방향, 동기화 가능
5. 메세지 map
6. shared memory: 물리 메모리 영역에 shared memory 영역 존재, 각 프로세스마다 이 영역을 가르키는 포인터 존재.

0개의 댓글