[운영체제] 기술면접 준비

chxxrin·2024년 5월 17일
0

운영체제

목록 보기
1/1

운영체제 기술면접 준비

  • 운영체제 : 하드웨어를 관리하고, 응용 프로그램과 하드웨어 사이에서 인터페이스 역할, 시스템 동작을 제어하는 시스템 소프트웨어

  • 프로세스 관리 : 프로세스, 스레드, 스케줄링, 동기하, IPC 통신

  • 메모리 관리 : 가상메모리, 파일 시스템

  • 네트워킹 : TCP/IP, 기타 프로토콜

  • 사용자 관리 : 접근권한 관리, 계정 관리

  • IO 관리

  • 파일 관리

  • 프로세스 : 프로그램을 메모리 상에서 실행중인 작업
    스레드 : 프로세스 안에서 실행되는 여러 흐름 단위
    프로세스 주소공간 : code(코드 구성하는 메모리 영역), data(전역변수, 정적변수), heap(동적할당), stack(지역변수, 매개변수, 리턴값, 임시메모리 영역)
    스레드는 stack 만 따로 할당 받고 나머지 영역은 공유

    프로세스는 자신만의 고유 공간과 자원을 할당받지만 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용

  • 멀티프로세스 : 하나의 컴퓨터에 여러 CPU를 장착하고 하나 이상의 프로세스를 동시에 병렬 처리
    메모리 침범 문제를 OS 차원에서 해결, 작업량이 많을 수록 오버헤드 발생, context switching으로 성능 저하

  • 멀티스레드 : 하나의 응용 프로그램에서 여러 스레드를 구성해서 각 스레드가 하나의 작업을 처리하는 것
    스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하게 함
    독립적인 프로세스에 비해 공유 메모리 만큼의 자원 손실이 감소, 전역변수와 정적변수 자료 공유 가능
    하나의 스레드가 데이터 공간을 망가뜨리면 모든 스레드가 작동 불능이 됨

  • 프로그램이 CPU에 의해 실행되어 프로세스가 생성되고 메모리에 프로세스 주소 공간이 할당됨
    코드 부분, 데이터 부분, 스택 부분으로 나눔

  • 인터럽트 : 프로그램을 실행하는 중에 즉시 중단하고, 발생된 상황을 우선 처리한 후 실행 중이던 작업으로 복귀
    더 중요한 일(입출력, 우선순위 연산)

  • 하드웨어 인터럽트 : 입출력 장치, 타이밍 장치, 전원 등 외부적인 요인으로 발생
    전원 이상, 기계 착오, 외부 신호, 입출력

  • 소프트웨어 인터럽트(트랩) : 0으로 나누는 연산, 오버플로우, 예외처리

  • 시스템콜 : 프로세스 생성, 제어를 위한 시스템콜 fork exec wait

  • 프로세스 관리 : CPU가 프로세스 여러개를 실행할 때, CPU 스케줄링으로 관리하는 것

  • PCB : 프로세스 메타데이터(pid, state, priority, register, 등)를 저장하는 곳
    context switching 이 발생하고 다시 원래의 프로세스로 돌아올 때, 이미 수행 중이던 내용을 저장해두기 위해 필요
    linked list 형식으로 관리 됨. 삽입 삭제가 용이, 프로세스 완료 시 제거

  • IPC 프로세스간 통신, 커널이 제공하는 IPC 설비로 통신함
    PIPE : 두개의 프로세스를 연결함, 간단하게 사용, 데이터 흐름 형식, 전이중 통신할 때는 2개 만들어야 함
    message queue : 사용할 데이터에 번호를 붙이면서 여러 프로세스가 동시에 데이터 다룸
    shared memory : 프로세스간 메모리 영역을 공유해서 사용할 수 있도록 허용, 가장 빠름

  • 스케줄링 : CPU를 잘 사용하기 위해 프로세스 잘 배정하기
    FCFS : first come first served
    SJF : shortest job first
    priority scheduling : starvation 생길 수 있음. aging 기법
    round robin : time quantum
    multilevel queue : 작업을 여러 큐에 나눠서 이용함, time quantum 설정, 우선 순위가 높은 큐는 time 작게, 낮으면 크게
    multilevel feedback queue : timequantum 다 채우면 밑으로 내려가고, 못 채우면 원래 큐에 남음

  • response time : 작업이 처음 실행되기까지 걸린 시간
    turnaround time : 실행시간과 대기 시간을 모두 합한 시간

  • 데드락 : 프로세스가 자원을 얻지 못해서 다음 처리를 하지 못하는 상태, 한정된 자원을 여러 프로세스가 요구할 때 발생
    발생 조건 : 상호 배제, 점유 대기, 비선점, 순환 대기

  • 데드락 예방
    상호 배제 부정 : 여러 프로세스가 공유 자원 사용 - infeasible
    점유대기 부정 : 프로세스 실행 전 모든 자원 할당 - side effect
    비선점 부정 : 점유 중인 프로세스가 다른 자원을 요구할 때 자원 반납 - infeasible
    순환대기 부정 : 자원에 고유번호 할당, 순서대로 자원 요구 - side effect

  • 데드락 회피
    뱅커스 알고리즘 : 프로세스가 자원을 요구할 때, 시스템은 자원을 할당한 후에도 안정 상태로 남아있는지 검사해서 회피

  • 데드락 탐지 : 뱅커스 알고리즘

  • 데드락 회복 : 프로세스 종료, 자원 선점

  • 세마포어 vs 뮤텍스 : mutex는 진입하려는 프로세스가 소유한 key를 기반으로 하고, 세마포어는 signal 메커니즘으로 함

  • 뮤텍스 알고리즘
    데커 알고리즘 : flag와 turn변수로 임계 구역에 들어갈 스레드를 결정,
    turn은 임계구역에 들어가는 사람, flag은 bool 타입임
    피터슨 알고리즘 : 데커 알고리즘과 비슷한데 turn을 다른 사람한테 양보하고 다른 사람의 flag값이 true 면 while loop

  • 연속 메모리 관리 : 프로그램 전체가 하나의 큰 공간에 연속적으로 할당
    고정 분할 기법 : 고정된 파티션으로 주기억장치를 분할 - 내부 단편화 발생
    동적 분할 기법 : 파티션들이 동적 생성되어 자신의 크기와 같은 파티션에 적재 - 외부 단편화 발생

  • 불연속 메모리 관리 : 프로그램 일부가 서로 다른 주소 공간에 할당
    페이징 : 각 프로세스가 프레임들과 같은 길이를 가진 균등 페이지로 나뉨. 외부 단편화 x, 소량 내부 단편화 존재
    세그멘테이션 : 여러 세그먼트로 나눔. 내부단편화x, 동적 분할로 오버헤드 감소, 외부 단편화 존재, 메모리 사용 효율 개선
    가상 메모리 페이징 : 프로세스 페이지 전부를 로드하지 않고 필요하면 나중에 자동으로 불러옴. 오버헤드 발생, 외부단편화 x
    가상 메모리 세그멘테이션 : 필요하지 않은 세그먼트 로드하지 않고 필요하면 불러옴. 오버헤드 발생, 내부단편화 x

  • 페이지 교체 : 페이지 부재 -> 새로운 페이지 할당 -> 어떤 것을 교체할지 결정
    FIFO : 메모리에 먼저 올라온 페이지 먼저 내보냄
    OPT : 앞으로 가장 사용하지 않을 페이지 내보냄, 수행하기 어려운 알고리즘
    LRU : 최근에 사용하지 않은 페이지 내보냄, 구현 가능한 것중 제일 좋은 방법

  • 캐시 지역성 원리 : 프로세서 가까이에 위치하면서 빈번하게 사용되는 데이터를 놔두는 장소
    그 적중률을 높이기 위해서 지역성 원리 사용
    시간 지역성 : 최근 참조된 주소를 곧 참조하게 될거라는 것, 공간 지역성 : 실제 프로그램이 참조된 주소와 인접한 주소가 참조됨
    캐시에 목적 데이터를 저장해놓고 바로 접근해서 출력할 수 있게 함

0개의 댓글