대학교 운영체제 수업때 배웠던 것들을 복습하기 위해 정리하였다. 면접에서도 자주 물어보는 것들이니 꼼꼼하고 체계적으로 써내려갈 것이다.
운영체제란?
- 시스템의 자원과 동작을 관리하는 소프트웨어
- 프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리
자세한 사항
메모리 구조
프로세스, 스레드
CPU 스케줄러
가상 메모리
Deadlock(데드락)
실행파일의 생성 과정, 프로그램 실행 과정
캐시 메모리
- 운영체제란 : 시스템의 자원과 동작을 관리하는 소프트웨어이다. 프로세스, 저장장치, 네트워킹, 사용자, 하드웨어를 관리한다.
- 실행파일 생성 과정 : 전처리기 → 컴파일러 → 어셈블러 → 링커
- 프로그램 실행과정 : 메모리로 로딩 → CPU로 Fetch → CPU 제어장치에서 Decode → CPU ALU에서 Execution(실행)
- 명령어사이클 : CPU가 한 개의 명령어를 실행하는 데 필요한 전체 과정, 즉 Fetch, Decode, Execution(실행) 이 세가지 단계
- 캐시란? : 메인 메모리에서 자주 사용하는 프로그램과 데이터를 저장해두어 속도를 빠르게 한다.
- 캐시라인 : 캐시에 데이터를 저장할 때 특정 자료구조를 사용하여 묶음으로 저장 - 공간 지역성 활용하여 성능 향상 (Direct Mapping, Full Associative Mapping, Set Associative Mapping)
- 데이터 지역성 : 한번 사용한 데이터를 다시 참조할 가능성이 높다(시간 지역성(다시 한번 재참조 가능), 공간 지역성 - 근처 참조 가능)
- 캐시 히트 : 캐시에 해당 데이터가 있음
- 캐시 미스 : 캐시에 해당 데이터가 없을 때
- 메모리구조 : 메모리 공간 종류는 4가지 : Code, Data, Heap, Stack
- 전역변수와 정적변수의 차이 : 전역변수와 정적변수는 lifetime은 동일하지만 전역변수는 해당 프로그램(실행파일 기준)의 어느 함수, 어느 파일에서도 접근이 가능한 반면 정적변수는 변수가 선언된 파일이나 함수내에서만 접근이 가능하다.
- Heap, Stack 비교 : 스택은 정적 메모리를 힙은 동적 메모리가 저장되는 영역입니다. 스택은 함수,지역변수,매개변수가 저장되며 LIFO 방식으로 관리되지만 힙 영역은 전역 변수를 다루며 사용자가 직접 관리해야 하는 메모리 영역입니다.
- 가시성(visibility)은 멀티스레드 환경에서 모두 같은 상태의 공유자원을 바라보는 것 - volatile로 캐시 사용하지 않고 메인메모리에서 가져옴
- 원자성(atomicity)은 멀티스레드들의 수정이 공유자원에 모두 반영되는 상태, 여러개의 스레드에서 동시에 업데이트를 할 경우 모두 반영 - 동기화로 해결, synchronized라는 키워드를 사용한다.
- 유효주소, 주소지정방식 : 유효주소는 데이터가 저장된 메모리의 주소, 주소지정방식은 명령어가 처리해야하는 데이터의 유효주소를 어떻게 저장하는가, 직접주소 지정방식 - 명령어의 주소값에 바로 유효주소값 저장, 간접주소 지정방식 - 명령어의 주소값에 유효주소가 저장이 된 것의 주소를 저장
- 메모리 할당 알고리즘 : 메모리에 프로세스를 저장할 때 세그먼테이션 기법으로 할당을 하는데 어떻게 할지
- First fit : 처음 할당 가능한 곳
- Best fit : 할당 가능한 곳 중 가장 작은곳에 할당
- Worst fit : 할당 가능한 곳 중 가장 큰곳에 할당