[기술면접] 운영체제
process
정의 : 메모리에 적재되어 실행 중인 프로그램의 인스턴스 특징 :
- 독립적인 메모리 공간을 가진다.
- Code
- Data
- Stack : Stack은 메모리 주소가 높은 영역부터 채워짐.
- Heap : Heap은 메모리 주소가 낮은 영역부터 채워짐
- 프로세스는 최소 한개의 쓰레드를 가진다.
semaphor
정의 : 공유되는 자원을 하나의 프로세스
에만 접근하도록 사용 권한을 제한하는 매커니즘.
연산 : P연산 = wait, V 연산 = signal
목적 : dead lock을 피하기 위함
deadlock
프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태
thread
정의 : 프로세스 내에서 실행되는 여러 흐름의 단위 특징 :
- 생성시 stack과 register만 새로 할당한다.
- Code, data, heap 영역은 공유한다.
mutex
정의 :공유되는 자원을 하나의 쓰레드
에만 접근하도록 사용 권한을 제한하는 매커니즘. mutex = binary semaphor
연산 : lock과 unlock이 있다
목적 : critical section을 가진 Thread의 상호 배제
race condition
다수의 쓰레드가 같은 자원에 접근할 때 동기화 과정이 적용되지 않는 것
critical section
공유되는 자원이 독점됨을 보장하는 영역
condition variable
lock 되어 있는 mutex 객체를 특정 조건에서 unlock 시키는 매커니즘
context switch
정의 : 상태를 보관하고 이전 프로세스 상태를 복구시키는 작업 프로세스 :
- 프로세스 간 공유하는 메모리가 없기 때문에, CPU 레지스터 교체뿐만 아니라 캐시 메모리 초기화까지 진행되어 오버헤드가 크다
멀티프로세스
정의 : 하나의 응용을 여러 프로세스로 나누어 각 프로세스가 하나의 작업을 수행 장점 : 하나의 프로세스에서의 에러는 다른 프로세스에 영향을 주지 않음 단점 : context switching 오버헤드
프로세스 스케줄링
정의 : CPU가 메모리에 적재된 여러 개의 프로세스를 번갈아서 실행하면서, CPU 할당 수서 및 방법을 결정 짓는 것 상태 :
- Ready : 우선순위가 더 높은 프로세스가 실행되면 ready 상태로
- Running
- Blocked : 스케줄러에 의해 선택이 되지 않은 프로세스
멀티쓰레드
정의 : 하나의 응용을 여러 쓰레드로 나누어 각 쓰레드가 하나의 작업을 수행 장점 :
- 시스템 자원 소모 감소(프로세스 생성 및 자원 할당을 위한 시스템 콜이 줄어든다)
- 쓰레드 간 데이터를 주고 받는 것이 상대적으로 간단하다.
- context switching 비용이 프로세스보다 적다. 단점 :
- 단일 프로시스 시스템에서는 효과를 기대할 수 없다.
- race condition 문제가 발생한다.
- 하나의 쓰레드에 문제가 발생하면 전체 프로세스가 영향을 받는다.
선점형 OS, 비선점형 OS
의미상 선점형보다 강탈형, 비강탈형이라고 기억하는 것이 더 쉽다.
선점형 : 하나의 프로세스가 다른 프로세스 대신에 CPU를 차지할 수 있다.
- Round Robin : 시간 단위가 설정되어 각 시간 동안 프로세스를 실행하고 다음 프로세스로 전환 비선점형 : 하나의 프로세스가 끝나지 않으면 다른 프로세스는 CPU를 사용할 수 없다.
- FIFO
- SJF
- HRN : 우선순위와 대기 시간에 따라 작업 할당
병렬 처리
여러 작업을 동시에 처리할 수 있게 하는 병렬 처리 시스템. 컴퓨터를 병렬 연결 또는 CPU를 병렬 연결
분산 처리
분산된 데이터 저장장소 및 처리기들을 네트워크로 연결하여 서로 통신을 하면서 작업을 수행하는 것. 여러 컴퓨터가 작업을 나누어서 처리한다. master가 worker에 작업을 할당하는 것이라고 생각하면 된다.
크롬 탭이 프로세스인지 쓰레드인가요
크롬은 탭마다 PID를 가지고 있으니 Process이며 각 Tab마다 랜더링 정보나 기타 데이터를 따로 관리한다고 한다. 그로인해 메모리를 많이 잡아먹기도 하지만 하나의 Tab에 오류가 생겼다고 모든 Tab에 영향을 끼치진 않는다.
CPU GPU
GPU (Graphics Processing Unit), CPU (Central Processing Unit) CPU는 컴퓨터의 두뇌를 담당합니다. 다양한 환경에서의 작업을 빠르게 수행하기 위해 ALU의 구조가 복잡하고 명령어 하나로 처리할 수 있는 기능도 많으며 각종 제어 처리를 위한 부분이 많습니다. 반면 GPU는 특화된 연산을 빠른 속도로 처리하기 위해 단순한 ALU를 여러개 갖고 있는 구조로 이루어져 있습니졌다. 이 때문에 GPU 단독으로는 아무것도 처리할 수 없으며 GPU를 제어하는 것은 여전히 CPU의 역할입니다.
GPU는 비디오, 즉 픽셀로 이루어진 영상을 처리하는 용도로 탄생했습니다. 이때문에 CPU에 비해 반복적이고 비슷한, 대량의 연산을 수행하며 이를 병렬적으로(Parallel) 나누어 작업하기 때문에 CPU에 비해 속도가 대단히 빠릅니다. 영상, 렌더링을 비롯한 그래픽 작업의 경우 픽셀 하나하나에 대해 연산을 하기 때문에 연산능력이 비교적 떨어지는 CPU가 GPU로 데이터를 보내 재빠르게 처리합니다.